你在区块浏览器上看到的每一个代币,背后都是一份部署在链上的合约代码。它决定了总量多少、能不能增发、转账要不要交税、你的余额能不能被冻结。很多”买了就卖不掉”的惨案,不是运气差,而是买之前没人去看那几十行代码。本文从 ERC-20 的六个核心方法讲起,再拆开四种高危权限,最后给一份买币前的五步检查清单。
代币合约是什么:一段管账的代码
在以太坊这类支持智能合约的链上,”发行代币”不需要搭一条新链,只需要部署一份合约。合约里维护一张表:每个地址对应多少余额;再定义一组规则:谁能转账、谁可以改总量、转账要不要收费。
这份合约部署后获得一个地址,任何人都可以调用它的公开方法。你在钱包里点”转账”,本质是向合约发送一笔交易,调用它的 transfer 方法,附带收款地址和数量。合约执行成功,链上就更新一次余额记录。
所以代币不是”存在钱包里的文件”,而是”合约账本里的一个数字”。钱包只是帮你读取和发起调用的界面。这也解释了一个常见困惑:为什么导入私钥后某些代币不显示?因为钱包默认只展示它认识的合约,其他的要手动添加合约地址。
还有一点容易混:代币合约地址和你的钱包地址是两个不同地址。前者是代码住的地方,后者是你签名的地方。往合约地址转币、或者把代币合约当成收款地址,都是典型错误,后者几乎必丢。
ERC-20 的六个核心方法
ERC-20 是以太坊上最通用的代币标准,规定了代币必须实现哪些方法,这样钱包、交易所、聚合器才能用同一套接口去读和操作。核心是六个:
- totalSupply:返回代币总供应量。你看到的”总量 10 亿枚”就来自这里。
- balanceOf:传入一个地址,返回它的余额。
- transfer:从调用者地址转出指定数量给另一个地址。
- approve:授权某个地址(通常是合约)可以从你的账户最多划走多少。
- transferFrom:被授权的地址代你用掉这部分额度。
- allowance:查询某个地址还剩多少授权额度。
其中 approve 和 transferFrom 是 DeFi 的基础。你在去中心化交易所卖币时,第一步”授权”就是调用 approve,把代币的支配权交给交易合约;第二步才是真正成交。很多人被盗,问题就出在授权上:授权了无限额度,合约被攻破或者本身是恶意的,余额就会被划走。
事件日志:为什么区块浏览器能看到转账记录
合约在执行 transfer 时会发出一个 Transfer 事件,记录发送方、接收方、数量。区块浏览器读取这些日志,才渲染出你看到的转账列表。
Approval 事件则记录授权变化。这两个事件是链上审计的入口:想查某个代币的真实流通情况、某个大户的进出、某个地址授权给了谁,都是从这里入手。
理解这一点有实际用处:当钱包显示的余额和浏览器不一致时,通常是节点或缓存问题,直接去浏览器查 balanceOf 和事件日志最准。
下面这张图把 ERC-20 的六个方法与四种高危权限做个对照,看清哪些是标准功能、哪些是发行方额外加的开关。
四种高危权限:增发、黑名单、暂停、改税
标准 ERC-20 只规定了转账和查询,没规定”管理员能做什么”。于是发行方往往在标准之外加一层权限控制,通常通过 onlyOwner 修饰符实现。常见四类:
增发(mint)。所有者可以随时凭空增加总量,再把新币卖进池子。你的持仓比例被稀释,币价承压。有些合约把 mint 包装成”生态激励””节点奖励”,本质一样。
黑名单(blacklist)。所有者可以把任意地址拉黑,被拉黑的地址无法转账、无法卖出。这类合约表面上买卖自由,实际上你的退出权掌握在别人手里。
暂停(pause)。一个开关就能让全网的转账停摆。项目方可以说”为了升级””防范攻击”,但同样的开关也能在砸盘前冻结所有人的卖出。
改税(setTax)。买入税、卖出税可以随时调整,从 1% 调到 90% 只需要一笔交易。很多人以为税率写死在白皮书里,其实它是一个可变的变量。
这四项只要存在任意一项,就意味着”你的资产不完全由你控制”。这不是说一定作恶,而是说作恶的成本极低。
相对透明的做法是:把管理权限交给多签合约,或者干脆调用 renounceOwnership 放弃所有权,并在公告里说明。看到”权限已放弃”加上”流动性锁定一年”,至少说明项目方把最快的跑路路径堵上了。相反,如果 owner 是一个刚创建的个人地址、并且还握着增发权限,那风险等级就完全不同。
貔貅盘合约长什么样
貔貅盘的核心特征只有一个:买能成功,卖会失败。实现方式有几种常见写法:
- 在 transfer 里判断发送方,如果是流动性池地址就要求额外条件(比如必须持有某个 NFT、必须白名单),普通用户永远不满足。
- 对卖出单独收极高的税,比如 99%,扣完等于归零。
- 用 tradingEnabled 之类的开关,只对买入开启,卖出永远关闭。
- 在合约里判断 gas 剩余量或交易对,命中特定条件就 revert。
判断方法不需要读代码:用一个新地址小额买入,然后立刻卖出。如果卖不掉、或者滑点设到很高仍然失败,基本可以确认。这一步花不了几美元,但能省掉后面所有的麻烦。
另外别忘了授权这一层。有些人代币能卖,但之前在陌生网站签过无限授权,结果被划走其他资产。定期用授权查询工具看看自己给哪些合约开过口子,把不用的撤销掉,是比任何”安全插件”都实际的习惯。
买币前的五步检查
- 打开区块浏览器,找到代币合约页面,确认源码已验证。没有源码的合约,等于黑箱。
- 搜索 mint、blacklist、pause、setTax、onlyOwner 这几个关键词,看是否存在,以及这些函数是否还有效。
- 看 owner 是否已放弃(renounce)。已放弃意味着没人能再调用管理函数;仍持有则要评估这个地址是谁、是否多签。
- 看流动性池:锁了多少、锁到什么时候、锁仓凭证是否可查。没锁或锁几天的,撤池风险很高。
- 用安全检测工具交叉验证,再看持币地址集中度。前三名占比过高、且包含未锁仓的项目方地址,要格外小心。
五步做完大概十分钟,比任何”社区调研”都直接。链上数据不会说谎,白皮书会。
风险提示
代币合约的权限设计决定了你对自己资产的掌控程度,但即使权限全部放弃、流动性锁定,也不代表项目有价值:价格仍可能因为无人交易而归零。本文提到的检查方法只能排除一部分明显风险,不能保证安全,也不构成投资建议。在中国大陆,虚拟货币相关业务活动属于非法金融活动,参与交易不受法律保护。请勿向任何”代币合约升级””授权迁移”页面签署钱包授权,也不要相信任何承诺收益的项目。








