ZooBC 维基
安全与架构

安全与架构

ZooBC 的安全建立在签名和哈希之上,而不是建立在消耗的能源之上。每个区块、交易、回执和种子证明都有签名,每个节点都会检查它所接受的一切,因此没有节点需要轻信其他节点的任何说法。在这一核心之外,架构还加上了几条牢固的界限:已定案的历史无法改写,新节点能够自行找到真正的链,签名只在一条链上有效。

ZooBC 所设想的攻击者

设计假设攻击者可以运行任意数量的节点和账户,能看到每一条消息,会利用任何逻辑缺陷,并且财力雄厚,但无法伪造签名、无法找到哈希碰撞,也无法买下所有代币。它的目标可能是盗窃、审查、改写历史或扰乱链的运行。参与证明能防御什么 逐一介绍了每种攻击及其应对。

每个节点中的两条链

每个节点都维护两条链。主链每 15 秒产出一个区块,承载交易;其区块由抽签选出的已注册节点产出(见 参与证明)。脊链在 mainnet 上每天产出一个区块,不承载交易:每个区块都是主链的一个检查点、一份加入或退出的节点密钥记录,以及最新状态快照的清单,由三分之二的席位联署。

防御层次

层次它保证什么文章
每个节点都验证区块只有在被抽中的出块者签名、且其种子证明、交易和回执都核对无误时才算数参与证明
平等且有节奏的席位权力无法快速买到:每个席位一份相同的机会,每个周期准入一个参与证明能防御什么
有上限的回滚任何节点的回滚都不超过 720 个区块(3 小时)最终性与回滚
脊链检查点任何节点都不会在三分之二席位联署的检查点以下进行重组脊链
经过核对的快速同步新节点加载脊链所指定的状态,检查每个哈希,并向对等节点抽样核对快照与快速同步
版本锚点新安装会拒绝与其发布版本相矛盾的脊链历史版本锚点
链绑定签名为一条链签署的交易在其他每条链上都会被拒绝链绑定签名
三分之二决策检查点、跨链桥转账、预言机事实和发布版本否决需要三分之二的席位三分之二规则
不可预测的种子任何出块者都无法选择用于挑选下一个出块者的随机性区块种子(VRF)
双签举报在同一父区块上签署两个区块的出块者会被证实并记罚双签(equivocation)

各层防御相互重叠。例如,从一年前开始改写历史的企图,会在多个层次上各自独立地失败:回滚上限、检查点底线、脊链的联署签名和版本锚点。

一条从久远过去伸出的伪造分支遇到三道屏障:720 个区块的回滚上限、脊链检查点底线和发布版本中的脊链锚点,上方是每个区块都带有三分之二签名的脊链。运行中的节点和新节点都会拒绝它。
一条从久远过去伸出的伪造分支遇到三道屏障:720 个区块的回滚上限、脊链检查点底线和发布版本中的脊链锚点,上方是每个区块都带有三分之二签名的脊链。运行中的节点和新节点都会拒绝它。

多数派能做什么、不能做什么

即使攻击者持有超过一半的席位,它也只能延迟或审查交易,并在 3 小时上限之内替换近期区块。它无法伪造签名、花费他人的币、铸造超出 coinbase 发放计划的币,也无法退到脊链检查点以下,因为每个节点都会自行检查每个区块。

ZooBC 的安全不依赖什么

  • 保密。 对等节点之间的流量是明文 gRPC;保护来自签名和验证。
  • 能源或硬件。 不需要解任何谜题,也没有哪台机器能带来优势。
  • 可信第三方。 没有任何基金会为区块副署,没有任何网站为快照背书,只需一个诚实的对等节点就足以得知最重的链。

另见

本主题下的文章