谭宜勇区块链
⑴ 什么是混合共识算法
转载泛融科技创始人谭宜勇博士的回答:
共识是区块链技术的核心算法,也基本上决定了该链的效率。区块是机器之间所需要共识的内容。账户层面,通过OLog(n)的Merkle验证树,可以快速定位出被篡改的数据,遍历StateTree安全获取用户余额,防止双花的出现。
区块链通过共识算法,让机器之间达成信任的基础,从实践上就是去解决拜占庭将军问题。BFT(拜占庭将军容错)里面,3F+1<N可以说是重要的共识理论,在实践中,BFT有多种变种算法:PBFT、RBFT、Q/U、HQ、Zyzzyva、ABsTRACTs、Aardvark、Adapt、A2M-PBFT-EAandMinBFT等等。这些算法,都根据不同设定的场景,从消息的广播方式、节点网络拓扑、硬件配置等方面进行了效率的优化。共识目标是达成共识,最终的解决方案就是投票(Vote),无论是BFT、PoW、PoS、DPoS……投票就有点模拟人类的生产模式,在区块链里面,是机器去投票。BFT类似于4PC(四段式)提交,从PrePrepare,PrePare,Commit,Reply四个阶段。每个阶段都要把消息广播给网络中的所有节点,参与下一个阶段的投票。
BFT最大的问题是节点之间的消息广播,会特别多。而且必须事先确定本次消息投票的节点基数。结合BFT投票性能差的问题,我们提出了一种方案,让BFT仅仅参与很少的投票过程,例如就是节点基数上。假定有100个备选节点,如何选出21个节点出来?每个节点记多少个块?这100个节点的能否达到了当前最高的高度,网络延迟等性能能否达标?这些信息,实际上跟我们交易没有任何关系。但是又会影响到整个链的性能。我们用PBFT去解决节点基数问题,为后续的交易广播和区块投票,提供了更高更高效的基础设施。在这一层,大家都是平等的,没有权益的参与。
下一步,Raft是一个Leader-Follow的算法,每一轮Term会随机选出一个Leader来,负责交易的收集和广播,其他节点Follow主节点的信息。在垂直的区块链3.0应用中,对链上的VM性能要求更高,而不是简单的栈式计算(EVM)了。例如游戏的主服务器逻辑放,如果每个节点都参与VM的计算,会造成大量的资源浪费。大数据处理系统里面,Raft可以去解决分工问题,做一个工作的调度者,可以让任务公平、安全的分发到不同的节点机器上。这样好处是可以通过几台机器,构建一个超级机器。Raft共识在我们链中,负责交易的验证广播分发,这是成块的基础,如果交易都是错误的,那就无需要进入区块了。
最后我们结合了DPoS共识算法,随机生成当前的轮值节点,对已验证过的交易进行打包和区块头的广播。区块仅仅是个头部验证信息而已,可以快速的到达每台机器。关于轮值的节点,我们认为一个节点每次就记一次块。出块速度由网络较好的节点决定,由他们构成了超级节点记账模式。