SBFT: a Scalable decentralized trust infrastructure for blockchains
摘要:我们提出了SBFT,一个面向区块链的可扩展的去中心化信任基础设施。它实现了一种新的拜占庭故障容错算法,解决了两大挑战:可扩展性和去中心化
引言
两种趋势:一是恶意攻击日益猖獗;二是越来越多的重要基础设施,信息和业务正在被数字化并搬到线上。
解决方案:使用可扩展的去中心化信任基础设施
为什么要去中心化信任?
中心化解决方案能提供不错的性能,但往往有安全和社会福利担忧。从安全的角度看,中心化服务(可信方)存在单点故障。从经济的视角看,中心化服务产生价格垄断,阻碍创新。
比特币和以太坊如何去中心化信任?
比特币和以太坊用proof-of-work在恶意敌手存在的情况下提供状态机复制。去中心化信任意味着纵然系统中某些部分是恶意的,系统还是值得信任的。
工作量证明系统是如何去中心化的?
比特币和以太坊没有想象的那么去中心化。前20的挖矿联盟控制了90%的算力。作者评论到,这表明一个规模为20的拜占庭quorum系统可以以更低的资源成本实现更好的去中心化。这引出了本文的研究课题:我们可以为区块链提供一个基于BFT的去中心化解决方案吗?它可以横向扩展到上百个。
在许可型区块链中,如何去中心化信任?
在许可链场景中,拜占庭容错复制系统在提供可扩展的信任基础设施扮演重要角色。在联盟链模型中,一组参与者(比如一组金融机构)共同构建一个共享的信任基础设施。
对于非许可型区块链来讲,BFT重要吗?
除了是联盟链的关键技术,BFT正在成为公有链的重要技术组件。有大量的方案用BFT替换或者组合现有的工作量证明机制。基本思路是从一个节点池(可能上千个甚至更多)选举一个委员会(可能几十个或者上百个),让更小的委员会运行拜占庭容错和复制协议。
为什么又要设计一个新的BFT系统?
目标:能够工作在数以百计的备份节点同时支持执行以太坊智能合约。
出发点:PBFT
痛点:大多数PBFT系统要么支持小规模集群,要么使用激进批量方式或者两者都有。
SBFT:组合了多个方法能够扩展到200个备份节点。
使用收集器来减少通信量
与其给每个备份节点发送,每个备份节点向收集器发,然后收集器向所有备份节点广播。
Zyzzyva中使用这种模式减少通信量,它将收集器职责施加到了客户端身上。但SBFT中用轮转的方式将收集器的工作移到了备份节点,因为很多轻量级客户端连通性受限。此外,SBFT使用门限签名减少收集器消息规模和验证签名总的计算开销。SBFT还使用轮转收集器来减少负载以及使用c+1个收集器(不是1个)来提升容错并能够处理c个慢或者故障收集器。
使用门限签名将客户端通信量从O(n)降低到O(1)
所有以前的解决方案,包括PBFT、Zyzzyva等,每个客户端需要接收至少f+1=O(n)的消息,每一个消息。当备份节点和客户端规模很大的时候,这增加了繁重的开销。
在SBFT中,正常情况,每个客户端只需要一条消息,它包含请求应答的公钥签名。
SBFT利用现代的密码进展
SBFT使用BLS签名,它的签名长度只有33字节。在BLS上实现门限签名速度更快。
SBFT复制协议
todo
SBFT实现
采用C++语言实现,github仓库名:concord-bft