Difinity调研——共识

Difinity共识概览

Difinity 共识是一个四层的共识模型,如下图所示:
Difinity调研——共识_第1张图片

自底向上分别为Identify层,Random Beacon 层,BlockChain 层和Notary 层:

  • Identify 层:最底层是一个可以提供注册和女巫攻击的客户端注册中心,所有的节点都需要注册加进网络,并且有永久的唯一的匿名的;
  • Random Beacon 层: 是一个去中心化的随机数灯塔层,可验证的随机数函数(VRF: verified random function);
  • BlockChain 层:该层基于随机数灯塔的驱动,通过概率函数的排名进行有效区块的生产。这一层通过概率时隙协议(PSP:probabilistic slot protocol ),这个协议每一个高度都会为客户端排序,并根据排名为每个区块生产着分配一个weight,生产着会将该weight打入区块,Difinity 采用最重链原则,当节点收到其他节点的senblock请求后会将自己打的块放在一起比较,然后选择最重的链为主链,其他的链都丢弃;
  • Notary 层:该层是一个去中心化的公正组,提供时间戳和发布担保,并且加快交易的速度。Difinity使用该层进行区块的最终确认,只有经过确认的块才能最终上链。公正层之所以能够提高确认速度是因为Difinity不是一个完全共识,是一个乐观共识,因为他认为在通常只会有一个块同时被公正。公正层在Difinity中并不仅仅起到公正的作用,还会提供时间戳和发布担保(proof of publication)。公正产生的公正块,这样其他节点无法发起自私挖矿和无利害关系问题

Difinity 基本概念

Difinity 网络定义了很多概念,主要有系统模型、威胁模型、区块链要素定义等;

系统模型

  • Replicas:接入网络的Difinity 节点,所有的节点在一起称为宇宙(universe U),每个节点有一个公私钥;
  • Authentication:节点发布协议消息都需要经过签名,节点只会接受和处理经过节点签名的消息;
  • Groups:在特定的时间里,一些副本的集合G, G 包含于U,我们称为这个子集叫做组;有一个特殊的组叫做committee,这个委员会负责进行块的验证工作,执行上面所说的四层描述中最上面一层的公正块功能;假设所有的组的大小一样大,为n,那么n就叫做group size;
  • Synchrony: 实际使用中,我们假设Difinity是一个半同步的网络,网络的传播时间可以通过随机数Y进行建模,他的随机分布是已知的;基于此,系统提出了两个系统层面的常量,BlockTime和T,Difinity有一个时间偏移假设和证明,会用到这两个参数。

威胁模型

  • Byzantine replicas 拜占庭副本: 网络中的作恶节点,区块链网络中,将遵循协议的节点称为诚实节点,不遵循协议的节点成为拜占庭节点;
  • Adversarial strength 敌对强度:网络中一个组G中,定义f(G)为拜占庭节点个数,我们假设β>2 ,且 |U| > β*f(G),β 就称为敌对强度;
  • Honest groups 诚实组:假设Difinity中组的大小为n,那么我们当某个n>2f(G),为们称为该组是一个诚实的组,其实就是组里拜占庭节点数要小于组里总节点的1/3;
  • Random samples 随机抽样

区块链要素定义

  • Blocks: Block包括一个特殊的创世块和用一个元组表示的普通块,B = (p,r,z,d,o),其中p 是prehash指向前一个block,r 是第几周即round,z是前一个块的公正,d 交易的承载量,o是矿工;
  • Chains: C是区块的有限集合(B0,B1,…,Br),lenC := r +1, 创世块genC := B0,头区块 headC := Br;

Difinity共识算法

Difinity调研——共识_第2张图片

Difinity 共识的主要包括以下内容:

  • Roles: Difinity 点对点网络是由一些可以广播消息的众多网络节点clients组成,client主要有三个功能,如上图三个圆圈所;
    • 参与分布式随机信号生产Random Beacon;
    • 生产区块 Block Maker;
    • 参与分布式公正 Notary;
  • Committee: 为了提高可扩展性,Random Beacon 和Notary 是有一个committee 进行的,当网络规模较小时,该committee可以包括所有的节点,在规模大的网络里,committee是一个随机选出的clients集合,每个r的Random Beacon输出会随机选出下一个r的committee。committee的size取决于一个叫错误概率计算的值;
  • Block Ranking: 每一个round开始的时候,Random Beacon会产生一个ξr,表示所有注册进来的节点的优先顺序,每个节点都会进行区块打包,但是被分配高的优先级的区块会优先被committee公正而上链。
  • Notarization: 一旦某个节点收到一个有效的随机信号ξr, 它就会进行区块打包,并将块发送给公正人notary;公正人会等一个特定的时间,即前面介绍到的BlockTime,在这个时间内,公证人会收集。
  • Decentralized Random Beacon: 去中心化的随机信号算法是由committee中全部的节点的共同产生的,这个beacon像一个可信的第三方。通过使用阈值签名机制,committee并不需要对每个输出进行拜占庭算法验证,从而提高了速度。
  • Decentralized Notary: 去中心化公正实际上就是一个Full Byzantine Agreement算法,但是该算法效率较低,故Difinity采用了一种乐观验证的方法,他认为通常情况下根据random beacon每个round只会有一个块被确认,所以在公正块时不进行交互确认,偶尔会出现分叉,Difinity的排序算法用来解决这种分叉,以使网络达到最终一致;

你可能感兴趣的:(原理解读,blockchain,consensus,blockchian,consensus)