Ethereum
Ethereum は、パトリシア マークル ツリーを利用して データを保存しています。
ストレージ システムは、ワールド ステート ツリー (1 つだけ、ブロックごとに変更可能)、ストレージ ツリー (アカウントごと、ブロックごとに変更可能)、トランザクション ツリー (ブロックごとに新規)、およびレシート ツリー (ブロックごとに新規) の 4 つのツリーで構成されています。
Ethereum がデータを保存する方法を視覚的に表す図を以下に示します。
Aptos
- ツリー状の永続的なグローバル ストレージに対して読み取りと書き込みを行うプログラムを移動。
struct GlobalStorage {
resources: Map<(address, ResourceType), ResourceValue>
modules: Map<(address, ModuleName), ModuleBytecode>
}
- リソースの保存場所
- マップ内の各エントリは、アカウントのアドレスと ResourceType の組み合わせによって識別されます。
- そのリソースの値または詳細 (ResourceValue) につながる一意のラベルとして機能。
- モジュールの保存場所
- スマート コントラクト (モジュール) コードを保存するためのもの。
- 各エントリは、アカウントのアドレスとそのアカウント内に保存されているモジュールの名前の組み合わせによって識別される。
- 値は、モジュールのバイトコード。
- グローバル ストレージはフォレストであり、各ツリーはブロックチェーン上のアカウントのデータを表す。
- 各ツリーには固有の開始点があり、フォレスト内のすべてのツリーが独自の成長場所を持っている。
- 各ツリーは、そのアカウントに関連する特定のデータ、つまりモジュールとリソースに「分岐」。