区块链共识分析的简单框架

已经整理到表格中去了。我对进入和退出方式有些疑问,印象中参与共识需要先成为Delegator,所以在表格里面留了问号。

我再查询了一遍,没有看到这样的表述,所以不太确定。

如果你看的是 Ouroboros 的论文的话,肯定没有这样的表述的。大部分讲共识机制的论文的 focus 都不在进入退出这里。具体 Cardano 是怎么使用 Ouroboros 的,还需要看他们网站的 Documentation 或者代码。

浏览了一些官方文档,Cardano的随机数应该是由delegators根据PVSS产生,由这个随机数从所有stake holder里面选择合适的出块人出块。

谢谢 @wancencen ~

我去年看的资料说的是不只是 PVSS,Cardano 采用的是 commit-reveal + PVSS 的混合方式。或者它更新了?

Casper 的发展历程是一个冗长且充满戏剧性的故事,今天简单分析下 Vlad 主导的 Casper-CBC 和 Vitalik 主导的 Casper-FFG。

  • 从进入方式上看, CBC 和 FFG 都要求验证者抵押代币。
  • 从出块选择上看,Casper 是覆盖在 PoW/PoS 上的确认层,并不出块。验证者对链上的区块投票,通过共识达成链上区块的确认。
  • 从共识方式上看,因为 Vlad 排斥 BFT 算法,因此设计了 GHOST 的变种 LMD GHOST (Latest message-driven GHOST) 作为 CBC 的共识机制。Vitalik 最初采用的是简化的 BFT 算法,后来也转向了 GhOST 算法,设计了 IMD GHOST (Immediate message-driven GHOST) 作为 FFG 的共识机制。
  • 从退出方式上看,验证者解除抵押就无法参与验证。
  • 从安全偏好上看,Casper 偏好一致性(感觉用一致性和活性来描述安全偏好似乎不是很合适,用概率性或确定性描述也许更好一些)。
  • 从延迟上看,Casper 的延迟更多地取决于底层的 PoW/PoS 的设置,比如是每 50 个块确认一次,还是每 100 个块,以及每个块的平均出块时间。
  • 从带宽效率上看,Casper 的带宽效率为中。Casper 需要为验证者的投票消耗额外的带宽。
  • 从节点数量上看,Casper 的节点数量为中。
1 Like

Ethereum 2.0 Beacon Chain把出块和共识分开,用VDF产生随机数来选择出块人,用Casper保证共识。在通常情况下系统可以同时保证一致性和活性,在共识无法达成的时候只保证活性。因此Casper是偏好一致性的,但是整体上我觉得偏好活性。

Ethereum 2.0 是 RANDAO + VDF 我记得?VDF 单独是无法工作的,必须指定输入,不同的输入其实会影响实际效果。

指定输入是指什么?详细说说?

VDF 是一个函数 f : \mathcal{X} \to \mathcal{Y} 。尽管它的性质要求它对于任意 x \in \mathcal{X} 都必须有唯一一个合法的 y \in \mathcal{Y} ,并且计算这个函数需要一个给定的时间,但是它还是必须要有输入 x 。不平凡的是,这个输入 x 在 Distributed Randomness Beacon (以下简称 DRB) 的场景下,最终必须是每一个节点间的公共知识,这样才能保证 DRB 输出的结果对于诚实节点是唯一的;并且这样的 x 应具有一定的熵 (反例如选择块高度作为 x ,攻击者可以轻易通过提前计算来预知 DRB) 且 \mathcal{X} 需要足够大(否则可以穷举 x ,也叫 Offline Attack)。因此,当 VDF 作为一个工具去构建 DRB 的时候,确定 VDF 的输入源是什么并不是一个平凡的问题。

Dan 在他的论文中提到,我们可以使用股票价格,PoW 区块链中的 nonce 和 Merkle Tree root 以及 “commit-and-reveal” 协议的输出 (例如 RANDAO) 作为 VDF 的输入 x

