ERC721R合约实测!防Rugpull的合约竟然可以被用来Rugpull?

NFT 协议好几种,ERC721 / ERC721A / ERC 721 psi / ERC 721R 之间的差别究竟是什么?当协议随着技术发展不断迭代,项目的需求亦不断翻新,身为一个开发者,该如何了解什么样的协议适合什么样的应用场景?

点燃推特舆论,号称能够在有效期限内退回 NFT ,并回收铸造费用的 ERC 721R 协议背后的逻辑为何?如何实际应用在智能合约撰写上?铸造之后真的能够无限制退款吗?The Z Institute 区块链线上学院本次就在直播中直接实测这个最新协议,讨论并改善协议的漏洞问题。

NFT 协议们的前世今生:

ERC 721:最常见的 NFT 协议,2017 时因项目 CryptoKitties 首度面世,与过去的共用 ID 的 Token 概念不同,每个 NFT 都有自己独特的 Token ID。

ERC 1155:一个合约内可以有多个不同的 Token ID,一个 Token ID 可以有多个 NFT。

ERC 721A:由 NFT 项目 Azuki 发布,为了降低批量 mint Gas fee 开发出来的协议,节省智能合约在链上写入资料的工作,用演算法的方式提高同时多笔铸造的效益。

ERC 721Psi:以 ERC 721A 为基础,再度针对降低 Gas fee 做优化。

ERC721R 的由来

由 NFT 项目 Crypto Fighter 开发,延伸 ERC721A 的协议做改良,为了防止项目方 Rugpull 设计的 NFT 退款机制,目的在于表现项目方长期营运的诚信。

项目方可以事先在合约中写定鉴赏天数(退费期限),在这个期间内 NFT 拥有者都可以直接透过合约机制申请全额退款,只需付 Gas fee。

ERC721R 的设计与退款逻辑

  1. 合约初始化的时候,以函示根据现在的时间加上合约内写定的周期,设定最后退款日期,并开启退款倒数功能,期间内 NFT 拥有者可以随时退款。
  2. 如果退款机制启动,将款项退回到 NFT 拥有者钱包后,NFT 不会被 Burn 掉,而是转回到合约拥有者(项目方)手上。
  3. 在退款期结束前,铸造收入会锁在合约地址内,达到目标日期项目方才能提取铸造收入,以确保合约内有足够的款项可以退 NFT 拥有者。

由实作退回中可以看到,款项会退回拥有者钱包,NFT 则会回到项目方手上

(参考 tx:https://rinkeby.etherscan.io/tx/0x9b78e13bfbbaee027a08afa79a31cf8c705539d4e38f603691dbbd56a9f304b4)

ERC721R 机制的漏洞

项目方如何利用漏洞 Rugpull:

  1. 项目方先使用自己的合约铸造(Mint)一张 NFT,此时项目方手上持有一张自己的 NFT
  2. 项目方启动退款机制,款项从合约地址退回自己的钱包,NFT 也退回项目方的钱包
  3. NFT 回到项目方手中后,项目方「再」执行一次退款机制,NFT 再度回到自己手上,退款与收回 NFT 无限回圈,直到合约内锁住的钱被项目方提空,RUGPULL !

如何填补 ERC 721R 的合约漏洞

在合约内另外写入规则:一个 Token ID 只能退款一次,解决重复退款问题。

The Z Institute 已向 ERC721R 合约提出修正建议与修正实作代码:D


(参考网址:https://github.com/exo-digital-labs/ERC721R/pull/9)

ERC721R 对 NFT 来说是一个好的机制吗

部分开发者与社群参与者认为,ERC721R,可以透过去中心化的合约机制,确保项目方有长期运作的诚信,保障一级市场的参与者的权益。

但另一方面,此协议可能导致在退款期结束之前,项目方会面临没有开发经费的窘境;或者 NFT 生态规则被破坏,鲸鱼大量铸造并退回不是稀有的 NFT。以及,区块链精神本身并不鼓励退回机制。

本文链接地址:https://www.wwsww.cn/jishu/11773.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。