Best practice per la funzione Getter

Aug 16 2020

Ho un array che desidero visualizzare su un sito web, unit public x[31]. Tramite web3.js, posso creare 32 chiamate diverse da x [0] a x [31]. In alternativa, potrei aggiungere una funzione di visualizzazione getter al mio contratto di solidità che presenta solo l'array

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

Con questa funzione incorporata nel mio contratto di solidità, avrei solo bisogno di chiamarlo una volta nel mio file javascript e quindi avere l'array. Quindi, posso spingere più lavoro su javascript o solidità. Uno dei metodi è più efficiente / elegante?

Risposte

1 LauriPeltonen Aug 16 2020 at 02:28

Dato che hai a che fare con le viewfunzioni, in ogni caso, non c'è molta differenza. I dati vengono recuperati direttamente dal nodo che utilizzi e non c'è una vera transazione sulla blockchain. Pertanto stai utilizzando più del calcolo del tuo browser (JavaScript) o del tuo nodo. Inoltre queste chiamate non costano benzina.

Dal punto di vista architettonico prenderei semplicemente in considerazione le tue esigenze: se probabilmente non hai bisogno di recuperare molte voci potrebbe essere più facile recuperarle singolarmente. D'altra parte probabilmente stiamo parlando di quantità di dati molto insignificanti, indipendentemente dal modo in cui lo fai, quindi non fa davvero alcuna differenza in termini di velocità o requisiti di memoria. Inoltre non penso che uno dei due sia più elegante dell'altro, considera solo le tue esigenze.