Práticas recomendadas para função getter
Tenho uma matriz que desejo exibir em um site unit public x[31]
,. Via web3.js, posso criar 32 chamadas diferentes para x [0] a x [31]. Como alternativa, eu poderia adicionar uma função de visualização getter ao meu contrato de solidez que apenas apresenta a matriz
function showX()
public
view
returns (uint[32] memory Xout)
{
Xout= x;
}
Com essa função embutida em meu contrato de solidez, eu só precisaria chamá-la uma vez em meu arquivo javascript e, em seguida, ter o array. Assim, posso colocar mais trabalho no javascript ou solidez. Qualquer um dos métodos é mais eficiente / elegante?
Respostas
Como você está lidando com view
funções em qualquer caso, não há muita diferença. Os dados são recuperados diretamente do nó que você usa e não há nenhuma transação real para o blockchain. Portanto, você está utilizando mais a computação do seu navegador (JavaScript) ou a computação do seu nó. Além disso, essas chamadas não custam gás.
Do ponto de vista da arquitetura, eu simplesmente consideraria suas necessidades: se você provavelmente não precisa recuperar muitas entradas, pode ser mais fácil recuperá-las individualmente. Por outro lado, provavelmente estamos falando de quantidades de dados muito insignificantes, não importa como você faça isso, então isso realmente não faz nenhuma diferença real em termos de requisitos de velocidade ou memória. Eu também não acho que nenhuma das formas seja mais elegante do que a outra - considere as suas necessidades.