Casper调研——简要

ETH迁移pos的过程是一个浩大的工程,需要完成公网中所有节点从pow切换为pos。eth的设计上有一个“难度爆炸”,就是在一定时间后,”难度爆炸“会到来,现在预计这个值在18年底左右。在此之前完成矿工节点从pow到pos的升级,待到”难度爆炸“来临后就会无可选择地从pow切换为pos。

ETH 对Pos算法的实现和研究的项目叫做Casper,通过一种责任制的惩罚机制以抵御Nothing at Stake攻击。Casper区别于传统pos算法的区别主要有以下几点:

  • 每一个验证者都有存款;
  • 验证者们开始见证区块,同时他们发现区块并选择一条链加在后面,并通过对它们下保证金来验证他们;
  • 如果一个块被添加后,见证者会获得部分奖励;
  • 如果一个见证者表现为一个攻击行为并且进行Nothing at Stake攻击,它会立即被惩罚,他的保证金会被扣除;

以上机制保证了Caper相比于BFT是一个更加严格的网络,任何作恶的节点一旦被发现会立即被惩罚并且扣钱,所以见证者们会诚实挖矿

Casper不是一个单独的项目,它包括两部分,Casper FFG (Friendly Finality Gadget)和Casper CBC (Correct-by-Construction ),FFG是用来实现Pow向Pos过渡的第一版共识,CBC通过利用理想的对手获取来获取安全证明。

Casper FFG :也叫做Vitalik Casper是一种pow和pos的结合的共识机制。这是Casper实现的第一个版本,由于eth原来使用的是pow的共识,这是一个方便从pow过渡到pos的版本。为了提高验证效率,Casper FFG 的验证者们只会验证checkpoint 组成的子树,checkpoint被format 成一个 checkpoint 子树,创世块是一个checkpoint, 高度能被100整除的block也是一个checkpoint。每个验证者有存款,当加入验证集合时,它的存款会被作为存款金额,这个值会随着奖励和惩罚而增加或者减少。每个验证者会广播 vote 信息<ν,s,t,h(s), h(t)>,s和t是两个checkpoint, 并且s是t的祖先,当2/3的验证者vote信息里公布 s —> t,那么绝大多数节点也会写 s —> t 。FFG主要有以下两个特性且交易确认Finality非常快。

  • ProvingSafe: Casper 有一个责任制安全特性,这个特性使得Casper两个冲突的checkpoint 不会被同时确认,除非 1/3 (只合起来拥有1/3股权)的验证者作恶 。
  • Plausible Liveness: 代表只要2/3的验证者遵循某个投票,通常不会有作恶节点投出冲突的vote, 那么所有的节点总是能添加一个新的检查点。
  • Finality:代表一旦一个特殊的操作被确认,那么交易就不会再被修改。V神证明了casper的Finality比pow更强,主要由于以下3个原因:
    • 大部分的验证者会下最大的资产去确认block,所以他们不愿意去攻击网络;
    • 见证者特别容易损失很多钱,所以他们不愿意进行攻击或者作恶;
    • 如果出现偶尔出现硬分叉,用户需要选择他们的愿意生长的链,那么多数节点选择的链就会成为主链。

Casper CBC: 也叫作Vlad’s Casper,目的是定义一种区块链共识协议规范(Casper the Friendly Ghost),可以按照协议规则导出其他的协议。为了便于理解区块链共识协议规范,他们首先提出了一种二进制共识协议(Binary Consensus protocol),他们都满足相同的共识安全证明(Consensus safe proof)。

  • 共识安全证明(Consensus safe proof):

    定义:共识安全证明,在系统不超过t个拜占庭节点的前提下,安全评估的决定具有一致的安全性。它表示遵循相同协议的不同人对安全估计作出的任何决定都是一致的。

  • Protocol messages: 被识别为一致性形成节点的名称,主要包括3个部分,“estimate”, “sender”,”justification”。“justification” 是协议消息集;“sender”(validator name): 使用协议消息集更新他们自己的estimate;”estimate value”: 当前的状态;

  • 二进制共识协议(Binary Consensus protocol):
    这是一种符合安全证明的一种简单协议。

  • 共识协议规范(Casper the Friendly Ghost ): 这个Ghost是Greedy Heaviest-observed Sub-tree,该协议主要有以下几个概念:

    • Protocol messages (Blocks) : 在共识协议规范中,协议消息为Blocks
    • dependency: 我们称消息m1 依赖于消息m2,如果 m1 是基于m2基础上作出的决策
    • Latest message: 如果 ,我们同样称m2 是最新的消息。最新消息对于定义估计器是至关重要的, 如果最新消息评估为0的节点比评估为1多很多,那么会返回评估器会返回0。
    • Blockchain membership: 我们定义 ,表示blockchain b1 在blockchain b2之中。
    • Score of block : 我们通过给出 latest message 为b’ 的所有验证器的权重的基础上的协议消息集合定义区块 b 的得分。
      children: 一个协议消息的集合b的children是指previewblock是b的区块们。

有了上面这些定义,下面就可以定义 GHOST协议了:

Data: 一些备选 blocks,协议消息集 M
Result: 选择blocks
Init: b = Genesis Block
While b children(C(b, M)不为空)do
    scores = dict()
    for each child of block b, b' do
        scores[b'] = Score(b',M)
    end
    if score has unique max then
        b = argmax(scores)
    else
        b = max score block with the lowest hash
    end
end
return

由于Ghost协议满足共识安全证明,我们认为该协议也是共识安全的。

你可能感兴趣的:(consensus,blockchain)