ゲッター機能のベストプラクティス

Aug 16 2020

Webサイトに表示したい配列がありunit public x[31]ます。web3.jsを介して、x [0]からx [31]への32の異なる呼び出しを作成できます。または、配列を表示するだけのソリディティコントラクトにゲッタービュー関数を追加することもできます

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

この関数がSolidityコントラクトに組み込まれているので、javascriptファイルでこれを1回呼び出してから、配列を作成する必要があります。したがって、JavaScriptにさらに多くの作業をプッシュするか、堅牢性を高めることができます。どちらの方法もより効率的/エレガントですか?

回答

1 LauriPeltonen Aug 16 2020 at 02:28

viewいずれにせよ関数を扱っているので、大きな違いはありません。データは使用するノードから直接取得され、ブロックチェーンへの実際のトランザクションはありません。したがって、ブラウザのコンピューティング(JavaScript)またはノードのコンピューティングをより多く利用していることになります。また、これらの通話にはガス代はかかりません。

アーキテクチャの観点から、私は単にあなたのニーズを考慮します:おそらく多くのエントリを取得する必要がない場合は、それらを個別に取得する方が簡単かもしれません。一方、どちらの方法を使用しても、データの量はごくわずかであるため、速度やメモリ要件の点で実際の違いはありません。また、どちらの方法も他の方法よりもエレガントだとは思いません。ニーズを考慮してください。