Best practice per la funzione Getter
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
Dato che hai a che fare con le view
funzioni, 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.