Práticas recomendadas para função getter

Aug 16 2020

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

1 LauriPeltonen Aug 16 2020 at 02:28

Como você está lidando com viewfunçõ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.