ZooBC Foundation
ZooBC Foundation 是 ZooBC 背后的组织。它在每条链上持有节点注册表的 11 个创世席位,并发布公开的命令行工具。它对交易或余额没有任何特殊权力:协议给每把密钥分配一项职责,而有些事情任何密钥都做不到。
创世席位
每条链启动时都有 11 个写入其创世区块的已注册节点,即由 ZooBC Foundation 持有的创世席位。其他所有运营者都通过队列(队列)加入节点注册表。没有人挑选新加入者;它们按协议设定的节奏一次准入一个。在 mainnet 上,第一个新加入者在创世后 7 天准入,此后每个周期准入一个,周期为 600 天除以计入席位数,并保持在 7 到 90 天之间:在计入 11 个席位时约为 54.5 天(准入节奏)。在这一计数中,创世席位最多按 11 个计算。
一旦获得准入,每个活跃席位被抽中出块的机会都相同。创世席位遵循与其他席位相同的规则,并且和每个新节点一样,从 20% 的参与分数起步。
工具
ZooBC Foundation 在 github.com/zoobc/tools 以 MIT 许可证发布公开的命令行工具,共十种语言:C++、TypeScript、JavaScript、Python、Go、Rust、Kotlin、Swift、PHP 和 Perl。它们只通过节点的公共 API 与节点通信,任何应用都可以这样做(命令行工具)。
密钥及其职责
ZooBC 给每把密钥分配一项职责:
| 密钥 | 它做什么 |
|---|---|
| 发布机构 | 按文件的哈希注册软件发布版本,并可以撤销它们 |
| 国库 | 一个普通账户:它花费自己持有的资金 |
| 做市商 | 一个普通账户 |
| 页面机构 | 链上没有任何规则读取它 |
| 席位所有者 | 注册、更新、更换密钥和移除自己的节点,并收取节点的奖金 |
| 节点密钥 | 产出区块,并签署回执、见证和投票 |
从 0.5.8 版本起,四把角色密钥(发布机构、页面机构、国库和做市商)在全部三条链上都使用四个不同的地址,各自保存在独立的设备上。创世构建器会检查它们互不相同。四者之中,只有发布机构在链上拥有权力,它在创世时最多可以持有 1,000 ZBC 用于支付手续费。席位对它形成制衡:三分之二的席位可以否决一个发布版本,而三分之二的席位将其投票保持一周,就可以替换发布机构(发布版本与更新)。
席位所有者和节点密钥的说明见 节点的密钥。
任何密钥都做不到的事
- 共识中没有管理员密钥。 规则、参数或余额只会通过每个节点都验证的交易,或通过席位在限定范围内的价格投票(价格投票)而改变;绝不会通过一条签名消息改变。
- 创世是固定的。 它的账户、席位、参数和规则高度都是链的身份的一部分。
- 规则激活既不能投票决定,也不能签名决定。 如果节点二进制文件与为其所在链记录的规则高度不一致,它会拒绝运行。
- 国库不能铸币。 新 ZBC 只来自 coinbase 发行计划(供应量与发行)。
- 发布版本的注册只是建议性的。 它只引导那些选择了自动更新的节点,而这些节点会对照链检查哈希。运行其运营者自选二进制文件的节点不受影响。
- 没有人批准交易。 每个节点都按同样的规则验证每一笔交易和每一个区块,因此 ZooBC Foundation 无法批准、撤销或阻止一笔付款。
这些保证之所以成立,靠的是每个节点运行的代码,而不是任何人的承诺。新 ZBC 也不由任何人挖出或出售:它按固定的计划发行,并通过抽奖按分数的比例支付给已注册节点(coinbase 抽奖)。