
适用范围:以ERC-20代币为例
区块链数字代币有哪些常见问题,需要结合代币标准和具体实现讨论。本文围绕以太坊ERC-20展开,依据以太坊开发者文档与OpenZeppelin合约文档解释基础机制,相关结论不能直接推广到所有数字代币。ERC-20统一了余额查询、转移和授权等接口,但具体代币仍可加入额外规则。
同质化是否意味着不同代币价值相同
同质化描述的是同一种代币内部单位之间的可互换性。它不表示两个不同合约发行的代币等价,也不意味着代币价值固定。标准解决的是应用如何用一致的方式识别和处理代币,并未为代币所代表的现实权益提供保证。

为什么链上余额与界面数字不同
合约通常以整数记录余额,界面再按decimals标示的小数位数换算。例如,小数位数为2时,原始余额505显示为5.05。这只是单位表达的变化,没有改变账户拥有的数量。OpenZeppelin基础实现默认使用18位小数,但允许调整,因此不能把这一默认值当作所有代币的规则。

授权与转移有什么区别
授权用于设定某个地址可以代为支配的额度,授权本身通常不会立即移动代币。后续能否通过transferFrom转移,还取决于余额、剩余额度和合约限制。授权额度与账户余额属于不同状态,不能相互替代。
OpenZeppelin文档还说明,直接修改已有授权可能受交易排序影响,产生旧额度和新额度都被使用的风险。其基础实现对最大整数额度作特殊处理,不会在每次代扣后减少该额度;这一行为需要结合具体实现理解。
为什么转入合约后可能无法取回
以太坊开发者文档指出,ERC-20普通转移没有强制通知接收合约的回调机制。因此,余额记账成功,并不代表接收合约已经完成业务入账。
如果接收合约缺少处理或转出该代币的功能,代币可能永久滞留。能否恢复取决于接收合约已有的功能和权限,ERC-20标准本身不提供统一的撤回机制。
供应量是否固定,转移是否始终可用
totalSupply表示合约当前记录的总供应量,单凭这一数值无法判断未来能否增发。OpenZeppelin提供增发、销毁、供应上限和暂停等相关机制,但某种代币实际具备哪些能力,取决于其采用的扩展、实现逻辑和权限配置。
因此,符合ERC-20只说明具备相应接口,不能据此认定供应量固定或转移永远可用。分析某个具体代币时,需要区分标准要求、开发库默认行为与项目自行添加的规则。