作者:@0xCygaar 编译:CoinTime 237
ERC-6551 是一种将彻底改变非同质化代币(NFTs)的协议。它通过引入注册表和智能合约钱包的概念,使得任何 NFT 都能拥有任意类型的资产。
本质而言,ERC-6551 是一种协议,旨在使所有的非同质化代币(NFT)能够拥有任意类型的资产。它通过引入注册表和智能合约钱包的概念,实现了 NFTs 拥有其他资产的能力。
大多数 NFTs 只是智能合约中的数据条目,记录了 NFT 的所有者、转移权限以及元数据。而 ERC-6551 允许 NFTs 拥有一个智能合约钱包,该钱包可以接收和管理其他 NFTs、ETH 和ERC-20 代币等资产。
ERC-6551 使用一个注册表来存储 NFT 与智能合约钱包之间的映射关系,并创建相应的智能合约钱包。当 NFT 的所有者发生变化时,控制权也会随之更改,从而确保只有 NFT 的所有者才能执行与钱包相关的交易。
当然这些概念介绍可能会有些难懂,所以首先,我们要了解大多数 NFTs 的本质。
以太坊上的 NFTs 实际上只是智能合约中的数据条目。这些条目告诉你谁拥有该 NFT,谁可以转移该 NFT,以及该 NFT 的元数据是什么样的。
以下是返回有关给定 NFT 信息的函数:
当你铸造(mint)一个 NFT 时,实际上就是设置数据条目中的所有者值。当你转移一个 NFT时,实际上就是改变所有者的值。余额也会相应更新。
我已经强调了所有权设置发生在 ERC-721 合约中的位置:
然而,大多数 NFT 合约都没有代码来让这些 NFTs 拥有其他 NFTs、ETH 或 ERC-20 代币。
那么,ERC-6551 如何让任意 NFT 都能拥有其他资产呢?
答案是:注册表+智能合约钱包。
智能合约钱包只是能够接收 NFTs、ERC-20 代币或 ETH,并执行任意交易的智能合约。这些合约钱包都有自己的地址(与其他智能合约类似)。
如果你对注册表不熟悉,可以将其想象为存储信息的单个智能合约。
ERC-6551 注册表存储了 NFT 与智能合约钱包之间的映射关系。它还使用代理(不太重要)创建了这些智能合约钱包。
例如,Azuki #4567 可能会映射到一个位于地址0x243F4E0d556EFD1006c52E85A6ddFb6748A4C0b7 的智能合约钱包。
一个 NFT 可以控制多个合约账户,但每个合约账户只属于一个 NFT。
这是一个完整的图表:
有了注册表来创建 NFT 的钱包并进行映射后,我们接下来要做什么呢?
这个与 NFT 绑定的钱包现在可以像正常钱包一样使用。它可以转移 ETH、购买 NFTs 或交换 ERC-20 代币。NFT 的所有者必须发起所有的交易。
值得强调的是,这些与 NFT 绑定的钱包其实是一种智能合约。它们类似于多签名钱包,需要有人调用合约上的函数,才能使钱包执行相应操作。对于 6551 钱包来说,NFT 的所有者将调用钱包上的 executeCall 函数来发起交易。
那么,这些与 NFT 绑定的钱包有什么特殊之处?
当 NFT 的所有者更改时,钱包的控制权也会随之更改。控制 NFT 意味着你拥有与 NFT 绑定的钱包中的所有内容。这意味着 NFT 将从单一资产转变为一揽子资产。
对于 ERC-6551 的更多资源,可以参考以下链接:
1、EIP: https://eips.ethereum.org/EIPS/eip-6551
2、发布博客:
https://medium.com/future-primitive/tldr-nfts-have-their-own-wallets-try-it-here-http-tokenbound-org-6fac135a1f9d
3、Twitter 账号: https://twitter.com/erc6551
4、6551 作者: https://t.co/kPtgI7UYOF
Opensea 目前也正在开发对 ERC-6551 的支持。如果你感兴趣,可以查看这个示例绑定钱包:https://opensea.io/assets/ethereum/0x26727ed4f5ba61d3772d1575bca011ae3a
TLDR(总结):ERC-6551 通过使用注册表和智能合约钱包,使所有 NFT 都能拥有钱包。注册表创建钱包合约,并将每个钱包映射到一个 NFT 上。钱包合约可以拥有其他资产。只有NFT的所有者才能在此钱包上执行交易。
通过 ERC-6551,NFT 不再是单一的资产,而是能够拥有多种资产的综合体。这个协议为 NFT的功能和灵活性提供了极大的扩展,并为 NFT 持有者提供了更多的权益和可能性。
所有评论