价格投票
ZooBC 有少数几项价格并非永远固定:节点注册表及其席位 的席位会对它们投票。从 0.5.8 版本起,一条规则适用于所有可投票的价格。每个快照周期(mainnet 上为 30 天)一次,每张投票先被限制为至多比现行价格高 20%、至少为现行价格的一半,然后每项价格调整为计入席位的平均值,沉默的席位按现行价格计算。其他一切,从发行计划到各账户余额,都不受任何投票影响。
哪些可以投票
| 价格 | mainnet 上的起始值 | 界限 |
|---|---|---|
| 转账手续费(手续费系数) | 1.0,投票中写作 0.01 ZBC | 一个原子单位到 1 ZBC,即最高为起始值的 100 倍 |
| 账户租金 | 每个周期 0.01 ZBC | 每个周期一个原子单位到 10 ZBC |
| 代币维护费 | 每个周期 0.1 ZBC | 每个周期一个原子单位到 10 ZBC |
| 数据集存储价格 | 每个周期每 MiB 0.05 ZBC | 从一个原子单位起 |
| 存储乘数 | 1.0 | 有其自身的界限 |
| 网关质押 | 10 ZBC | 从一个原子单位起 |
| 市场创建成本 | 50 ZBC | 从一个原子单位起 |
| 市场吃单手续费 | 0.1% | 1 到 100 个基点 |
| 队列最低额 | 100 ZBC | 一个原子单位到 250 ZBC |
在每笔交易的下限中,转账手续费与 0.025 ZBC 的基础操作费相乘(手续费)。队列最低额是节点进入队列所需的最小质押(注册节点)。其他价格与各自的功能一起讲解:账户租金与清理、代币维护费(存续)、数据集、网关 和 市场与订单。
价格如何变动
每个未被暂停的已注册席位都有一票;这些就是计入席位。在一个周期内,席位可以投票任意多次,以其最近一次投票为准。在周期结束时:
- 每张投票都受到限制:至多比现行价格高 20%,至少为现行价格的一半,并且始终处于该价格的下限和上限之内。
- 新价格是所有计入席位的平均值,每个沉默的席位都按现行价格计算。
如果没有人投票,什么都不会改变。所投票数的中位数、恰好三分之二的一致或最高的一票,都决定不了任何事情。
计算示例
十个计入席位,现行价格为 100:
| 投票 | 每张投票按多少计算 | 新价格 |
|---|---|---|
| 两个席位投 120,八个沉默 | 120、120,每个沉默席位按 100 | (2 × 120 + 8 × 100) ÷ 10 = 104 |
| 一个席位投 10,000,九个沉默 | 120 | (120 + 9 × 100) ÷ 10 = 102 |
| 一个席位投 0,九个沉默 | 50 | (50 + 9 × 100) ÷ 10 = 95 |
如果没有限制,10,000 的那一票会使简单平均值达到 1,090。先施加限制之后,在十个席位的注册表上,一个席位最多只能让价格移动完整步幅的十分之一;在 100 个席位的注册表上,则只有 0.2%。
价格能变动多快
即使每个席位都投出完整的步幅,一个价格在一个周期内最多上涨 20%,最多下降一半。上涨十倍大约需要 13 个周期,降到十分之一大约需要 4 个周期。
每项以 ZBC 计的价格都可以投票降到低至一个原子单位(0.00000001 ZBC)。如果 ZBC 变得非常值钱,这些价格可以随之下调,使保有一个账户或数据集的实际成本不至于贵得离谱。从账户租金的 0.01 ZBC 降到一个单位,大约需要减半 20 次,因此至少需要 20 个周期。没有任何东西会变成免费:每一项计算出的费用都向上取整到至少一个原子单位。
投票
投票是用席位的节点密钥签名的免手续费职责交易(节点的密钥)。除转账手续费外,每项价格都用 SetConsensusParam(类型 51)投票。
转账手续费是唯一需要两步投票的价格:
- 在周期的前半段,席位发送一笔 FeeVoteCommitment(类型 7),只携带其投票的 32 字节哈希,因此投票值保持隐藏;
- 在后半段,它发送一笔带有投票值的 FeeVoteReveal(类型 263)。
只有当揭示的值经哈希后与同一席位在同一周期内所作的承诺相符时,揭示才算数,并且采用席位最近一次有效的投票。新的手续费随后像其他价格一样计算。
保障措施
- 注册表下限。 当注册表的席位或不同所有者账户少于 max(3, 其创世最低数) 时(mainnet 上为 7),任何全注册表范围的决定都不会生效。在这项计数中,同一运营者的两个席位只算一票。
- 每个周期一次。 一个参数每个周期最多变动一次,并始终保持在其界限之内。
- 资金留在席位手中。 这些价格收取的一切都归已注册节点:租金通过长效池,手续费通过抽奖(资金池、coinbase 抽奖)。
任何投票都改变不了的
发行计划(每个节点都据此核对每个区块的 coinbase,供应量与发行);任何账户的余额;共识规则及其适用的高度;以及创世。这些随创世和节点软件而来,任何投票或密钥都无法改动它们(ZooBC Foundation)。席位在价格之外还有一种投票:其中三分之二可以否决一个软件发布版本(发布版本与更新)。