autorenew
Solana向け no-std Merkle Tree:ミームトークンのエアドロップとNFT向けの効率的暗号化

Solana向け no-std Merkle Tree:ミームトークンのエアドロップとNFT向けの効率的暗号化

週末に、Solana 開発者の LE◎(Xでは @L0STE_​)が興味深いプロジェクトを共有しました。彼の初めての暗号学への取り組みで、Solana Virtual Machine(SVM)向けにカスタム実装された no-std Merkle tree です。ミームトークン界隈にいるなら、これがエアドロップや NFT ドロップを効率的かつ安全に処理するための大きな一歩になる可能性があります。詳しく見ていきましょう。

用語に不慣れな人のために説明すると、Merkle tree は大量データを素早く効率的に検証するためのデータ構造です。家系図のようなもので、各「親」ノードはその「子」ノード群のハッシュになっています。ブロックチェーン、特に Solana では、Merkle tree は特定のデータ(例えばユーザーがエアドロップの対象かどうか)をリスト全体を公開せずにそのリストに含まれていると証明するのに重要です。これにより計算資源を節約し、プライバシーも保たれます。

LE◎ はこれを X 上で投稿し、@deanmlittle からのアドバイスに触れつつコミュニティからの突っ込み(roasts)を歓迎しました。リポジトリは GitHub で公開されており、no-std 環境—標準ライブラリに依存しない設計—で動作するよう作られています。これは Solana プログラムのようなリソース制約の厳しい環境に最適です。

この実装の特徴は何でしょうか?ゼロ依存(zero-dependency)で、コンパイル時に固定サイズを指定できる const generics を使用し、SHA-256 と Keccak-256 の両方のハッシュをサポートしています。クライアント側ではツリーを構築して簡単に証明(proof)を生成でき、オンチェーンでの検証はステートレスかつ非常に効率的で、計算量は O(log n) です。ミームトークン作成者にとっては、ローンチ時のホワイトリストや公平なエアドロップを、トランザクションコストを膨らませずにスムーズに行えるという利点があります。

コミュニティからはフィードバックが寄せられました。@zelimir__ は、Solana 上のレンタル効率(rent、オンチェーンでデータを保持する継続コスト)を改善するために、埋まっているサブツリーの値だけを保存することを提案し、最適化された struct を示す gist を共有しました。

MerkleTree struct のコードスニペット。root、filled_subtrees、next_index フィールドを表示

また、証明生成速度を 30〜40% 向上させるために Blake3 サポートを追加することも推奨されました。別の助言としては、ツリーの途中にある単一レイヤーをキャッシュすることで巨大なパフォーマンス向上が得られる、というものがあり、ベンチマーク結果も提示されました。

キャッシュされたレイヤー最適化の有無で比較した Merkle 証明生成時間のベンチマークグラフ

テストからは、キャッシュレイヤーを使うことで平均時間が劇的に短縮されることが分かりました—操作あたりマイクロ秒単位で、反復回数に対して線形にスケールします。速度が重要になる大規模なミームプロジェクトにとっては、これは非常に大きな利点です。

その他の反応も好意的で、@ansel_sol はこれを「super cool」と称し、速い Merkle tree が Solana の魔法の一つだと指摘しました。@tanmayy4l はリーフを二度ハッシュする点に疑問を呈しつつも、no-std アプローチが SVM の制約に合っていることは認めていました。

Solana 上で開発している、特にミームトークン界隈の方はリポジトリをチェックしてみてください。クライアント側の証明生成とオンチェーン検証の例コードがあり、リーフ数に応じた証明サイズの表も掲載されています。例えば 1,024 リーフなら、証明に必要なのは 10 個の sibling だけです。

この種のオープンソースの貢献は、ブロックチェーン開発者コミュニティの協力精神をよく示しています。ミームトークンがより複雑なメカニクスを取り入れて進化する中で、こうしたツールは効率性とアクセスのしやすさを保つのに役立つでしょう。あなたはどう思いますか—次のドロップのためにフォークして改良する予定ですか?

おすすめ記事