一分钟了解什么是ERC721R

文章目录

  • 前言
  • 一、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

你可能感兴趣的:(区块链,以太坊,以太坊,区块链,智能合约)