高度
同時マークルツリー
Last updated February 24, 2026
Summary
同時マークルツリーは、圧縮NFTの基盤となるデータ構造を説明します。このページでは、マークルツリーの仕組み、リーフパス、証明、検証、および同じSolanaブロック内での並行書き込みを可能にする同時実行メカニズムについて説明します。
- マークルツリーは、ツリー全体を表す単一のルートを持つハッシュ化されたリーフとしてcNFTデータを保存します
- 証明により、ツリー全体を再ハッシュせずに特定のcNFTの存在を検証できます
- 同時実行メカニズムは、ChangeLogバッファを使用してブロックごとの複数の書き込みを処理します
- 最右端の証明はオンチェーンに保存され、証明データを送信せずにミンティングを可能にします
はじめに
マークルツリーは、各リーフノードが何らかのデータを表すハッシュでラベル付けされたツリーデータ構造です。隣接するリーフは一緒にハッシュ化され、結果として得られるハッシュがそれらのリーフの親であるノードのラベルになります。同じレベルのノードは再び一緒にハッシュ化され、結果として得られるハッシュがそれらのノードの親であるノードのラベルになります。このプロセスは、ルートノードに対して単一のハッシュが作成されるまで続きます。この単一のハッシュは、ツリー全体のデータ整合性を暗号学的に表し、マークルルートと呼ばれます。
ほとんどのマークルツリーは二進ツリーですが、そうである必要はありません。Bubblegum圧縮NFT(cNFT)に使用されるマークルツリーは、私たちの図に示されているように二進ツリーです。
Notes
- ツリー作成時に設定された最大バッファサイズにより、ブロックごとに高速転送できる同時変更の数が決まります。
- バッファサイズが許可する数を超える同時変更が発生した場合、一部のトランザクションは失敗し、再試行が必要です。
- DAS APIから取得した証明は、フェッチと使用の間にツリーが変更された場合、古くなる可能性があります。ChangeLogメカニズムは、同時操作に対してこれを軽減します。
- 最右端の証明の最適化により、新しいリーフは常に最右端の位置に追加されるため、証明データなしでミンティング(追加)が可能です。
Glossary
| 用語 | 定義 |
|---|---|
| マークルツリー | 各ノードがその子のハッシュであり、リーフがcNFTデータを表すバイナリツリー |
| マークルルート | ツリー全体の整合性を表す単一のトップレベルハッシュ |
| リーフパス | リーフノードハッシュとルートに至るすべての中間ノード |
| 証明 | 特定のリーフからルートを再計算するために必要な兄弟ハッシュ |
| ChangeLog | 古い証明を高速転送することで同時書き込みを可能にする最近のツリー変更のバッファ |
| spl-account-compression | オンチェーンの同時マークルツリーを管理するSolanaプログラム |
