发行 ERC20 代币时,你会被要求填写代币的数量和精度。举个例子,如果你发行 1000 个代币,精度设为 3,那么实际应用中,这 1000 个代币只相当于 1 个单位。因为精度是 3,所以需要 3 个 0 来表示。对于很多刚入门的朋友来说,“代币精度”可能还是个陌生的概念,也不知道它有什么用。
假设我们发行了一种名为 GoldToken 的代币,目标是 1 GoldToken = 1 公斤黄金。但实际使用中,我们可能需要用到更小的单位,比如克。由于以太坊不支持小数,所以 1 个 GoldToken 必须表示 1 克黄金。
从应用层面来看,你可以仍然认为 1 个 GoldToken 代表 1 公斤黄金。比如,A 向 B 转账 1 个 GoldToken,程序中实际转的是 1000 个 token;如果 A 向 B 转账 0.1 个 GoldToken,实际转的是 100 个 token。
所以,发行代币时的数量指的是实际有多少个 token,而精度则用于表达应用中的单位和实际 token 数量的换算关系。
简单来说,精度就是你所能达到的最小单位。例如,10 位精度通常记为 2^10 = 1024,这意味着精度是每单位的 1/1024。如果电压取样,精度为 1/1024v ≈ 0.98mV。
转换成数字精度,数字 10 表示最小精度是 10^-2 参考电压之一,也是 1024 个点之一。如果参考电压是 5v,那么最小单位就是 5 (1/1024)。0 代表 0V,1023 代表 5 (1023/1024),呈线性变化。
选择代币精度时,需要考虑以下几个因素:
需求量
代币的需求量是选择代币精度的主要因素。如果代币的需求量较大,建议选择较小的精度位数,以便容纳更多的小额交易。如果代币的需求量较小,选择较大的精度位数可以更好地适应当前的需求。
应用场景
不同的应用场景需要不同的代币精度。例如,如果代币用于小额支付,则应该选择较小的精度位数,可以使代币的交易费用更低。如果代币用于高价值的交易,则需要选择更高的精度位数,以便精确表示交易金额。
智能合约
智能合约是代币领域的重要组成部分。当代币被用于智能合约时,代币的精度应该与智能合约的精度相匹配。如果不匹配,智能合约可能会执行不正确的操作或出现错误。