
适用范围:以ERC-20代币发行为例
区块链新币发行有哪些常见问题,需要先明确发行对象。本文讨论以太坊上通过智能合约创建的ERC-20同质化代币,不涵盖独立区块链原生币的发行机制。以太坊开发者文档侧重标准接口及接收风险,OpenZeppelin Contracts文档展示基础实现及数量精度,两者分别对应标准与实现层面。
符合标准是否就确定了发行规则
ERC-20统一了余额、总供应量、转账和授权等接口,使应用能够按共同方式与代币交互。同质化表示同一代币的单位具有可互换性,不表示不同代币价值相同,也不表示价值保持不变。

标准接口本身无法回答初始数量分配给谁、后续能否增发等问题。理解发行规则,需要区分对外提供的通用接口与合约内部的具体供应机制。

初始供应量与分配容易混淆
OpenZeppelin的示例在部署时创建初始供应量,并将其分配给部署地址。这只是示例采用的分配方式,不能据此推断所有ERC-20代币都采用相同安排。
初始创建完成,也不能单独证明供应量以后固定不变。初始数量、持有地址与后续供应机制是不同问题,需要分别说明,避免用一个总量数字代替完整的发行规则。
为什么合约数量与页面显示不同
代币合约以整数记录数量,decimals用于确定显示时的小数位数。OpenZeppelin的ERC20实现默认使用18位精度;显示数量需要由原始整数除以10的精度次方得到。
因此,数量核对必须统一单位。把页面显示数量直接当作合约原始数量,或者对已经换算的数量重复换算,都会造成数量理解错误。精度影响单位表示,不能用来判断代币价值。
授权与转账有什么区别
授权表示允许指定地址在额度范围内代为支出,授权完成本身并不等于代币已经转出。余额表示地址持有多少,授权额度表示第三方获准支出多少,两者应分别理解。
涉及应用交互时,需要区分授予权限与实际转移代币两个环节。仅看到授权记录,不能据此认定接收方已获得代币。
转账成功是否代表应用已接收
以太坊开发者文档指出,ERC-20没有强制的接收通知机制。代币转入不具备处理能力的合约后,可能无法取回;链上余额变化并不自动意味着应用已经记账。
发行与配套应用设计需要同时考虑接收处理和误转处置。增加转账限制也存在兼容性取舍,例如一概禁止转向合约,可能影响依赖此类转入方式的应用。是否支持某种接收方式,应以具体合约功能为准。