文章目录
- 前言
- 一、ERC721R是什么?
- 二、ERC721R的好处
- 三、退款期限应该是多久?
- 四、其他一些项目做了什么
- 五、如何实现ERC721R
前言
(信息来自官方)
ERC721R:为 NFT 创造者带来更大的责任感:
ERC721R 为 NFT 智能合约增加了无需信任的退款,允许铸币者在给定的退款期内返还以成本铸造的 NFT
ERC721R 的目标是为 ERC721 和 ERC1155 标准添加退款功能
一、ERC721R是什么?
ERC721R其实退款功能,他在NFT智能合约中增加了去信任的退款协议设计,允许铸造在给定的期限内退还按成本铸造的NFT,并且收获相应的退款
二.ERC721R的好处
对于买家:
- 低风险购买(在最坏的情况下,您可以拿回您的钱减去汽油成本)
- 防止地毯拉扯
- 迫使创作者承担更大的责任来交付
对于卖家:
- 与买家建立信任
对双方都有好处:
- 在退款开放期间,项目底价不太可能跌破新币价格。
- 短期鳍状肢提前离开项目,留下完整的高质量核心。
三、退款期限应该是多久?
这个问题没有一个答案,但需要考虑一些事情:
更长的退款期限意味着:
- 在退款期用完之前,团队有更多时间交付。
- 团队可以使用资金的延迟时间更长。
四、其他一些项目做了什么:
- Exodia 提供 14 天的退款期。
- Curious Addy's Trading Club 提供 100 天的退款期限。
- CryptoFighters 提供 45 天的退款期。
五、如何实现ERC721R
将以下代码片段添加到您的智能合约以添加退款:
uint256 public constant refundPeriod = 45 days;
uint256 public refundEndTime;
address public refundAddress;
constructor() ERC721A("ERC721RExample", "ERC721R") {
refundAddress = msg.sender;
toggleRefundCountdown();
}
function refundGuaranteeActive() public view returns (bool) {
return (block.timestamp <= refundEndTime);
}
function refund(uint256[] calldata tokenIds) external {
require(refundGuaranteeActive(), "Refund expired");
for (uint256 i = 0; i < tokenIds.length; i++) {
uint256 tokenId = tokenIds[i];
require(msg.sender == ownerOf(tokenId), "Not token owner");
transferFrom(msg.sender, refundAddress, tokenId);
}
uint256 refundAmount = tokenIds.length * mintPrice;
Address.sendValue(payable(msg.sender), refundAmount);
}
function toggleRefundCountdown() public onlyOwner {
refundEndTime = block.timestamp + refundPeriod;
}
function setRefundAddress(address _refundAddress) external onlyOwner {
refundAddress = _refundAddress;
}
如果有遇到不懂得或者有疑问欢迎联系本人进行交流
WC:luo425116243