APP下载

改进Fast-HotStuff 区块链共识算法

2021-08-20李启南薛志浩张学军

计算机工程 2021年8期

李启南,薛志浩,张学军

(兰州交通大学电子与信息工程学院,兰州 730070)

0 概述

共识算法根据容错类型可分为故障容错(Crash Fault Tolerance,CFT)共识算法和拜占庭容错(Byzantine Fault Tolerance,BFT)共识算法[1]。故障容错共识算法主要采用Paxos[2]及Raft[3]等,只能容忍节点发生宕机等错误,若存在恶意节点,则无法保证诚实节点数据的一致性。拜占庭容错共识算法的目的是解决拜占庭将军问题[4],即使系统中存在恶意节点(不超过一定比例),依旧能够保证诚实节点数据的一致性。拜占庭将军问题最早由LAMPORT 等人在1982 年提出,并给出了口头协议和书面协议2 种拜占庭容错算法,但其复杂度为指数级,在实际中并不实用。1999 年,LISCOV 等[5]提出实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法,通过两轮投票的方式将其复杂度降至多项式级,但是,拜占庭容错应用场景较少,因此,该算法未获得学术界的广泛关注。2008 年,中本聪提出比特币的概念,随着数字货币及其底层区块链技术的逐渐兴起,拜占庭容错算法逐渐受到重视。

目前,区块链中常用的拜占庭容错算法可分为弱一致性(又称最终一致性)算法和强一致性算法[6]。弱一致性算法允许数据在某一时间点可以存在不一致的情况,其典型代表包括工作量证明(Proof of Work,PoW)[7]、权益证明(Proof of Stack,PoS)[8]和委托权益证明(Delegate Proof of Stack,DPoS)[9]等,由于需要使用最长链原则解决分叉问题,因此一笔交易发出后并不能确保一定能够成功,这在商用区块链场景下是不可接受的,因此,弱一致性算法在公有链中应用较为广泛,在联盟链中应用较少。强一致性算法则在任何情况下都不允许区块链出现分叉情况,一个区块一旦添加便不会被撤销,其更加适用于商用联盟链场景。……

登录APP查看全文