Mejores prácticas para la función Getter

Aug 16 2020

Tengo una matriz que deseo mostrar en un sitio web unit public x[31]. A través de web3.js, puedo crear 32 llamadas diferentes ax [0] a x [31]. Alternativamente, podría agregar una función de vista de captador a mi contrato de solidez que solo presenta la matriz

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

Con esta función incorporada en mi contrato de solidez, solo necesitaría llamar a esto una vez en mi archivo javascript y luego tener la matriz. Por lo tanto, puedo impulsar más trabajo en javascript o solidez. ¿Es alguno de los métodos más eficiente / elegante?

Respuestas

1 LauriPeltonen Aug 16 2020 at 02:28

Como se trata de viewfunciones, en cualquier caso, no hay mucha diferencia. Los datos se recuperan directamente del nodo que usa y no hay una transacción real en la cadena de bloques. Por lo tanto, está utilizando más la informática de su navegador (JavaScript) o la informática de su nodo. Además, estas llamadas no cuestan gasolina.

Desde un punto de vista arquitectónico, simplemente consideraría sus necesidades: si probablemente no necesita recuperar muchas entradas, puede ser más fácil recuperarlas individualmente. Por otro lado, probablemente estemos hablando de cantidades muy insignificantes de datos, no importa de qué manera lo haga, por lo que realmente no hace ninguna diferencia real en términos de velocidad o requisitos de memoria. Tampoco creo que ninguna de las dos formas sea más elegante que la otra, solo considere sus necesidades.