
适用范围:从技术机制理解项目
以下讨论适用于采用 ERC-20 的同质化代币及使用所有者或角色权限管理的合约。Ethereum 的 ERC-20 文档说明统一接口与代币接收机制;OpenZeppelin 的访问控制文档解释所有者、角色及其管理关系。这些通用机制不能直接证明某个项目的资产状况或安全性。
误区一:符合标准就证明资产可靠
ERC-20 统一余额查询、转账和授权等接口,便于应用接入。它不负责验证代币所代表的现实资产。即使合约能够正常返回余额,也不能仅凭该结果确认黄金、货币或其他资产实际存在,更不能由此推出持有者享有何种链下权利。
同质化描述的是同一种代币单位之间的可互换性,不表示不同项目的代币价值相同,也不构成价格稳定承诺。
误区二:能查总量就意味着总量固定
总供应量查询反映合约当前记录。是否还能增发,需要结合具体实现及铸币权限判断。理解供应规则时,应分别看当前数量、改变数量的功能,以及谁能调用这些功能;单独一个总量字段不能回答全部问题。
误区三:合约上链就没有管理员
OpenZeppelin 的访问控制机制允许将管理能力交给所有者,也允许按角色拆分权限。角色管理员还可能授予或撤销其他角色。因此,判断控制权不能只看谁目前具有铸币权限,还要看谁能够重新分配这项权限。
多种角色名称也不必然意味着权力分散,同一账户可能兼任多个角色。实际约束取决于权限之间的关系及持有账户。
误区四:放弃所有权就消除了全部权限
放弃所有权会使受所有者检查保护的功能无法再被调用,但这一效果有明确边界。如果系统另设角色权限,仍需分别确认其状态。所有权是否存在、其他角色是否存在,以及相关管理功能是否可用,是不同的问题。
常见问题:授权和转账成功分别意味着什么
授权表示允许指定地址在额度范围内代为支出代币,并不等于已经转账。理解授权时,需要区分授权对象、可支出额度与实际发生的转移。
ERC-20 的普通转账没有强制通知接收合约的机制。余额转移成功后,接收合约仍可能无法处理或转出代币。因此,转账成功不能单独证明应用已完成入账;能否取回误入的代币,也取决于接收合约是否提供相应功能。