首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻止OpenSea交易

阻止OpenSea交易
EN

Stack Overflow用户
提问于 2022-03-22 22:27:59
回答 1查看 127关注 0票数 0

有没有办法避免在像OpenSea这样的标准市场上交易NFT而又不违反erc721标准?如果是的话,你会怎么做呢?它是关于NFT的,它类似于一张可以使用5次的优惠券。五年以上,每年一次。我想防止有人在不知情的情况下购买一张赎回的代金券(今年)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-23 10:49:48

您可以在您的传递函数中包含支票。

保持一个全局映射计数器,其令牌ID指向每个令牌的事务数。

代码语言:javascript
复制
mapping(uint256=> uint256) private _tokenTx;

现在,在您的传输函数中,您可以使用NFT id,在地图中检查它是否低于5,如果低于5,则不满足tx,否则将继续并增加数字。

代码语言:javascript
复制
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
        require(to != address(0), "ERC721: transfer to the zero address");
        **require(_tokenTx[tokenId] <6, "ERC721: can\'t transfer more than 5 times");**

        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        **_tokenTx[tokenId] = _tokenTx[tokenId]+1;**

        emit Transfer(from, to, tokenId);

    }

至于过滤交换传输,您可以保留一个动态列表及其使用的地址,或者完全阻止审批过程。前者保持更好的标准,但更难和更昂贵地跟上;第二种更激进,但将适用于世界各地的所有流行交易所。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71579675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档