You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

该Token合约是否含钱包黑名单功能?请定位相关代码行

识别Token合约的黑名单功能

要判断目标Solidity合约是否包含可阻止地址交易转账的黑名单功能,你可以按以下几点排查:

  • 第一步:查找黑名单存储变量
    合约通常会用映射来存储被拉黑的地址,典型代码如下:

    mapping(address => bool) public blacklisted;
    

    这个变量会标记某个地址是否处于黑名单状态。

  • 第二步:查找黑名单管理函数
    合约所有者(通常通过onlyOwner修饰器限制权限)会有添加/移除黑名单的函数,比如:

    function addBlacklist(address _user) external onlyOwner {
        blacklisted[_user] = true;
    }
    
    function removeBlacklist(address _user) external onlyOwner {
        blacklisted[_user] = false;
    }
    

    这类函数是将地址加入或移出黑名单的核心代码。

  • 第三步:查找转账时的黑名单校验逻辑
    真正阻止转账的逻辑会在Token的核心转账函数中,比如transfer、transferFrom,或者OpenZeppelin标准合约中的_beforeTokenTransfer内部函数里,常见校验代码:

    function transfer(address _to, uint256 _amount) public override returns (bool) {
        // 阻止被拉黑的发起者转账(比如用户被拉黑后无法卖出Token)
        require(!blacklisted[msg.sender], "Sender is blacklisted");
        // 也可能同时校验接收地址
        require(!blacklisted[_to], "Recipient is blacklisted");
        
        // 后续转账逻辑
        return super.transfer(_to, _amount);
    }
    

    或者在内部前置校验函数中:

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal override {
        require(!blacklisted[from], "From address cannot transfer");
        require(!blacklisted[to], "To address cannot receive");
        super._beforeTokenTransfer(from, to, amount);
    }
    

如果合约中存在上述三类代码,就说明它具备黑名单功能,能够限制被拉黑地址的转账操作——包括用户买入Token后,若被加入黑名单则无法将Token转给交易所完成卖出。

内容的提问来源于stack exchange,提问作者user21859559

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:13:15