加载中 ...
首页 > 股票 > 区块链 > 正文

源码解读:以太坊新标准EIP-4907是如何实现NFT租赁的?

2022-07-07 18:13:42 来源:广东财经网

内容概要

在这周,NFT 租赁市场 Double Protocol 提交的可租赁 NFT 标准“EIP-4907”通过了以太坊开发团队的最终审核,成为第 30 个 ERC 标准“Final”的状态。

让我们一起来阅读这极简的源代码,来缕清其他是如何实现NFT租赁的?

为什么需要租赁?

NFT 的爆发毋庸置疑,而伴随普及引发了对其资产实用性的需求,尤其是在元宇宙和边玩边赚 (P2E) 的场景下,仅仅单纯的资产所有权并不足以支撑更多的应用玩法的诞生。

一直的痛点是供给不平衡,导致的好项目少,浮于金融玩法的韭菜项目多,既然如今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到底是什么?

其实NFT只是通过2个映射(_owners,_balances),即一种字典形式的key-value对应关系的存储结构去记录数据

源码解读:以太坊新标准EIP-4907是如何实现NFT租赁的?

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

源码解读:以太坊新标准EIP-4907是如何实现NFT租赁的?

数据结构简单,就意味着管理的方法实现也非常简单

2.2、设置用户setUser 方法

设置用户仅有3个步骤

【审计】此交易的发起者其是否持有此NFTid或是有Approved自动扣款权利

【设置】设置UserInfo中用户的用户地址和到期时间

【通知】发出设置成功的UpdateUser事件

源码解读:以太坊新标准EIP-4907是如何实现NFT租赁的?

2.3、查询NFTid的用户信息

媒体处处宣传的超时自动失效,而无需二次链上交易登记失效节约gas的逻辑就在这了。

查询的逻辑很简单,按指定的NFTID查询_users的user信息即可,但他增加了,if判断,当前块的时间block.timestamp是否会超过设置的过期时间expires,所以此查询仅在时间内有效。

源码解读:以太坊新标准EIP-4907是如何实现NFT租赁的?

2.3、查询NFTid的用户过期时间信息

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

源码解读:以太坊新标准EIP-4907是如何实现NFT租赁的?

2.4、租赁关系的强制性设计

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

源码解读:以太坊新标准EIP-4907是如何实现NFT租赁的?

总结

没想到吧,这么快就代码讲完了,因为确实他写完了,对的,不像是之前的通过限制转移权的方法EIP-5058,见前文【EIP-5058 能否防止NFT项目方提桶跑路?】

其实他EIP-4907只是多了个变量,并称之为租赁用户而已,可以声明,但是其他应用认不认就是另一码事了,毕竟其强制性有限,转移就能强行终止出租授权

当然你或许会问,为什么这么简单反而火速成为了难得一见,且每次都能掀起一番波浪的Final标准呢?

这也就是web3的哲学:越简单,越优雅,剩下的交给共识。

我个人认可这样的哲学与趋势

web3过去爆发或是得益于金融操作,但是好的生态不能只是金融价值,还需要更有商业价值,需要更广大的用户融入于生活生产形成价值闭环,货币终究只是手段而不是目的本身。

“广东财经网”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与

我们联系删除或处理,客服邮箱1098101642@qq.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同

