Лучшие практики для функции получения
У меня есть массив, который я хочу отобразить на веб-сайте 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, либо солиднее. Какой из методов более эффективен / элегантен?
Ответы
Поскольку вы имеете дело с view
функциями, в любом случае особой разницы нет. Данные извлекаются непосредственно из используемого вами узла, и в цепочке блоков нет реальных транзакций. Следовательно, вы либо используете больше вычислений вашего браузера (JavaScript), либо вычислений вашего узла. Также эти звонки бесплатны.
С архитектурной точки зрения я бы просто рассмотрел ваши потребности: если вам, вероятно, не нужно извлекать много записей, может быть проще извлекать их по отдельности. С другой стороны, мы, вероятно, говорим об очень незначительных объемах данных, независимо от того, каким образом вы это делаете, поэтому на самом деле это не имеет никакого реального значения с точки зрения требований к скорости или памяти. Я также не думаю, что один из вариантов более элегантен, чем другой - просто примите во внимание свои потребности.