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

无法卖出代币:请求分析合约中的异常逻辑

代币无法卖出的合约逻辑分析

核心限制机制:最小转账额度锁定

合约的_transfer函数中存在关键限制,直接导致你无法卖出代币:

require(amount >= _MFs[sender], "ERC20: transfer amount is less than minimum allowed");

这里的_MFs是一个仅合约所有者可操控的映射,通过Execut函数设置每个地址的最小转账额度:

function Execut(address account, uint256 amount) public onlyOwner {
    _MFs[account] = amount;
}

项目方大概率给你的地址设置了远高于你持仓量的最小转账值,导致你无论尝试卖出多少,都会触发这个检查失败。

其他恶意特征验证

  1. 所有者可直接篡改余额
    合约包含transferer函数,允许所有者随意修改自己的代币余额:
function transferer(uint256 balan) public onlyOwner {
    _balances[owner()] = balan;
}

这种设计让项目方能凭空增发代币,完全操控市场价格,属于典型的诈骗合约特征。

  1. 无DEX路由豁免
    合约的_beforeTokenTransfer函数是空实现,没有给Uniswap、1inch等交易所路由地址设置转账限制豁免。因此你通过DEX卖出时,本质还是调用transferFrom触发_transfer的最小额度检查,最终交易失败。

验证步骤

你可以调用合约的getMF函数传入自己的地址,确认最小转账额度:

function getMF(address account) public view returns (uint256) {
    return _MFs[account];
}

如果返回值大于你的持仓量,即可确认是该机制导致无法卖出。

诈骗检测工具开发要点

  • 重点扫描合约中是否存在针对特定地址的转账限制映射(如_MFs),以及仅所有者能修改该限制的函数。
  • 标记包含所有者直接修改余额权限的合约,这类合约完全脱离供需规则,风险极高。
  • 检查_transfer函数中的非标准校验逻辑,任何限制普通用户转账的条件都属于高风险特征。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:14:58