其观点或证实其内容的真实性。

  • 声音提醒
  • 60秒后自动更新
  • 【民政部回应何时恢复婚姻登记】民政部社会事务司二级巡视员杨宗涛表示,婚姻登记场所是人群聚集场所,部分地区暂停婚姻登记工作是对人民群众安全负责。未停止登记的地方推广用电话、网络、qq群预约登记,控制登记人数,分批分段登记,减少人员聚集和在登记机关停留时间。已停止婚姻登记地方将根据当地疫情控制情况逐渐恢复。

    15:54
  • 欧洲央行副行长金多斯:欧洲央行还没有达到逆转利率。宽松政策的副作用更明显了。

    15:54
  • 财经网站Forexlive分析师Justin Low评瑞士1月CPI月率:尽管通胀年率保持稳定,但核心通胀率有所下降,这一点令人更加担忧。这只是进一步巩固了瑞士央行维持现有货币政策不变,并可能在未来寻求更多宽松措施的观点。

    15:54
  • 【武汉两大批发市场商户开业率超过80%】商务部市场建设司司长朱小良10日称,目前武汉生活必需品供应基本正常,除冷鲜肉、鲜叶菜等少数品种存在结构性短缺外,大部分重要生活物资供应充足,未发生明显抢购或脱销断档情况。当地白沙洲和四季美两大批发市场正常营业,商户开业率超过80%,日交易量上升至3000吨以上。(国是直通车)

    15:53
  • 【日本2019年经常项目顺差增长4.4%】日本财务省10日发布的国际收支初步统计报告显示,主要受外国人入境游消费扩大影响,2019年日本经常项目顺差增长4.4%。报告显示,2019年日本经常项目顺差为20.06万亿日元(1美元约合109.8日元)。其中,商品贸易方面,由于液化天然气价格下跌等因素,进口下降5.6%至75.56万亿日元;由于汽车部件及钢铁等产品出口减少,出口下降6.3%至76.12万亿日元。货物贸易顺差减少53.8%,为5536亿日元。(新华社)

    15:53
  • 欧元兑美元EUR/USD短线波动不大,现报1.0952。

    15:53
  • 瑞士1月CPI年率:0.2%,前值:0.2%,预期:0.1%;瑞士1月CPI月率:-0.2%,前值:0%,预期:-0.2%。

    15:52
  • 英镑兑美元GBP/USD短线走低13点,现报1.2890。

    15:52
  • 【宁德时代“供电”国产特斯拉 有望拉低售价20%】全国乘联会秘书长崔东树分析认为,“随着特斯拉国产化率提升和产能爬坡,未来特斯拉国产车型的价格下探空间还是很大的。”他预计今年下半年,国产Model 3车型的售价就有望降至25万元,降幅接近20%。(新京报)

    15:51
  • 【内蒙古:对不裁员或少裁员企业返还上年度50%失业保险费】据内蒙古新型冠状病毒肺炎疫情防控工作指挥部消息,疫情期间,内蒙古对不裁员或少裁员的企业返还上年度实际缴纳失业保险费的50%,对面临暂时性经营困难的中小企业,返还标准提高到上年度6个月企业及其职工缴纳社会保险费的50%。

    15:51
  • 【商务部:2019年服务进出口总额54152.9亿元 同比增长2.8%】商务部新闻发言人表示,2019年,在服务贸易创新发展试点等政策的激励下,我国服务贸易总体保持平稳向上态势,逆差明显下降,结构显著优化,高质量发展成效初步显现。全年服务进出口总额54152.9亿元(人民币,下同),同比增长2.8%。其中,出口总额19564.0亿元,同比增长8.9%;进口总额34588.9亿元,同比减少0.4%。(第一财经)

    15:51
  • 【振华股份:疫情导致下游客户开工推迟 产品库存上升】振华化学公告,公司目前生产经营稳定,所有产能均正常开工,原材料采购能基本满足生产需要,由于疫情导致下游客户开工推迟,公司出货量减少,产品库存有所上升。公司将根据客户需求、疫情及市场变化,适度调整生产经营策略,尽可能保持生产经营的稳定。

    15:50
  • 环旭电子2月10日晚间公告,公司2020年1月合并营业收入为23.27亿元,较去年同期的合并营业收入减少27.83%,较2019年12月合并营业收入环比减少37.23%。

    15:49
  • 精测电子:与京东方集团签订了多份销售合同,合同累计金额达到6.96亿元。

    17:12
  • 华夏银行:银保监会同意本公司在全国银行间债券市场发行不超过100亿元人民币的金融债券,募集资金全部用于绿色信贷。

    17:03