为了减少上述代价,有不少研究者都做出了卓越努力。例如,为了提高共识算法的性能,来自 Cornell 大学的研究者在 2016 年的 NDSI 提出了 Bitcoin-NG [2]。来自 MIT 和 Stanford 的研究者在 2019 年的 CCS 提出了 Prism [3],进一步对比特币进行扩容。此外,为了减少资源消耗,来自 MIT 的研究者在 2017 年 SOSP 上提出了基于 Proof-of-Stake 的 Algorand,移除了挖矿的消耗。 链式结构区块链带来的另一项革新就是链式的结构。每个区块都通过哈希跟前面的区块链接在一起,一直追溯到初始区块,形成一条绵延不绝的链。这个结构带来的一个好处就是当一个节点确认一个区块的时候,意味着同时确认了这个区块所在链上之前的所有区块。基于这种链式的结构,区块链中很容易采用一种「最长链」原则发布新的区块。比如在比特币中,由于网络问题和恶意攻击的存在,一个矿工可能会看到多条链,但矿工总是倾向于在最长的一条链上挖矿。即使挖矿挖到一半发现了一条比所在的链更长的链出现,也要切换到更长的链。「最长链」原则并不一定是非遵守不可,它并不会对协议安全造成严重影响,但当所有矿工都遵守这一原则的时候,每个矿工所能期望获得的收益最大。当然,也有例外,当一个矿工占有比较多的资源的时候(少于 50%),可以采取一种「自私挖矿」(selfish mining)[4] 的策略,违背「最长链」原则,谋求更高的收益。 区块链的链式结构也给研究传统 BFT 的研究者带来很大启发,很多为区块链量身定做的 BFT 协议开始涌现。这其中最著名的要数 Facebook 所采用的 LibraBFT [5] 共识协议。LibraBFT 基于 HotStuff [6],由来自 VMware 的研究者提出。HotSutff 通过采用区块链的链式结构改进了传统 BFT 的性能,使得协议能够部署在具有上百个节点的网络中。下面我简单说明一下这种链式结构的神奇之处。 首先,我们想象用传统的 BFT 协议实现区块链。由于在传统的 BFT 协议中共识是一次性(one-shot)的,我们需要对每个区块单独进行共识。例如在 PBFT 中,每个区块链都要经历 Propose,Prepare,Precommit,Commit 若干阶段。每个阶段都要经历一轮投票,似乎都在做相同的事情,存在很多消息冗余。如下图所示(来源 [1])。 (责任编辑:admin) |