源码解读:以太坊新标准 eip-pa旗舰厅官网
来源:
内容概要
在这周,nft 租赁市场 double protocol 提交的可租赁 nft 标准“eip-4907”通过了以太坊开发团队的最终审核,成为第 30 个 erc 标准“final”的状态。
让我们一起来阅读这极简的源代码,来缕清其他是如何实现 nft 租赁的?
为什么需要租赁?
nft 的爆发毋庸置疑,而伴随普及引发了对其资产实用性的需求,尤其是在元宇宙和边玩边赚 (p2 e) 的场景下,仅仅单纯的资产所有权并不足以支撑更多的应用玩法的诞生。
一直的痛点是供给不平衡,导致的好项目少,浮于金融玩法的韭菜项目多,既然如今 web3 有大量 web2 行业精英在涌入,也必然需要快速的新标准推出,来将创造力的供给释放。
nft 流动性的紧缺,使得他风风火火的同时也备受诟病,他之前产权一体化的金融化操作,市场各类安全问题欺诈、剽窃、钓鱼、跑路、资产被盗层出不穷。
而 eip-4907,想要解决的就是分离 nft 的资产价值和使用价值,释放出 nft 的市场流动性
源码解读
由于 eip4907 极其简单,因此对代码的解读无论是否技术同学均可来尝试理解其细节设计。
2.1、实现原理:
他作为 erc-721 的扩展,eip-4907 增加了一个变量 userinfo,让应用可以查询此 nft 当前被租出去的目标地址“user”和出租时间”expires"。如果发现已经超出出租时间,则租赁关系宣告失效。
代码极为简单仅有 72 行,使用这个标准,就是在原来的 erc721 之上新增
1 个事件(用于通知链下应用称为事件)
3 个方法(用于实现链上数据管理功能)
分别是
updateuser 事件:当 nft 转移,租赁校色设置时,发出租赁用户改变的通知
setuser 方法:nft 所有者授权者可用,设置此 nftid 的出租用户和过期时间
userof 方法:任何人可用,查询此 nftid 的出租用户
userexpires 方法:任何人可用,查询此 nftid 的过期时间
2.1、数据结构:
理解 erc 标准协议的最佳方式就是理解他管理数据的最底层数据结构
例如:
其实 nft 只是通过 2 个映射(_owners,_balances),即一种字典形式的 key-value 对应关系的存储结构去记录数据

而 eip-4907 则是新增了一个数据对象 userinfo 在所有权的概念之外增加“用户”的维度

数据结构简单,就意味着管理的方法实现也非常简单
2.2、设置用户 setuser 方法
设置用户仅有 3 个步骤
【审计】此交易的发起者其是否持有此 nftid 或是有 approved 自动扣款权利
【设置】设置 userinfo 中用户的用户地址和到期时间
【通知】发出设置成功的 updateuser 事件

2.3、查询 nftid 的用户信息
媒体处处宣传的超时自动失效,而无需二次链上交易登记失效节约 gas 的逻辑就在这了。
查询的逻辑很简单,按指定的 nftid 查询_users 的 user 信息即可,但他增加了,if 判断,当前块的时间 block.timestamp 是否会超过设置的过期时间 expires,所以此查询仅在时间内有效。

2.3、查询 nftid 的用户过期时间信息
此处无需类似 user 查询时候判断是否过期,因为得知上一次过期时间,也是加快 nft 用户使用率的一种方式。

2.4、租赁关系的强制性设计
此 eip4907 的协议,对标准交易方法 transfer 增加了一部分内容,通过_beforetokentransfer 实现,就是强制在进行 transfer 交易转移后就删除掉这部分对用户的信息,并且发出事件通知已经用户失效了。

