ERC-6551:NFTがウォレットを所有する方法

キーストーン
• ERC-6551は、NFTにスマートコントラクトウォレットをバインドする新しい標準です。
• NFTは、トークンやパーミッションを保持し、所有者とは独立して機能します。
• TBAは、アカウント抽象化やセッションキーとの相互運用性を持ちます。
• セキュリティリスクには、承認の引き継ぎや所有権チェックが含まれます。
• OneKeyなどのハードウェアウォレットを使用することで、NFTの安全な管理が可能です。
非代替性トークン(NFT)は、静的なコレクティブルから、アセットを所有し、トランザクションを実行し、分散型アプリケーションと対話できるプログラム可能なアイデンティティへと進化しています。ERC-6551(トークンバウンドアカウント、TBAとも呼ばれます)は、各NFTに独自のスマートアカウントを与えることでこれを可能にする標準です。この記事では、ERC-6551の仕組み、その重要性、セキュリティとUXに関する考慮事項、そして開発者とユーザーのための実用的な参照情報について説明します。
ERC-6551とは何か(一文で)
ERC-6551は、スマートコントラクトウォレットをERC-721 NFTにバインドするレジストリとアカウントインターフェースを定義します。これにより、NFTはトークン、NFT、およびパーミッションを保持し、人間の所有者とは独立してトランザクションを実行できるようになります。同時に、コントロールは自動的にそのNFTの現在の所有者に追従します。詳細については、公式EIPの仕様を参照してください: EIP-6551: Token Bound Accounts。
構成要素
- ERC-721 NFT:ERC-6551は、EthereumおよびEVMチェーン上の標準的なNFT規格であるERC-721のために設計されています。ERC-721の所有権セマンティクスについて復習が必要な場合は、Ethereumのドキュメントを参照してください: ERC-721 Non-Fungible Token Standard。
- レジストリ:単一のレジストリコントラクトが、
createAccountおよびaccount関数を公開し、指定されたNFT(chainId、tokenContract、tokenId)のTBAをデプロイまたはアドレスを計算します。CREATE2により決定論的なアドレスを可能にするため、TBAはデプロイされる前に知ることができます。参照: EIP-1014 (CREATE2)。 - アカウント:TBAは、ERC-6551アカウントインターフェース(例:
executeCall、owner、isValidSignature)を実装したスマートウォレットコントラクトです。ERC-20、他のNFT、およびメタデータを保持できます。コントロールチェックは、現在のNFT所有者に解決されます。
開発者向け概要と例:TokenBoundドキュメント。分かりやすい入門としては、Alchemyの概要を参照してください: What is ERC-6551? およびthirdwebのエクスプローラー: ERC-6551: Token Bound Accounts。
NFTがウォレットを所有する方法(仕組み)
- アドレス導出:TBAアドレスは、入力(chainId、NFTコントラクト、tokenId、実装、salt)からCREATE2を介して決定論的に導出されます。アカウントをデプロイせずにアドレスを計算できます。
- アカウントデプロイ:必要に応じて、レジストリがアカウントをデプロイします。これでNFTのアイデンティティはスマートコントラクトウォレットを持つことになります。
- コントロールフロー:アカウントの
owner()は、NFTの現在の所有者を読み取ります。NFTが転送されると、TBAのコントロールは自動的に新しい所有者に追従します。キーや署名の移動は不要です。 - 実行:所有者(または許可されたオペレーター)は、人間が管理する外部所有アカウント(EOA)ではなく、TBAアイデンティティからDeFiと対話したり、アセットをミントしたり、パーミッションを管理したりするために
executeCallをトリガーできます。 - コンポーザビリティ:TBA自体がERC-20、他のERC-721、およびオンチェーンパーミッションを保持できます。NFTは、アセットと機能の自己完結型「カプセル」になります。
なぜ重要なのか
- コンポーザブルアバター:ゲームキャラクターNFTは、装備NFT、ポーション(ERC-20)、および実績を所有できます。キャラクターを取引すると、基本トークンだけでなく、ロードアウト全体が取引されます。例:TokenBoundドキュメント。
- ポータブルアイデンティティ:単一のNFTは、クロスdAppアイデンティティを、それが直接所有するウォレット履歴、評判バッジ、およびアクセス認証情報とともに表すことができます。
- 流動的なバンドル:クリエイターは、単一のNFTを転送することでアセットのコレクションを販売できます。購入者は、そのTBAが保持する在庫全体を受け取ります。
- より安全な委任:個人のEOAから委任する代わりに、スコープが制御されたNFTのTBAからアクセスを委任できます。
- アカウント抽象化との相乗効果:TBAは、セッションキーやペイマスターなどの高度なフローと互換性のあるスマートアカウントとして実装できます。背景については、EIP-4337: Account Abstractionを参照してください。
現在のエコシステム信号
- 標準化:ERC-6551は、参照レジストリとアカウントインターフェースを備えた承認済みEIPであり、一貫したプロジェクト間サポートを可能にします。仕様:EIP-6551。
- ライブラリとツール:TokenBoundのSDKとレジストリアドレスにより、dAppsへのTBAの統合が容易になります。ドキュメント:TokenBoundドキュメント。
- 開発者教育:主要な開発者プラットフォームがERC-6551のガイドとテンプレートを提供するようになり、採用と実験の増加を示しています。参照:Alchemy概要およびthirdwebエクスプローラー。
ほとんどの標準と同様に、ウォレットやマーケットプレイスでのUIサポートは、チェーンやプロジェクトによって異なります。ゲーム、ソーシャルプロトコル、NFTインフラストラクチャプロバイダーがネイティブTBAインタラクションを追加するにつれて、2025年まで継続的な進歩が期待されます。
主要なUXパターン
- インベントリNFT:プレイヤーがゲーム内で取得したアイテムをキャラクターのTBAに所有させます。キャラクターをリストすると、インベントリ全体が転送されます。
- パーミッションプリセット:ゲームプレイやソーシャルアクションを円滑にするためのセッションキーやスコープ付きデリゲートをTBAに保存します。個人のEOAからのグローバル承認よりも効率的です。
- プログレッシブ開示:UIでは、dAppと対話する際に「NFTによって所有」をプライマリのアクターとして表示し、ユーザーのEOAとNFTのTBA間の混乱を最小限に抑えます。
- ポータブルバンドル:クリエイター定義のポリシーとして「コンテンツ付き転送」または「転送時にコンテンツを消去」を有効にし、安全性と有用性のバランスを取ります。
セキュリティモデルとベストプラクティス
TBAはコンポーザビリティを向上させますが、新たな運用リスクも導入します。考慮すべき点:
- 承認の引き継ぎ:TBAに承認(ERC-20の許可またはNFTの承認)が残っている場合、NFTを転送すると、それらの承認は購入者に引き継がれます。悪意のある支出者が承認されていた場合、これは危険です。より安全なパターン:
- 転送時または販売リスト時に許可をクリアします。
- 無制限の承認ではなく、支出上限を使用します。
- 転送前にUIで許可警告を表示します。
- 所有権チェック:実行時に、アカウントが現在のERC-721所有者に対して
owner()を一貫して強制していることを確認します。仕様で定義されたインターフェースに従ってください:EIP-6551。 - リプレイと署名スコープ:TBAがオフチェーン署名(
isValidSignature)をサポートしている場合は、チェーン間およびコントラクト間でのリプレイから保護します。ドメイン分離されたEIP-712構造を使用します。 - アップグレード可能性のリスク:アップグレード可能なTBAを使用する場合は、管理者とアップグレードロジックを保護します。最小限で監査済みの実装を優先します。
- 回復とガーディアン:コンシューマーユースケースについては、TBAレベルまたは制御する所有者アカウントを介したバックアップフロー(例:ソーシャルリカバリ)を検討します。
- マーケットプレイス調整:コンテンツが価値に大きく影響する場合、マーケットプレイスはTBAの保有と承認を反映する必要があります。ビルダーはインデクサーを介してTBAインベントリを公開できます。
実装ガイダンスとセキュリティノートについては、公式ドキュメントから始めてください:TokenBoundドキュメント。
開発者クイックスタート(概念)
- レジストリの
account関数を使用して、指定されたNFTのTBAアドレスを計算します(決定論的で、デプロイは不要)。 - TBAが最初にアクションを実行する必要があるときに
createAccountを介してデプロイします。 - ユーザーフローを実装して、以下を実行します:
- ERC-20およびERC-721をTBAアドレスに送信します。
- dAppアクションのためにTBAからスコープ付きオペレーターを承認します。
- TBAの
executeCallを介してdApp呼び出しを実行します。
- オプション:アカウント抽象化機能を使用して、ガススポンサーシップとセッションキーを使用します。背景:EIP-4337。
マルチチェーンとガスに関する考慮事項
- チェーン固有のアカウント:チェーンA上の同じNFTとそのチェーンB上のブリッジされた表現は、異なるTBAを持ちます。UIでチェーンコンテキストをラベル付けすることで、クロスチェーンの混乱を回避します。
- ガス経済:TBAはスマートアカウントであるため、それらを介したデプロイと実行は、単純なEOAよりも多くのガスを消費します。必要に応じて、ペイマスターまたはメタトランザクションを使用してユーザーのガスを抽象化します。スポンサー付きトランザクションパターンについては、EIP-4337を参照してください。
- 事前計算:CREATE2の決定論により、dAppはデプロイ前にTBAアドレスを参照し、事前に資金調達または許可を設定できます。参照:EIP-1014。
ERC-6551を使用するタイミング
NFT自体がアクターまたはアセットコンテナであるべき場合、TBAを使用します:
- ゲームアイデンティティとロードアウト
- 資格情報とクォータを持つメンバーシップNFT
- クリエイターバンドルとキュレーションされたコレクション
- 評判バッジを持つソーシャルアイデンティティ
トランザクションを実行したり追加のアセットを保持したりする必要のない単純なコレクティブル、またはユーザーの複雑さがメリットを上回る場合は、TBAの使用を避けてください。
OneKeyがNFT所有ウォレットにどのように適合するか
TBAの制御は、最終的には基盤となるNFTを所有するアカウントのセキュリティに依存します。EOAが侵害された場合、NFT、ひいてはそのTBAの制御も危険にさらされます。ハードウェアウォレットは、秘密鍵をオフラインに保つことでこれを軽減するのに役立ちます。
OneKeyは、強力なセキュリティとオープンソースの透明性を維持しながら、マルチチェーンで高頻度のWeb3使用のために設計されています。ERC-6551フローの場合、OneKeyは以下を実行できます:
- NFTを所有および転送するEOAを保護し、TBAの制御がユーザーの手にあることを保証します。
- TBAを統合するdAppのために、EIP-712メッセージとスマートアカウントトランザクションをクリーンに署名します。
- TBAがチェーンごとに存在するため、EthereumおよびEVMエコシステム全体で一貫したマルチチェーンエクスペリエンスを提供します。
NFTをオンチェーンインベントリと承認を持つアクティブなアイデンティティとして使用する予定がある場合、OneKeyのようなハードウェアウォレットに所有権を固定することで、侵害されたホットウォレットがTBAの制御を乗っ取る可能性を減らすことができます。
結論
ERC-6551は、NFTを独自のウォレットを持つファーストクラスのオンチェーンアクターに変え、コンポーザブルなゲームキャラクター、ポータブルなアイデンティティバンドル、そしてより安全でスコープ化された委任を可能にします。この標準のレジストリとアカウントインターフェースにより、ビルダーはTBAサポートを簡単に追加でき、ユーザーはNFTからより豊かなユーティリティを得ることができます。2025年にかけて採用が拡大するにつれて、承認、マーケットプレイスUX、およびアカウント抽象化の統合に細心の注意を払ってください。
安全に参加するには、TBAを裏付けるNFTを制御するために堅牢なハードウェアウォレットを使用してください。OneKeyは、この新しいフロンティアを探索する際にNFT所有ウォレットを安全に保つためのセキュリティとユーザビリティの組み合わせを提供します。






