硬核干货|软硬协同的共识算法设计

本文介绍了FastBFT共识算法如何利用Intel SGX可信硬件提升区块链性能,通过减少节点数量和轻量级密钥分享实现高效消息聚合,降低网络压力,并通过节点类型划分减少通信。FastBFT在保证安全性的同时显著提高了共识效率。
摘要由CSDN通过智能技术生成

导 读

我们知道,相比公有链,联盟链中使用的拜占庭容错(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的代码也分为了两部分,如下图所示:
在这里插入图片描述
其中,FastBFT不可信代码负责处理共识消息的收发,以及共识状态的转换。而FastBFT enclave代码则负责处理密钥生成,加解密,安全信道的建立以及共识状态变量的维护。

节点类型

与PBFT算法类似,FastBFT算法也有主节点和从节点之分。不同之处在于,FastBFT算法将从节点进一步划分为f个活跃(active)节点和f个被动(passive)节点。在常规流程中,FastBFT算法只需要f+1个活跃节点(包括主节点)参与共识的消息收发。被动节点仅需要处理来自主节点的Reply消息,更新自身的状态。只有在发生错误时,这f个被动节点才需要参与到共识流程中来。
可信变量与函数接口

在FastBFT中,每个节点的enclave都有自己的公私钥对,并记录了其他节点的公钥。除此以外,每个节点还需要维护并持久化以下变量:计数器值c,view值v,活跃节点列表及会话密钥{Si,ki}。其中c和

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值