Lesson 3 Chapter11 全ゾンビアイテムの表示2
Storageのコストは高い
変数をStorageとしてデータを書き込んだり、変更するたびに、それがすべてブロックチェーンに永久に書き込まれるからだ。
世界中の何千個というノードがすべてそのデータをハードドライブに書き込む必要があり、そのデータ容量はブロックチェーンが成長すればするほど大きくなる。
だからどうしてもStorageのコストは高くなる。
ループによるコスト
Solidityでは(external view関数の場合は)大きなデータセットをループで処理する方がstorageを使うよりもview関数はガスを必要としないため低コストとなる。
memory内で配列を宣言してループ処理する。
さらに外部から呼び出されるview関数の場合は、コストはかからない。
memory内の配列の宣言方法
例
// 長さ3の新しい配列をメモリ内にインスタンス化する
// 値を追加しよう
values.push(1);
values.push(2);
values.push(3);
// 配列を返す
return values;
}
そのため、ブロックチェーンに保存されることはない。
ブロックチェーンに保存されないため、コストもかからない。
関数内で宣言された変数はデフォルトでmemoryになる。
関数の実行が完了すれば消えてしまう。(ローカル変数が関数外で使用できないのと同じイメージ)
尚、memoryの配列は必ずサイズを指定して作成する必要がある。
memoryの配列は必ず長さを指定して作成する必要があります(この例では3)。
参考
Solidity Assembly入門 ~ 配列について storage/memory ~
prev
-
クリプトゾンビLesson 3 Chapter10 全ゾンビアイテムの表示
Lesson 3 Chapter10 全ゾンビアイテムの表示 手持ちのゾンビ軍団を全て表示できるメソッド view関数を外部から呼び出す場合、ガスは一切かからない。 (view 関数がブロックチェーン ...
next
-
クリプトゾンビLesson 3 Chapter12 For ループ
Lesson 3 Chapter12 For ループ Array vs Mapping 使用目的は両者とも配列、もしくは Key Value な形で "情報を格納する" ということなので、似ていますが ...