技术指南 | 软硬协同的共识算法设计——以FastBFT为例

2021-01-21 11:56:58 1500

导 读


我们知道,相比公有链,联盟链中使用的拜占庭容错(BFT)算法能够有效地提升区块链的交易处理能力。但是,传统的BFT算法,例如PBFT[1]算法,为了容忍f个拜占庭错误节点,需要保证系统中的节点总数至少是3f+1。与之相比,RAFT[2]等能容忍f个停机错误(CFT)的共识算法仅需要2f+1个节点就能正常运作。那么我们不禁会去想,能不能通过某种方法使得一个拜占庭系统也只需要总共2f+1个节点就能够抵御拜占庭攻击呢?

幸运的是,这样的方法是存在的。我们可以借助可信硬件,消除拜占庭节点的二义性(equivocation),从而仅需要2f+1个节点,就能有效地防止拜占庭攻击[3]。

本文以FastBFT[4]为例,介绍FastBFT是如何借助可信硬件,取得比传统BFT算法更好的性能的。


可信硬件


FastBFT算法使用的可信硬件是IntelSGX (Software Guard Extensions)[5],Intel第六代CPU之后的一组扩展指令集。目前,很多个人电脑和服务器都可以支持SGX相关的功能。在SGX的编程模型中,一个程序分为可信代码(enclave)和不可信代码。SGX保证了在enclave中运行的代码和数据不能被其他程序(包括操作系统和虚拟机监视器)访问和篡改。并且,通过enclave写入到磁盘的数据会被加密,只有该enclave能够读取。不可信代码只能调用enclave提供的有限的可信函数接口来改变enclave的内部状态,获取enclave的内部信息。

因此,FastBFT的代码也分为了两部分,如下图所示:

声明:所有在本站发表的文章,本站都具有最终编辑权。本站全部作品均系微算力原创或来自网络转载,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责,所产生的纠纷与本站无关。如涉及作品内容、版权和其它问题,请尽快与本站联系。

相关推荐

  • 微信:aspcool
  • QQ:580076
  • 手机:18992859886
  • 工作时间:9:00~18:00(周一至周五)