Renaissance Labs

Posted on Apr 12, 2022Read on Mirror.xyz

ERC721R存在的风险和BUG

1. owner权限过大

在 ERC721R 示例合约中 owner 可以通过 setRefundAddress 函数任意设置接收用户退回的 NFT 地址。当此退回地址持有目标 NFT 时,其可以通过调用 refund 函数不断的进行退款操作从而耗尽用户在合约中锁定的购买资金。且示例合约中存在 ownerMint 函数,owner 可在 NFT mint 未达总供应量的情况下进行 mint。因此 ERC721R 的实现仍是防君子不防小人,导致项目方利用此问题进行 RugPull。

2.缺少对退款接收地址的限制条件

由于缺少对退款接收地址的限制条件,开发者可通过bug,在ERC721R的限制期内抽走NFT合约中的资金,进而绕开该协议的约束,实现RugPull。