Meilleures pratiques pour la fonction Getter
J'ai un tableau que je souhaite afficher sur un site Web unit public x[31]
,. Via web3.js, je peux créer 32 appels différents vers x [0] à x [31]. Alternativement, je pourrais ajouter une fonction de vue getter à mon contrat de solidité qui ne présente que le tableau
function showX()
public
view
returns (uint[32] memory Xout)
{
Xout= x;
}
Avec cette fonction intégrée à mon contrat de solidité, j'aurais juste besoin de l'appeler une fois dans mon fichier javascript, puis d'avoir le tableau. Ainsi, je peux soit pousser plus de travail sur javascript, soit solidité. L'une ou l'autre méthode est-elle plus efficace / élégante?
Réponses
Comme vous avez affaire à des view
fonctions dans tous les cas, il n'y a pas beaucoup de différence. Les données sont récupérées directement à partir du nœud que vous utilisez et il n'y a pas de véritable transaction vers la blockchain. Par conséquent, vous utilisez davantage le calcul de votre navigateur (JavaScript) ou celui de votre nœud. De plus, ces appels ne coûtent pas d'essence.
D'un point de vue architectural, je considérerais simplement vos besoins: si vous n'avez probablement pas besoin de récupérer de nombreuses entrées, il peut être plus facile de les récupérer individuellement. D'un autre côté, nous parlons probablement de quantités de données très insignifiantes, quelle que soit la manière dont vous le faites, donc cela ne fait pas vraiment de différence en termes de vitesse ou de besoins en mémoire. Je ne pense pas non plus que l'une ou l'autre manière soit plus élégante que l'autre - considérez simplement vos besoins.