从即将通过的 EIP 提案窥见 NFT 的未来
EIP的全称是以太坊改进提案(Ethereum Improvement Proposals),以太坊社区中的任何人都可以创造一个 EIP。以太坊改进提案编写准则在 EIP-1中提供。以太坊改进提案的创作者负责在社区内建立共识并记录不同意见。
从历史上看,大多数以太坊改进提案的创作者通常是应用程序或协议开发者,因为提交高水平的以太坊改进提案需要很强的技术能力,EIP经过初审后会按照时序给予一个编号,并经由下图所示的审核流程进行讨论。
EIP有很多种类型,其中包括有Core、Networking 、Interface 、ERC、Meta、Informational,每一类解决的问题都不一样,我们耳熟能详的ERC-20、ERC-721、ERC-1155,属于应用级的标准协议,目前绝大多数NFT产业应用都是围绕着这几种主流协议展开的。
EIP就像是一部以太坊的编年史,记录了其诞生至今所有的发展脉络,同时也有着预见整个以太坊生态前进方向的能力,见微知著,一个EIP的改动可能蕴含着颠覆整个行业的巨大机会。本文在此将会把目光聚焦在与NFT相关的并且处于Last call和最近Final阶段的EIP提案。
EIP-4955 元数据标准扩展
该EIP建议规范NFT元数据(metadata)的模式,为EIP-721和EIP-1155标准NFT的JSON模式中添加一个新字段命名空间(namespaces)。主要代码如下图所示:
EIP-4955采用了直接扩展EIP-721元数据的方式,背后的想法是为了向后兼容。使得那些不能修改元数据响应(schema)的现有项目,能够创建一个新的智能合约,基于tokenId返回更新的元数据模式。鉴于以太坊上的大多数项目都使用不可升级的合约。
如果这个EIP需要对这些合约进行全新的实现,就必须重新部署。这样既浪费时间又浪费钱。而利用EIP-721现有的元数据字段,可以最大限度地减少必要的变化数量。
有许多项目需要自定义NFT属性。每个项目可能有自己的方式来渲染NFT,因此他们需要不同的元数据值。例如像Decentraland或TheSandbox这样的元宇宙项目,他们需要不同的3D模型来渲染NFT,基于每个项目的视觉/引擎。像Cryptopunks、Bored Apes等NFTs项目可以创建每个项目所需的3d模型。
有了新字段命名空间(namespaces),每个项目方或者供应商都可以通过namespaces来直接调用NFT资产(如上图代码所示),这将允许开发人员在单个智能合约或应用程序中使用多个NFT元数据时避免命名冲突。并且NFT的元数据将允许钱包、市场、元宇宙等NFT相关应用程序与任何NFT互相操作。
这项提案对需要支持多种元数据模式的NFT市场很有用,即使多个卖家使用不同的元数据模式,该EIP将使得市场运营商能够确保元数据密钥是唯一的同时自由储存特定的JSON数据。该建议的解决方案甚至可以有更广泛的应用,如大型Gamefi和元宇宙中的大量NFT可以通过自定义元数据来呈现不同属性,同时可以避免命名冲突,极大的提高了NFT的互操作性。
NFT租赁使用扩展 从EIP-4907到EIP-5006
EIP-5006该提案是由NFT 租赁市场 Double Protocol提出针对ERC-1155型NFT的租赁标准,这个标准是对ERC-1155标准的延伸。该提案建议在NFT元数据中增加一个额外的新字段用户(user),可以被授予代表资产用户(user)而不是所有者的地址(owner)。
早在去年6月29日,同样由NFT 租赁市场 Double Protocol推出的 EIP-4907 正式通过以太坊审核,成为了第一个可租赁 NFT 的 ERC 标准。EIP-4907作为ERC-721的扩展,增加了一个用户信息(UserInfo)变量,变量包涵用户(User)地址以及“出租到期时间(userExpires)”,当时间超过出租时间,租赁关系中止。主要代码如下图所示:
不同于EIP-4907对于ERC-721的简单扩展,EIP-5006中基于ERC-1155的特殊数据结构(ERC-1155本身是一种多重代币管理标准,他的ID可以对应多个地址以及token数量),增加了Userrecord以及usableBalance函数,可以便捷地批量管理租赁状态。主要代码如下图所示:
EIP-4907和EIP-5006标准的核心价值
不管是ERC-721还是ERC-1155标准代币都需要这样一种新效用。即"使用 "令牌的人可能与拥有令牌的人不同(如在租赁中)。因此,为 "所有者 "和 "使用者 "设置不同的角色是有必要的,这样 "使用者 "就不能采取所有者可以采取的行动(例如,转移所有权)。EIP4907和EIP-5006的提出明确了NFT的权利分配,有利于解决NFT流动性短缺。
有了双重的 "所有者 "和 "使用者 "角色,就能实现 NFT 的所有权和使用权的分离,这是解决NFT流动性短缺问题的关键基础设施,为一些链上的使用场景如租赁提供了技术支持。使得管理NFT贷款人和借款人可以和不可以对NFT做什么(换句话说,他们的权利)变得非常容易。
例如,对于转让所有权的权利,项目只需要检查采取该行动的地址是代表所有者的地址(owner)还是用户(user),如果是用户(user),则阻止该交易。此外,所有者可以控制谁是用户,其他项目也很容易将自己的权益明确分配给所有者或用户。
与此同时,在无许可互操作性的基础上,该标准使得第三方协议更容易管理NFT的使用权,而无需获得NFT发行方或NFT应用的许可。一旦一个项目采用了额外的用户角色,任何其他项目都可以直接与这些功能互动,并实现他们自己的交易类型。
例如,使用该标准的PFP类NFT可以被整合到一个租赁平台,用户可以租用NFT 30天,同时也可以整合到一个抵押贷款平台,用户可以使用NFT,同时最终通过分期付款购买NFT的所有权。这一切都将在不需要原始PFP项目的许可下完成。
EIP-4907与EIP-5006的推出无疑将进一步明确NFT扩大应用价值的方向,将会涌现更多丰富的玩法、应用场景和衍生品。例如租赁NFT的普及将会让GameFi 生态玩法更加丰富,资金周转率会大幅提升。
像Axie等大型Gamefi中真正能够贡献在线时长的这些海量基础玩家们,需要一种比较低信任成本的方式(非强制性转移型租赁)去租到游戏里的装备或资源权益等。很多NFT将更具有实用性。像是元宇宙中的虚拟土地可以被 "使用 ",代表游戏资产的NFT可以在游戏中被 "使用"。在某些情况下,所有者和使用者可能并不总是相同。
可能有一个NFT的所有者,将其出租给一个 "用户"。一个 "用户 "应该能够对NFT采取的行动将不同于 "所有者"(例如,"用户 "通常不能出售NFT的所有权)。在这些情况下,有单独的角色来识别一个地址是代表 "所有者 "还是 "用户",并相应地管理执行行动的权限,是非常有意义的。
EIP-5007 给NFT赋予时间属性
该提案建议在ERC-721代币标准基础上增加一个新的属性,包含初始时间到期时间(startTime, endTime)。从而使得NFT在链上的时间管理更简单高效。一些NFT有明确的使用期限,在该期限之外不能使用。
对于不包含时间信息的传统NFT,如果你想把一个令牌标记为无效或在特定时间启用,你需要主动提交交易--这个过程显然既麻烦又昂贵。并且其时间函数的接口不一致,会给第三方开发平台带了一些困难,而通过引入这些函数(startTime, endTime),就可以实现在链上自动启用和禁用NFT。主要代码如下图所示:
这个功能还可以给NFT带来很多新的使用场景,比如以NFT为媒介的访问服务或基于NFT的订阅内容应用,因为EIP-5007将允许开发者在设定的时间段后自动撤销对服务或内容的访问。除此之外协议的扩展也可以应用于数字艺术或收藏品,其中NFT的价值可能随着时间的推移而减少。指定到期时间的能力可以帮助防止NFT随着时间的推移变得 "陈旧 "或贬值。
另外值得一提的是,如果到期时间没有得到正确执行,或如果恶意行为者试图篡改到期日字段,拟议的解决方案可能会产生安全问题。因此我们认为可能还需要额外的措施,以确保到期日得到正确执行,并确保NFT所有者不会被不公平地锁定其资产。
EIP-5496 NFT多权益管理扩展
EIP-5496提出了对EIP-721代币标准的扩展,允许NFT的多权益管理。该提案定义了一个扩展EIP-721的接口,为NFT提供可共享给多人的权益。权益可以是链上的(投票权、要求空投的许可)或甚至是链上以外的(网上商店的优惠券、当地餐馆的折扣、进入机场贵宾室)。
每个NFT可能包含许多权益,而权益的持有者可以将该权益转让给其他人。权益可以是不可共享的或可共享的。可共享的权益可以被克隆复制,提供者可以根据传播路径调整细节。也可以为每个特权设置过期时间。主要代码如下图所示:
具体的权益数据管理过程使用了两个结构体做双层嵌套,首先定义了PrivilegeRecord,里面存储了用户地址(address user)和到期时间(expiresAt)两个字段,然后又定义了PrivilegeStorage,里面存储了最新一次的到期时间(LastExpiresAt),并用mapping的方式去将权益ID和PrivilegeRecord进行了绑定。
这种权益ID化的方式非常聪明,权益ID化后对于验证权益会非常的方便,不需要特别的去逐字匹配校验权益,只需要校验权益ID即可,权益的内容变通常比较频繁,将权益内容放在链下,只将权益ID放在链上,项目方对于权益进行改变时则不需要花gas费。
但权益ID化之后问题是无法直观的看到这个NFT到底都有什么权益,可能还需要第三方产品去单独做一个权益内容的设置和查询功能去索引到对应ID。主要代码如下图所示:
该协议可以达到实时有效地管理附加在NFT上的权益。许多NFT的功能不仅仅是作为个人资料图片或艺术收藏品,它们可能在不同的场景中具有真正的效用。
例如,一家时装店可能会给自己的NFT持有者打折;DAO成员NFT持有者可以对如何使用他们的国库的提议进行投票;一个DApp可能会创建一个空投事件来吸引某一群人,比如一些蓝筹NFT持有者来认领;杂货店可以在链上发行其会员卡(作为NFT),当会员在杂货店购物时给予某些特权,等等。
作为发行方对于NFT的权益赋能可能会有很多,而拥有NFT的人不一定想使用他们的权益,而传统的EIP-721协议只支持记录NFT的所有权和转让过程,NFT的权益是不被记录在链上的,EIP-5496的扩展将允许商家/项目将权益写入链上,并授予特定人群,并且权益拥有者可以独立管理每个权益,从而对于项目方和holder均具有权益的管理能力,释放了NFT在权益实用性领域的价值,促进了NFT大型实际应用落地的可能。
EIP-5606 多元宇宙NFT
EIP-5606定义了一个接口为数字资产(如可穿戴设备和游戏中的物品)创建一个Multiverse NFT(多元宇宙NFT)标准,同时可以索引这种资产在每个平台上的委托的NFT。这些平台可以是metaverses,Gamefi或NFT市场。该标准还允许在多元宇宙NFT中对这些委托NFT进行 "捆绑 "和 "解绑",因此持有者可以单独或作为捆绑物进行交易。主要代码如下图所示:
EIP-5606引入的多元宇宙NFT概念,它代表了一个跨越多个平台的数字资产。多元宇宙NFT合约定义了一种新的代币,保持了独特的数字资产与其相关的平台对应物之间的关系(EIP将它们称为委托代币)。
该标准引入了bundle捆绑物的简单概念。捆绑物本质上是一组由唯一的ID号(多元宇宙代币ID)标识的委托NFT。DelegateData结构包含每个平台上的委托NFT代币的信息。它包含的变量有:contractAddress、tokenId、数量,以区分NFT(遵循ERC-721标准或ERC-1155标准)。
捆绑和解绑函数接受一个DelegateData结构数组,因为需要满足部分捆绑和解绑。他们还需要委托NFT的单独的token ID来有选择只有多元宇宙NFT的所有者(或具有bundler角色的地址)可以调用捆绑函数。
在web3生态系统中,NFT已经发展到代表多种类型的独特和不可替代的资产。一种类型的资产包括一组相互关联的NFT。例如,如果一个品牌在不同的平台上发布了一款新的运动鞋,它将在每个平台上被铸成一个单独的NFT。
然而,实际上,它是同一款运动鞋。NFT缺乏跨平台的互操作性成了一个亟待解决的问题。创建一个多元宇宙NFT标准,允许在不同的平台上对数字资产进行索引和所有权,这将是实现跨平台的互操作性和真正的所有权的第一步。在这个方向上,EIP-5606提案是解决NFT和跨平台 "真正 "所有权的互操作性方面的第一个切实的尝试。
EIP-6150层级化NFT标准诞生
EIP-6150该协议在EIP-721的基础上进行延伸。它提出了一个类似文件系统的多层分层NFT结构。本协议在EIP-721及合约基础上添加了获取父NFT或子NFT以及NFT是叶节点还是根节点的新接口,并且保持它们之间的层次关系。
所谓NFT之间的层级关系是指所有的NFT将组成一个分层关系树。每个NFT都是树上的一个节点,可能是根节点或叶节点,也可能是父节点或子节点。主要代码如下图所示:
本提案中先对Minted事件进行了标准化,以表明在铸造一个新节点时的父子关系。在每一个一个分层树中,本提案规范了函数parentOf用于查询指定 tokenId 的 NFT 的父节点 NFT,规范了函数childrenOf来查询出指定 tokenId 的 NFT 的所有子节点 NFT。以此来方便查询上层和下层节点。此外函数isRoot和isLeaf则分别可查询指定 tokenId 在整个 NFT 层级树中是不是根节点或叶子节点。
另外值得一提的是本提案非常周密的添加了三个可选的扩展接口
可枚举扩展(IERC6150Enumerable)
本提案将三个函数标准化,作为支持涉及子节点的可枚举查询的扩展。每个函数都有param parentId,为了兼容,当parentId指定为0时意味着查询根节点。
销毁节点扩展(IERC6150Burnable)
层级关系的转移扩展(IERC6150ParentTransferable)在某些情况下,比如文件系统,一个目录或一个文件可以从一个目录移动到另一个目录。所以本提案增加了ParentTransferable扩展来支持这种情况。
访问控制(IERC6150AccessControl)
在一个层次结构中,通常有一个以上的账户有权限操作一个节点,比如铸币厂的子节点,转移节点,燃烧节点。本建议增加了一些标准功能来检查访问控制的权限。
由于目前的NFT几乎都是扁平化的,不同NFT之间不存在关联关系。而层级化标准的 NFT,则可以将所有NFT串联起来组成树状结构,就像文件系统一样。层级化的 NFT 可用于多种不同的应用场景,比如:组织架构、社交关系图谱、电商商品类目结构以及层级评论系统等等。
可以说,任何具有层级结构的场景都可以适用这个 EIP-6150 协议标准。层级结构的 NFT 在去中心化社交、去中心化电商等领域都将可能产生广泛应用。在以太坊生态系统内,单个智能合约可以是根,管理每个目录/类别作为单独的NFT和NFT的层次关系。
每个NFT的tokenURI可以是另一个合同地址,网站链接,或任何形式的元数据。只需要一个合约来管理和操作分层关系,在不远的未来,随着以太坊的数据可用性解决方案和外部无权限数据保留网络的发展,用于管理组织结构的链上公司将成为可能,从而实现完全去中心化的应用。
以上就是近期以太坊NFT协议的最新内容,截止本稿之前,EIP-5007与EIP-5496还处在Last Call阶段,EIP-4955、EIP-5006 、EIP-5606 、EIP-6150协议已经由Last Call转到Final阶段。
总体的来说这些新协议的通过对于NFT在创新性以及实用性角度是做出很大贡献的,如今NFT已经过去了PFP的阶段,而Web3的征途是星辰大海,创新无时无刻不在上演,NFT的下一个叙事到底要由什么开启,我们从这些协议中可以窥见NFT的未来正越来越朝向更实际,更具有应用性的方向发展。
在不远的未来NFT技术本身将改变游戏、保险、房地产买卖、付费广告、投票、社交平台、视频媒体......我们生活的方方面面. NFT 将不仅仅是加密的“一部分”。在接下来的几年里,它们将可能成为加密领域中唯一与现实世界紧密相关的实际应用。