1 Like

对于使用随机方式出块的区块链中随机数生成的分析: 区块链上的随机性(二)项目分析

1 Like

Eth 2.0 为什么不简单地用 block hash 做 VDF 的输入呢?跟它的 PoS 共识有关吗?

没有太大的关系。参见 Justin Drake 的 Minimal VDF randomness beacon,里面提到,这样的设计是为了保证 VDF 的时间屏障被攻破之后仍能保证一定的随机数安全性(这个时候回落到只有 RANDAO 的情况)。

1 Like

对 Honey Badger(HBBFT) 的分析

应用 Jan 的分析框架分析一个异步共识协议 HBBFT:

  1. 从进入方式来看,和 Tendermint 一样,通过抵押代币的方式。
  2. 从出块选择上看,它不是轮流出块,而是所有的节点从自己的交易池中随机选出 1/N 的交易用门限签名的方式进行签名,并广播。
  3. 从共识方式看,HBBFT 通过一个可靠网络传输协议传输是用门限签名加密的交易,每个节点通过 BA 协议(与 Algorand 中的 BA 协议几乎相同)形成一致的列表。每个节点对列表中的值(交易)进行解密并广播,在收到 f + 1 个解密消息之后,即可解密整个共识的交易。对所有的交易进行排序以去除重复的交易。
  4. 从退出方式看解除抵押即可退出。
  5. 一致性和活性的要求上与 Tendermint 相同,攻击者 < 33% 的代币。
  6. 从效率上看延迟较低。
  7. HBBFT 的带宽效率很高,在收到交易的时候节点会将交易平均分成 N - 1 份,发送给其他节点,其他节点再互相转发,提高了整体带宽的利用率。
  8. HBBFT 因为采用门限签名,在不使用第三方的情况下,门限签名需要分布式秘钥生成,这个是比较消耗时间的。并且每一次更换共识列表都需要重新进行秘钥生成,所以这也限制了进出共识的灵活性。
  9. 从节点数量上来看,节点数量较高。因为是纯异步的共识协议,在延迟上要高于 Tendermint,但是其节点数量要高于 Tendermint,在不同节点数量下的表现参见下图:
3 Likes

你好,我认为讨论共识,需要考虑出块权和验证权。
DPOS的设计里,其实是把非BP的验证权给剥夺了,才能拥有如此高的性能,这也是DPOS的中心化的最大问题。
而在POW中,验证权还是在所有节点手中的,当出现作恶时,可以自动通过验证权的行使,把作恶者分叉出去。
POS中我不清楚验证权的归属。

验证权在“进入方式”里涵盖了,出块权在“出块选择”里涵盖了。

在上面表格里,进入方式和出块选择,都是针对有“出块权”的主体,比如矿工。忽视了有验证权但是不参与出块过程的节点。比如运行全节点但是不挖矿的。
而在EOS里,只有21个节点有出块权同时有验证权,其他的全节点是没有验证权的。
所以上述表格实际上忽视了只有验证权的这部分群体。而这部分群体,我认为也是有必要纳入考虑的,他们的数量可能并不小,而且他们的存在对于账本的安全性很重要。

1 Like

能够“把作恶者分叉出去”是什么情况,能不能举个例子说明一下?

比如BTC里,假设有几个节点占据了大量算力,发表了一个新的块,这个块里有问题,这时候接收到块的诚实节点会抛弃这个块,继续等待正确的块出现。于是作恶节点即使能挖出更长的链,也不会被诚实节点所接受,所以作恶节点的链和诚实节点的链会出现分叉。作恶者能够被诚实节点们分叉排除出去。不过一般来讲,作恶者即使作恶,也不会直接发布有问题的块。
我举这个例子主要是想说明验证权是重要的。进而说明EOS中因为验证权只掌握在21个BP手中,所以当BP们想要联合作恶时,其他节点们是没有办法的。即我上面说的这种作恶,在EOS里,是有出现的可能的。