Casper 共识算法

网络中的验证节点负责维护区块链,使得全网状态达成一致。 验证者节点还需要确保区块链是自洽的,没有被篡改以及防止女巫攻击。

Casper 共识协议的几个方面使得参与者达成共识,包括以利益为基础的绑定,解绑定和周期性下注。 分布式共识协议的目的是为了确保横跨多个节点的区块链或部分区块链(基于命名空间)的一致性。 在错误频发的网络条件下,为了实现这一点,任何共识协议都应该产生一个确定的结果,并且证明协议的安全性和终止属性。

RChain’s consensus protocol uses stake-based betting, similar to Ethereum’s Casper design. This is called a “proof-of-stake” protocol by the broader blockchain community, but that label leads to some misperceptions including overstated centralization risks. Validators are bonded with a stake, which is a security deposit placed in an escrow-like contract. Unlike Ethereum’s betting on a whole blocks, RChain’s betting is on logical propositions. A proposition is a set of statements about the blockchain, for example: which transactions (i.e. proposed state transitions) must be included, in which order, which transactions should not be included, or other properties. A concrete example of a proposition is: “transaction t should occur before transaction s” and “transaction r should not be included”. For more information, see the draft specification Logic for Betting – On Betting on Propositions.

在某些汇合点处,验证者计算所有提议的最大共同子集。 有些时候,这个计算可能会非常困难,需要很长时间。 正因为如此,我们会需要一个超时机制,如果达到了规定的超时时间,验证者可以提出一个比较小的提议集合。一旦验证者对最大一致的提议子集达成共识,寻找下一个块就可以通过找到提议有效的最小模型而容易地实现。 对于这种设计,由于每个名称空间的事务隔离,所以大多数块可以并行合成。

我们来看看典型的工作流程:

  1. 验证者是一种节点角色。 每个验证者都会建立一个类似于债券的赌注,以确保其他验证者能工作良好。 如果他们不是一个好的验证者,那么这个股份就有被没收的风险。
  2. 客户端将事务请求发送给验证者。
  3. 接收到事务的验证者会创建一个包括最近交易的提议。

注意:只有在历史事务记录不一致时才会执行共识

  1. 在节点之间产生一轮下注周期:

    1. 原始验证者准备下注,这个赌注中包括以下内容:
    • 来源 =下注的来源
    • 目标 =下注的目标
    • 认领 =认领赌注。 认领可以是一个区块,一个提议或者是一个最大一致的子集
    • 信心 =代表玩家对发起认领中的证据拥有的信心。 这是验证者所使用下注策略的一种。
    • 理由。 用于证明为什么这是一个合理的赌注。
    1. 验证者下注。
    2. 验证者会评估接受到的下注。 请注意,这些接受到的“理由”可以用来确定网络的各种属性。 例如,一个算法可以检测出模棱两可的情况,或者创建一个“理由”的图表,或者在下注的时候发现接受到了太多信息。 注意需要考虑攻击向量,以及博弈论应该如何被应用于协议设计。
  2. 投注周期朝着证明一个结果继续进行。 注意:

    1. 下注周期的目标是验证者节点在最大一致的提议集上达成共识。
    2. 能进行证明的一个前提条件是 2/3 的验证者的行为是合理的。
    3. 最终下注周期会逐渐收敛。
    4. 收敛过程中是部分同步的。
    5. 通过对提议下注,能够一次性合成更大块的区块链。 如果没有冲突,周期可以快速收敛。 这种方法的关键点是可以同时生成多个块。这种方式突破了块大小的限制。 关于这一点没有任何争论,因为最大的一致提议集合可以允许一次同意数百甚至数千个块。 相比现有的区块链而言,这将带来巨大的速度优势。
    6. 对于每个下注周期,验证者节点可能会赢得或失去他们的下注。

6.可扩展性是通过对提议进行精细划分并通过共识协议的嵌套(递归)来实现的。如果验证者在一组提议上达成一致性,并且证明在投注周期已经收敛,那么区块就可以通过协议被合成。 当前的下注周期结束。

对于更多相关信息详见:

  • “共识游戏”:分析和比较广泛共识协议的公理化框架。
  • 关于RChain共识议定书的更多细节,请参阅“投注逻辑 - 投注议案”。
  • 要了解更多关于以太坊的 Casper 加入“以太坊研究Gitter”和“Reddit / ethereum”进行讨论。
  • 验证者的下注周期可以用一个迭代函数来表示,最终收敛对应于迭代函数中的不动点。通过这个原理,我们可以证明奖励与惩罚的收敛原则。我们可以给每一个验证者充分的自由度,唯一需要解决的是验证者所参与的下注行为是可收敛的。