权威证明共识

该章节描述权威证明共识及其在 GAChain 平台中的实现。

什么是权威证明共识

在区块链平台中,现有的共识机制可以分为免许可区块链(比特币,以太坊)和许可区块链(以太坊私链)。

但是 GAChain 是介于这两者之间的一种新型的共识机制,即主节点采用的是经由投票机制的“许可区块链共识”,而链上生态及其子节点采用“免许可区块链共识”,但总得来说,政务链GAChain属于许可区块链。

在区块链中,所有节点都经过预先验证。使用这种共识机制的优点除了其他优势外,还能提高交易率。这种共识机制之一就是权威证明Proof-Of-Authority(PoA)

权威证明Proof-of-Authority (PoA) 是一种新的共识算法,可提供高性能和容错性。在PoA中,生成新区块的权利被授予已经证明有权产生区块的节点,这样的节点必须通过初步验证。

PoA共识优势

与工作量证明Proof-of-Work(PoW)和权益证明Proof-of-Stake(PoS)共识机制相比,PoA具有以下几点优势:

  • 不需要高性能硬件,与PoW共识相比,PoA共识不要求节点花费计算资源来解决复杂的数学逻辑;
  • 生成新区块的时间间隔可预测,对于PoW和PoS共识,这个时间会有所不同;
  • 高交易率,授权的网络节点按指定的时间间隔按顺序生成块,这提高了交易验证的速度;
  • 容忍被攻击和恶意节点,只要51%的节点不受攻击。GAChain 实现了节点的禁止和撤销区块生成权的机制。

PoA共识常见攻击手段

拒绝服务攻击

攻击者向目标网络节点发送大量交易和区块,试图中断节点活动使其不可用。

PoA机制可以抵御这种攻击:

  • 由于网络节点已预先通过身份验证,因此只能为可承受DoS攻击的节点授予区块生成权限;
  • 如果某个验证节点在一段时间内不可用,则可以将其从验证节点列表中排除。

51%攻击

在PoA共识中,51%的攻击要求攻击者获得对51%的网络节点的控制权。这与攻击者需要获得51%的网络计算能力的Proof-of-Work共识的51%攻击不同。获得许可区块链网络中的节点的控制权比获得计算能力要困难得多。

例如,在PoW共识网络中,攻击者可以增加受控网络段的计算能力(性能),从而增加受控百分比。这对于PoA共识没有意义,因为节点的计算能力对区块链网络决策没有影响。

GAChain 实现PoA共识

验证节点

在 GAChain 平台,只有验证节点才有权产生新区块,这些节点维护区块链网络和分布式账本。

验证节点列表保存在区块链注册表中。此列表中的节点顺序决定了节点生成新区块的顺序。

领导节点

以下公式确定当前 领导节点(leader node),即必须在当前时间生成新区块的节点。

leader = ((time - first) / step) % nodes
leader

当前领导节点。

time

当前时间(UNIX)。

first

创始区块生成时间 (UNIX)。

step

区块生成间隔中的秒数。

nodes

节点总数量。

生成新区块

新区块由当前时间间隔的 领导节点 生成。在每个时间间隔,领导节点从验证节点列表传递到下一个验证节点。

../_images/block-generation.png

新区块生成步骤

主要步骤如下:

  1. 从节点的交易队列中收集所有新交易;
  2. 逐个执行交易。无效或无法执行的交易将被拒绝;
  3. 检查是否符合 区块生成限制范围
  4. 生成具有有效交易的新区块,并使用验证节点的私钥(ECDSA算法)对其区块进行签名;
  5. 将该区块发送到其他验证节点。

验证新区块

其他验证节点验证步骤:

  1. 接收并验证新区块:

    • 新区块是否由当前时间间隔的领导节点生成;
    • 当前时间间隔的领导节点没有生成其他区块;
    • 新区块被正确签名。
  2. 逐个执行区块中的交易。检查交易是否成功执行并且在 区块生成限制范围 内。

  3. 接受或拒绝该区块,具体取决于上一步:

    • 如果区块验证成功,则将新区块添加到当前节点的区块链中;
    • 如果区块验证失败,则拒绝该区块,标记该区块并发送 坏区块 交易;
    • 如果生成坏区块的验证节点继续生成该类坏区块,则可以从验证节点列表中禁用或排除该验证节点。

分叉

分叉(fork) 是区块链的替代版本。分叉包含一个或多个独立于区块链其余部分生成的区块。

分叉通常在发生网络节点的一部分不同步,影响分叉概率的因素是高网络延迟,有意或无意的时间限制违规,节点的系统时间不同步。如果网络节点具有显着的地理分布,则必须增加区块生成间隔。

通过遵循最长的区块链规则来解析分叉。当检测到两个版本的区块链时,验证节点将回滚较短版本并接受较长版本。

../_images/block-fork-resolution.png