小数位数与步长
在 ZooBC 上,无论是 ZBC 还是任何代币,每个余额都以同一个原子单位计数:亿分之一(10⁻⁸)。代币的小数位数是发行时选定的一个 0 到 8 之间的数,它不会改变这个单位。它表示代币使用八个小数位中的几位,因而也决定了该代币可转移的最小数量。
步长
转移代币的每个数量都必须是其步长的整数倍:
step = 10^(8 − decimals) atomic units
代币的总供应量也必须是步长的整数倍。比步长更细的数量会被拒绝。
| 小数位数 | 步长(原子单位) | 最小数量 |
|---|---|---|
| 0 | 100,000,000 | 1 |
| 1 | 10,000,000 | 0.1 |
| 2 | 1,000,000 | 0.01 |
| 3 | 100,000 | 0.001 |
| 4 | 10,000 | 0.0001 |
| 5 | 1,000 | 0.00001 |
| 6 | 100 | 0.000001 |
| 7 | 10 | 0.0000001 |
| 8 | 1 | 0.00000001 |
整数单位与细分单位
由于原子单位从不改变,无论小数位数是多少,一个完整代币总是 100,000,000 个原子单位。钱包会把用户输入的数换算成原子单位:12.5 个代币是 1,250,000,000 个原子单位,对任何至少有 1 位小数的代币都是有效数量。
因此,小数位数描述的是代币可以被分割得多细:
- 0 位小数的代币只能按整数单位转移,如票或座位;
- 8 位小数的代币可细分到 0.00000001,与 ZBC 相同。
十四种创世币都有 8 位小数。
小数位数在哪里起作用
- 订单簿市场只接受使用全部 8 位小数的代币:市场交易对中的两种资产都需要 8 位小数(见 市场与订单)。
- 兑换报价接受任何小数位数(见 兑换报价),因此小数位数较少的代币可以在那里交易。
- 以代币支付的手续费所交出的单位会向上取整到该代币的步长(见 发行代币)。
所以,希望代币在订单簿上交易的发行方,应在发行时选择 8 位小数。