一、说明
黑白名单功能可以控制指定账户的交易情况,比如限制用户买入、卖出、钱包转账等功能。黑名单只是对指定账户的状态的限制,至于黑名单中的用户要限制哪些功能,这完全可以通过合约代码灵活控制,不仅限于空间交易买卖,还可以控制是否收取手续费,是否收到最大交易额度限制,是否要受最大持币数量限制等。因此黑名单只是对用户状态的标记,至于标记用户状态后,可以限制用户哪些操作,这个完全由合约代码来灵活控制。
【附注20221208】
黑名单功能可以作为独立的功能模块,类似于权限访问控制一样,引入到所有自定义合约中。黑名单只是一个常规的工具,可以在黑名单中自定义任何功能限制,比如买卖,转账等,可以只限制买入,只限制卖出,同时限制转账等。完全由开发者来定义,
不要通过合约检查软件检测出存在黑名单,就认为是貔貅币,还需要结合代码来做进一步的判断。
二、合约中引入黑名单功能
1、在合约代码中引入 _blackList变量,实例如下:
具体代码
## 引入黑名单功能mapping mapping (address => bool) private _blackList;
2、在合约中添加访问黑名单的 get/set 接口方法
function setBlack(address account, bool state) public onlyOwner virtual returns (bool) { _blackList[account] = state; return true; }
添加查询指定用户是否在黑名单中的get方法:
function isBlack(address account) public view returns (bool) { return _blackList[account]; }
实例合约代码如下:
3、在 _transfer 函数中,引入黑名单限制功能
增加如下代码行:
## 限制黑名单中的账户地址不能进入任何交易,即不能转出(卖出)又不能转入(买入)代币 ,账户被彻底冻结。 require(!_blackList[sender] && !_blackList[recipient], "BEP20: blackList restrict trade");
代码实例如下:
三、区块链浏览器上拉黑用户或者解除用户黑名单状态
1、拉黑用户
2、解除用户黑名单状态
3、查询用户是否在黑名单中
在 Read Contract TAB页签下找到 isBlack 函数,输入要查询的钱包地址,点击确定即可。
返回值为true,说明该地址在黑名单中
返回值为false,说明该地址不在黑名单中
注:用户默认是不在黑名单中的,只要未被拉入黑名单中的用户都为非黑名单用户。
至此,完成合约中引入黑名单功能的所有操作流程。
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:
币安智能链BSC发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:
此内容仅供注册用户可见,请登录!
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册