This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
ERC-6551 の基礎となる原理の詳細な分析
執筆者:@0xCygaar 翻訳者:MetaCat
この記事は、ERC-6551 により、NFT があらゆるタイプの暗号資産を所有できるようにする方法について簡単に説明します。
ほとんどのNFTで実際に何が起こっているのかから始めましょう。
イーサリアム上の NFT は、誰が NFT を所有しているか、誰が NFT を転送できるか、そして NFT のメタデータがどのようなものであるかを示すスマート コントラクトの単なるデータ エントリです。特定の NFT に関する情報を返す関数は次のとおりです。
特定のNFTの所有者を取得する
特定のNFTのtokenURIを取得します
指定されたNFTが承認されているウォレットアドレスを取得します
NFT を鋳造するときは、データエントリの所有者の値 (ウォレット アドレス) を設定するだけです。 NFTを転送するときは、所有者の値(ウォレットアドレス)を変更するだけです。次の 2 つの図は、ERC721 契約の所有権設定の関連コードです。
ERC721 コントラクトの mint 関数
ERC721 コントラクトの伝達関数
ほとんどの NFT 契約は非常にシンプルです。上で見たように、これらの NFT が他の NFT、ETH、または ERC20 トークンを所有できるようにするコードはありません。
スマート コントラクトは変更できないので、ERC-6551 ではどのようにして NFT が他の資産を所有できるようになるのでしょうか?
答えは、レジストリ + コントラクト ウォレットです。
スマート コントラクト ウォレット (CA ウォレット) は、NFT、ERC20、または ETH を受け取り、さらに任意のトランザクションを実行できるスマート コントラクトです。これらのコントラクト ウォレットには、(すべてのスマート コントラクトと同様に) 独自のアドレスがあります。
レジストリに詳しくない場合は、レジストリを情報を保存する個別のスマート コントラクトと考えることができます。 ERC-6551 レジストリには、どの NFT がどのスマート コントラクト ウォレットにマッピングされているかを示す情報が含まれています。また、プロキシを使用してスマート コントラクト ウォレットを作成します (それを知っているかどうかは問題ではありません)。
レジストリ契約コード?
たとえば、AZUKI #4567 は、アドレス 0x243F4E0d556EFD1006c52E85A6ddFb6748A4C0b7 のスマート コントラクト ウォレットにマップされる可能性があります。以下の図に示すように、1 つの NFT は複数の契約アカウントを制御できますが、各契約アカウントは 1 つの NFT にのみ属します。
さて、NFT用のウォレットを作成し、NFTをウォレットにリンクできるレジストリができました。このNFTバインドされたウォレットは通常のウォレットとして使用できるようになりました。このウォレットは ETH の転送、NFT の購入、または ERC20 トークンのスワップを行うことができます。もちろん、トランザクションは NFT 所有者によって開始される必要があります。
これらのNFTバインドウォレットはスマートコントラクトであることを繰り返しておきたいと思います。ウォレットが特定のアクションを実行するには、誰かがコントラクト上の関数を呼び出す必要があるという点で、マルチシグネチャウォレットに似ています。 ERC-6551 ウォレットの場合、NFT 所有者はウォレット上で uteCall を呼び出してトランザクションを開始します。
では、これらのNFTバインドウォレットの何がそんなに特別なのでしょうか? NFTを管理する所有者が変わると、同時にウォレットの管理も変わります。 NFT を制御するということは、NFT にバインドされたウォレット内のすべてを制御することを意味し、NFT は単一の資産からバンドルされた資産パッケージに変換されます。
TL;DR: ERC-6551 により、レジストリとスマート コントラクト ウォレットを使用して、すべての NFT がウォレットを持つことが可能になります。レジストリはコントラクト ウォレットを作成し、コントラクト ウォレットを NFT に関連付けます。コントラクトウォレットには他の資産を保持でき、NFT の所有者のみがこのウォレットでトランザクションを実行できます。