一般機能

Bubblegumツリーの作成

はじめに

圧縮NFTのデータはトランザクション内に保存され、オンチェーンアカウントには保存されませんが、マークルツリーとその設定を追跡するためのオンチェーンアカウントが必要です。そのため、圧縮NFTのミントを開始する前に、2つのアカウントを作成する必要があります:

  • マークルツリーアカウント。このアカウントは、あらゆる種類のデータの真正性を検証するために使用できる一般的なマークルツリーを保持します。これは、Solanaによって作成・維持されているアカウント圧縮プログラムによって所有されています。私たちの場合、これを使用して圧縮NFTの真正性を検証します。
  • ツリー設定アカウント。この2番目のアカウントは、マークルツリーアカウントのアドレスから派生したPDAです。これにより、圧縮NFTに特有のマークルツリーの追加設定(例:ツリー作成者、ミント済みcNFTの数など)を保存できます。

これらの2つのアカウントがあれば、圧縮NFTのミントを開始するために必要なすべてが揃います。関連するツリー設定アカウントを持つマークルツリーアカウントをBubblegumツリーと呼びます。

Bubblegumツリーの作成

これらのアカウントの両方を作成してBubblegumツリーを作成する方法を見てみましょう。幸いなことに、私たちのライブラリはすべてを処理するツリー作成操作を提供することで、このプロセスを簡単にしています。この操作は、さまざまなパラメータ(そのほとんどがオプション)を受け入れ、Bubblegumツリーを私たちのニーズに合わせてカスタマイズできます。最も重要なものは次のとおりです:

  • マークルツリー: マークルツリーアカウントの作成に使用される新しく生成された署名者。マークルツリーアカウントは、このアドレスでアクセス可能になります。
  • ツリー作成者: Bubblegumツリーを管理し、圧縮NFTをミントできるアカウントのアドレス。
  • 最大深度最大バッファサイズ: 最大深度パラメータは、マークルツリーが保持できるリーフの最大数、つまり圧縮NFTを計算するために使用されます。この最大値は2^maxDepthで計算されます。最大バッファサイズパラメータは、マークルツリーの最小同時実行制限を示します。言い換えると、ツリーで並行して発生できる変更の数を定義します。これらの2つのパラメータは任意に選択することはできず、以下の表に表示されている事前定義された値のセットから選択する必要があります。

以下のインタラクティブ計算機を使用して、ツリー作成コストを見積もることができます。必要なcNFTの数を入力するか、詳細モードを使用してすべてのツリーパラメータを調整し、コスト、証明サイズ、ツリー構造への影響を確認してください。

Closest tree depth: 20 (holds up to 1,048,576 cNFTs)

Bubblegum requires a minimum canopy depth of 3 for this tree size. Only 17 proof accounts fit in a single transaction.

Minimum cost
0.3122 SOL
Canopy 3 (Bubblegum minimum)
Canopy depth3
Proof size17 nodes (544 bytes)
Cost per cNFT0.00000030 SOL
Balanced
7.61 SOL
Moderate canopy — good composability
Canopy depth14
Proof size6 nodes (192 bytes)
Cost per cNFT0.00000725 SOL
Maximum composability
58.69 SOL
Full canopy — smallest proof size
Canopy depth17
Proof size3 nodes (96 bytes)
Cost per cNFT0.00005597 SOL
Merkle tree visualization showing 20 levels with 14 canopy levels stored on-chainShowing 7 of 20 levels
Canopy (on-chain)Proof nodesLeaves (cNFTs)

以下は、Solanaエコシステム内での互換性のための推奨ツリー設定です。

cNFTの数ツリーの深度キャノピーの深度同時実行バッファツリーのコストcNFTあたりのコスト
16,384148640.33580.00002550
65,5361610640.70690.00001579
262,1441812642.10420.00001303
1,048,576201310248.50120.00001311
Previous
Rust