ZooBC 维基
参与证明 (PoP)

参与证明

参与证明(PoP)是 ZooBC 就其区块达成一致的方式。区块由链上节点注册表中的节点产出,这些节点根据前一个区块的种子抽签选出,每个席位的机会都相同。每个节点都按网络所需的工作来衡量,即把区块和交易转发给协议为它指派的对等节点,而这一衡量结果决定它在新币中所占的份额。区块之所以有效,是因为它由正确的密钥签名,而每个节点都会自行检查这一点。

四个设计目标

  • 均等的出块权力。 余额、质押、硬件和分数都不会改变席位的机会。
  • 开放但有节奏的成员资格。 任何人都可以通过锁定质押来排队等候席位;协议每个周期准入一个新成员。
  • 可衡量、有回报的参与。 转发由接收方对等节点签署的回执来证明,而回执决定每个节点的收入。
  • 没有浪费的工作。 安全性来自签名、哈希和可验证随机函数,而不是来自谜题。

参与证明与 PoW、PoS 的比较 把这些目标与工作量证明、权益证明及其委托式和联邦式变体进行了比较。

一个区块的逐步过程

  1. 抽签。 前一个区块的种子初始化一个随机生成器,每个节点都以同样的方式运行它。它为第 1 轮指定一个出块者,为第 2 轮指定另一个,依此类推(抽签)。
  2. 轮次。 第 1 轮的出块者力求在前一个区块之后 15 秒为其区块盖上时间戳。如果它保持沉默,第 2 轮的出块者会在 15 秒后接手(轮次、时间与窗口)。只有前十个轮次可以携带交易,而前一个区块的出块者会被降级(优先轮次、空区块与前一个出块者)。
  3. 区块。 出块者用其节点密钥签署区块,并用可验证随机函数证明新的种子,因此它无法选择这个种子(区块种子(VRF))。
  4. 检查。 每个节点都会检查:出块者是否在其时间戳所落入的轮次或前一个轮次被抽中,以及签名、种子证明、每一笔交易和每一份回执。空区块是有效的。
  5. 工作。 节点把区块和交易转发给其优先对等节点,并收集签名的回执(回执与网络拓扑)。节点在自己区块中出示的回执会改变其参与分数,而参与分数决定 coinbase 抽奖 中的权重。
  6. 缺席的代价。 跳过一个轮次会使节点处于“缺席”状态:没有收入,分数下降。连续错过四次会使它被暂停,分数降到零会使它被除名(错过轮次、暂停与除名)。
节点 A 把一个区块转发给节点 B,B 回传一份它签署的回执。A 的下一个区块携带这份回执,回执改变 A 的参与分数,而分数决定 A 获得新 ZBC 份额的机会。
节点 A 把一个区块转发给节点 B,B 回传一份它签署的回执。A 的下一个区块携带这份回执,回执改变 A 的参与分数,而分数决定 A 获得新 ZBC 份额的机会。

权力与收入分开

出块者抽签忽略分数,抽奖忽略质押。分数高的节点赚得更多,但它产出的区块不会更多,选择的种子也不会更多:每个席位的权力都相同,而收入跟随每个节点完成的工作。更多权力意味着更多席位,而席位只能通过队列获得,一次准入一个(准入节奏)。

两个分数分别为 90% 和 30% 的节点:在出块者抽签中,它们的份额相等(1 : 1);在 coinbase 抽奖中,份额之比为 3 : 1。分数影响的是奖励,而不是出块。
两个分数分别为 90% 和 30% 的节点:在出块者抽签中,它们的份额相等(1 : 1);在 coinbase 抽奖中,份额之比为 3 : 1。分数影响的是奖励,而不是出块。

分支相互竞争时

节点跟随累计难度最大的分支,其中准时的区块比迟到的区块权重更高;完全平局时由链顶哈希较小者胜出(分叉选择与累计难度)。任何节点的回滚都不超过 720 个区块(3 小时),也不会低于在脊链上联署的最后一个检查点(最终性与回滚)。在同一个父区块上签署两个区块的出块者可以被举报并记罚(双签(equivocation))。

关键数字

项目数值(mainnet)
出块间隔,以及一个轮次的长度15 秒
每条链的创世席位11 个
可以携带交易的轮次第 1 到第 10 轮
起始参与分数20%
被暂停前连续错过的轮次数4
每个节点的优先对等节点数,重新打乱的间隔12 个,每 40 个区块
回滚上限720 个区块(3 小时)

另见

本主题下的文章