首先,对于hotstuff形象理解可以参照哔哩哔哩:https://www.bilibili.com/video/BV1wJ411j7PL/?spm_id_from=333.788.recommend_more_video.5,这是hotstuff创始人的一次演讲。
https://mhy12345.xyz/hotstuff-bft-consensus-in-the-lens-of-blockchain/这个是网友对于hotstuff: BFT Consensus in the Lens of Blockchain论文翻译的原文,都可以做参考。
Hotstuff主要将复杂性降低到o(n),且改善其活性。由于该算法属于部分异步共识算法,所以为基于主节点的BFT,部分异步中,需要领袖,安全性、一致性才能有所保障。
该共识协议的目标是在去中心化的网络中就系统的状态达成统一的认识,以便所有的(诚实)节点统一从一个状态迁移到另一个状态。在PBFT中采用了两轮2/3投票来完成这个目标,而在HotStuff 采用了3轮2/3投票来完成这个目标。
从该算法中提出来了一个quorum的共识协议范式:“Quorum证书”。主要提高的两个线性复杂度和响应度。对于Quorum Certificate(简称为QC)。QC的一个过程就是,当有超过2/3的节点达成共识,则完成一轮QC。
进行两轮response,不清楚恶意节点的情况下,共有2f+1节点,其中正常节点至少有f+1个,两轮过后,将会有2f+2个回应,这个回应中至少是有一个节点两次都有回应,说明该节点一定是正常节点。以此,该节点可以把状态机的重要信息进行传递。
进入正题,hotstuff主要过程如下:
每个视图内都有一个唯一的主节点负责提案、收集和转发消息并生成QC,整个过程包括4个阶段:准备阶段(PREPARE)、预提交阶段(PRE-COMMIT)、提交阶段(COMMIT)、决定阶段(DECIDE),主节点提交(达成共识)某个分支,在PREPARE、PRE-COMMIT、COMMIT三个阶段收集quorum个共识节点带签名的投票消息,利用门限签名合成一个QC,然后广播给其他节点。
当有客户端要有提议分发投票时,需经几轮投票,在下图中的紫色部分表示正在进行决议的节点,而带有QC的点表示的是该块已经通过一轮QC,b6为最新的QC决议。而能连续获得QC票的最新的将是最后偏好的决议节点。
其投票规则为2:
若在经过多轮QC后,在上面讲到的每一QC后都会有一个节点是存在的信息,进行继承,那就可以直接再确定b3、b4已经执行完毕且已结束共识。