总结
没想到吧,这么快就代码讲完了,因为确实他写完了,对的,不像是之前的通过限制转移权的方法 eip-5058,见前文
其实他 eip-4907 只是多了个变量,并称之为租赁用户而已,可以声明,但是其他应用认不认就是另一码事了,毕竟其强制性有限,转移就能强行终止出租授权
当然你或许会问,为什么这么简单反而火速成为了难得一见,且每次都能掀起一番波浪的 final 标准呢?
这也就是 web3 的哲学:越简单,越优雅,剩下的交给共识。
我个人认可这样的哲学与趋势
web3 过去爆发或是得益于金融操作,但是好的生态不能只是金融价值,还需要更有商业价值,需要更广大的用户融入于生活生产形成价值闭环,货币终究只是手段而不是目的本身
引用:
来源:
内容概要
在这周,nft 租赁市场 double protocol 提交的可租赁 nft 标准“eip-4907”通过了以太坊开发团队的最终审核,成为第 30 个 erc 标准“final”的状态。
让我们一起来阅读这极简的源代码,来缕清其他是如何实现 nft 租赁的?
为什么需要租赁?
nft 的爆发毋庸置疑,而伴随普及引发了对其资产实用性的需求,尤其是在元宇宙和边玩边赚 (p2 e) 的场景下,仅仅单纯的资产所有权并不足以支撑更多的应用玩法的诞生。
一直的痛点是供给不平衡,导致的好项目少,浮于金融玩法的韭菜项目多,既然如今 web3 有大量 web2 行业精英在涌入,也必然需要快速的新标准推出,来将创造力的供给释放。
nft 流动性的紧缺,使得他风风火火的同时也备受诟病,他之前产权一体化的金融化操作,市场各类安全问题欺诈、剽窃、钓鱼、跑路、资产被盗层出不穷。
而 eip-4907,想要解决的就是分离 nft 的资产价值和使用价值,释放出 nft 的市场流动性
源码解读
由于 eip4907 极其简单,因此对代码的解读无论是否技术同学均可来尝试理解其细节设计。
2.1、实现原理:
他作为 erc-721 的扩展,eip-4907 增加了一个变量 userinfo,让应用可以查询此 nft 当前被租出去的目标地址“user”和出租时间”expires"。如果发现已经超出出租时间,则租赁关系宣告失效。
代码极为简单仅有 72 行,使用这个标准,就是在原来的 erc721 之上新增
1 个事件(用于通知链下应用称为事件)
3 个方法(用于实现链上数据管理功能)
分别是
updateuser 事件:当 nft 转移,租赁校色设置时,发出租赁用户改变的通知
setuser 方法:nft 所有者授权者可用,设置此 nftid 的出租用户和过期时间
userof 方法:任何人可用,查询此 nftid 的出租用户
userexpires 方法:任何人可用,查询此 nftid 的过期时间
2.1、数据结构:
理解 erc 标准协议的最佳方式就是理解他管理数据的最底层数据结构
例如:
其实 nft 只是通过 2 个映射(_owners,_balances),即一种字典形式的 key-value 对应关系的存储结构去记录数据

而 eip-4907 则是新增了一个数据对象 userinfo 在所有权的概念之外增加“用户”的维度

数据结构简单,就意味着管理的方法实现也非常简单
2.2、设置用户 setuser 方法
设置用户仅有 3 个步骤
【审计】此交易的发起者其是否持有此 nftid 或是有 approved 自动扣款权利
【设置】设置 userinfo 中用户的用户地址和到期时间
【通知】发出设置成功的 updateuser 事件

2.3、查询 nftid 的用户信息
媒体处处宣传的超时自动失效,而无需二次链上交易登记失效节约 gas 的逻辑就在这了。
查询的逻辑很简单,按指定的 nftid 查询_users 的 user 信息即可,但他增加了,if 判断,当前块的时间 block.timestamp 是否会超过设置的过期时间 expires,所以此查询仅在时间内有效。

2.3、查询 nftid 的用户过期时间信息
此处无需类似 user 查询时候判断是否过期,因为得知上一次过期时间,也是加快 nft 用户使用率的一种方式。

2.4、租赁关系的强制性设计
此 eip4907 的协议,对标准交易方法 transfer 增加了一部分内容,通过_beforetokentransfer 实现,就是强制在进行 transfer 交易转移后就删除掉这部分对用户的信息,并且发出事件通知已经用户失效了。

总结
没想到吧,这么快就代码讲完了,因为确实他写完了,对的,不像是之前的通过限制转移权的方法 eip-5058,见前文
其实他 eip-4907 只是多了个变量,并称之为租赁用户而已,可以声明,但是其他应用认不认就是另一码事了,毕竟其强制性有限,转移就能强行终止出租授权
当然你或许会问,为什么这么简单反而火速成为了难得一见,且每次都能掀起一番波浪的 final 标准呢?
这也就是 web3 的哲学:越简单,越优雅,剩下的交给共识。
我个人认可这样的哲学与趋势
web3 过去爆发或是得益于金融操作,但是好的生态不能只是金融价值,还需要更有商业价值,需要更广大的用户融入于生活生产形成价值闭环,货币终究只是手段而不是目的本身
引用:
本文链接:
转载请注明文章出处