Лучшие практики для функции получения

Aug 16 2020

У меня есть массив, который я хочу отобразить на веб-сайте unit public x[31]. С помощью web3.js я могу создать 32 различных вызова от x [0] до x [31]. В качестве альтернативы я мог бы добавить функцию просмотра получателя к моему контракту solidity, который просто представляет массив

function showX()
        public
        view
        returns (uint[32] memory Xout)
    {
        Xout= x;
    }

С этой функцией, встроенной в мой контракт Solidity, мне просто нужно было бы вызвать ее один раз в моем файле javascript, а затем получить массив. Таким образом, я могу либо перенести больше работы на javascript, либо солиднее. Какой из методов более эффективен / элегантен?

Ответы

1 LauriPeltonen Aug 16 2020 at 02:28

Поскольку вы имеете дело с viewфункциями, в любом случае особой разницы нет. Данные извлекаются непосредственно из используемого вами узла, и в цепочке блоков нет реальных транзакций. Следовательно, вы либо используете больше вычислений вашего браузера (JavaScript), либо вычислений вашего узла. Также эти звонки бесплатны.

С архитектурной точки зрения я бы просто рассмотрел ваши потребности: если вам, вероятно, не нужно извлекать много записей, может быть проще извлекать их по отдельности. С другой стороны, мы, вероятно, говорим об очень незначительных объемах данных, независимо от того, каким образом вы это делаете, поэтому на самом деле это не имеет никакого реального значения с точки зрения требований к скорости или памяти. Я также не думаю, что один из вариантов более элегантен, чем другой - просто примите во внимание свои потребности.