ERC721R Bug
最后更新于
最后更新于
状态 | 已修复 |
---|---|
一个允许NFT铸造者在一定时间内退款的NFT协议。
正常情况下,开发者在refundEndTime
后调用withdraw()
函数来取出铸造过程中收集的费用,这一步骤没有问题。
再来看一下refund()函数: 铸造者调用该函数将铸造的NFT退回至 refundAddress
(一个由开发者控制和设置的地址) 然后再从合约拿回相应的数量的ETH。可如果refundAddress
本身就是一个铸造者呢?
恶意开发者可以设置一个refundAddress
,然后再从该地址铸造NFT。下一步,调用refund()
。由于NFT总会退回refundAddress
,他仍然持有这个NFT同时又得到了一些ETH。他可以重复该过程多次直至偷走所有资金。
类型
合约
日期
Apr 12, 2022
来源
直接损失
无,早期阶段项目
项目仓库