KRAFT——基于Raft的改进提升区块链效率

  • 介绍
    • 现有共识机制:PoW(工作量)、PoS(股份证明)
    • 现有共识算法:PBFT\Raft。现阶段私有区块链用零拜占庭容忍算法,交易只有当被区块链成员认证时候合法
    • 用Kademlia实现K-Bucket,建立KRaft算法
  • KRaft共识算法
    • Kademlia协议:哈希表分类技术,根据XOR操作计算距离建立一个基于DHT(分布式哈希表)的拓扑结构
      • 算法开始运行:
        • 随机选择一个节点作为领导者,然后根据K-Bucket开始建立一个节点,确保K-Bucket是在节点网络中执行而且动态维护的,来保证节点添加不会造成额外负担
      • 四个通信协议:
        • PING:看节点是否在线
        • PONG:和PING保持一致
        • FINDNODE:询问一个节点和目标节点ID是否相似
        • NEIGHBORS:询问在K-Bucket中和目标节点ID相似的节点
    • 领导者选举:通过投票随机选择节点
      • Table:称以领导者为中心的K-Bucket,其中的节点是参与者,在节点交流中有高优先级
      • K value根据节点规模动态确定,尽管增加K值提升领导者选举的随机性,但会减弱算法多节点并行。K值太小选举随机性不能保证,因为选举依赖于Table

      • Raft中的timeout, RequestVote转换成KRaft中的imeout, Recognition。
        • 认证过程是当参与者发现领导者crash,产生一个随机数I(当下时间戳加上随机数(150~300ms),时间戳保证发现领导者crash越快,越容易被选。随机数回避了发生和Raft一样发生分裂投票的可能性)I值小的是领导者节点
      • log复制过程优先复制Table中的节点来保证候选节点的最优性和正确性,leader crash则log回滚
      • t=True表示所有参与节点已经接接收了AppendEntries

      • doRefresh () :确保节点在Table(根据Kademlia协议建立起的节点关系)并且Tables online
    • 共识过程:
      • 基于Kademlia的高效日志复制逻辑解决并行和领导者过载难题:
        • leader节点收到Table中所有节点的AppendEntriesResponse消息后,Table中的节点就可以拥有转发消息的权限,KRaft将单节点多线程并发进程转变为多节点并行进程,提高信息转发效率,当leader收到超过半数节点的AppendEntriesResponse消息时,证明已达成共识
  • 算法分析:
    • 安全性:
      • 选举安全:执行KRaft的leader选举是由表中的节点随机选择的,在KRaft中,保留了AppendEntries可讲log信息发送给节点
      • leader完整性和只可添加性:KRaft的Leader选举和日志副本复制过程确保提交到区块链的日志必须出现在Leader中。 一旦确认的交易被永久存储在区块链中
      • Log Entry:沿用 Raft里log结构,包括指标和术语
      • State Machine:保留了状态机提交51%的前提,KRaft将提交状态机进程转换为leader写事务到区块链
    • 时效性:算法保证了时间间隔远大于消息延迟,避免了因消息延迟而产生的不必要的leader选举

猜你喜欢

转载自blog.csdn.net/qq_56061892/article/details/126135382
今日推荐