玩币族移动版

玩币族首页 > 币圈百科 >

利用基于联合签名的强共识协议增强比特币安全和性能

  本周研读的论文是发表于USENIX2016会议上的“Enhancing Bitcoin Security and Performance with Strong Consistency via Collective Signing”,文章作者是Nicolas Gailly等人。

  前言

  不同于传统拥有中心授权机构管理的货币,比特币是一种分布式加密货币,提供开放式接入和自治式管理。比特币建立在点对点网络上,无需中介机构用户就可以提交待验证的交易给系统。网络上的特殊节点——矿工,收集交易请求,解决计算难题(工作量证明)来达成共识,并将交易信息以区块的形式添加到分布式公共账本中,称之为区块链。

  尽管比特币在很多方面展示了其巨大潜力,但其中也存在不足,如交易确认需要用户等待十分钟之久,而且只提供概率性保证。此外,传统区块链还面临严重的可扩展障碍,系统能够处理的最大交易数目已经被两个参数限制了:区块大小和区块间隔。增加区块大小能够改善吞吐量,但是会导致大区块需要更长的时间在网络上传输。减少区块间隔可以减少延迟,但是系统会有较高概率出现分叉,导致系统不稳定。而本文提出的强共识协议具有以下好处:

  1.所有矿工立即验证区块的有效性,而不用浪费算力解决分叉问题;

  2.客户端无需等待不必要的时间用于交易被确认,交易出现在区块的同时即刻确认完成。

  3.提供前向安全性,交易被添加到区块中,其内容就无法篡改。

  本文提出了ByzCoin,一种基于强共识协议的加密货币,ByzCoin建立在成熟的实用拜占庭错误容忍算法(PBFT)之上,并引入联合签名方案来减小PBFT轮次的开销和轻量级客户端验证交易请求的开销。

  贡献 本文的主要贡献如下:

  1.使用联合签名将BFT协议扩展成为大型共识协议,并使节点能够高效验证交易。

  2.首次提出能够支持比特币中工作量证明的基于动态成员关系的拜占庭共识协议。

  3.实验证明本文的强共识协议能够增加比特币两个数量级的吞吐量,降低交易确认延迟至1分钟以内。

  背景
  1

  Bitcoin-NG是一个基于比特币信任模型的可扩展的区块链协议,仅受限于网络的传输延时和个人节点的处理能力。Bitcoin-NG通过将比特币的区块链操作分解为两部分来实现这个性能改善:首领选择(leader election)和交易序列化(transaction serialization)。它将时间划分为新片段,每一个片段都有单独的首领。在比特币中,首领选择是随意执行的,且不经常发生。一旦选择好首领,它就有资格序列化交易,直到一个新的首领出现,标记在前一个片段的尾部。在比特币中,首领负责序列化历史记录,使得首领选择之间的持续时间长时间被冻结(下一个首领出现时上一个首领处理的交易才能得到验证)。相反,Bitcoin-NG中的首领选择是向前进行的,确保系统能够持续处理交易。

  2

  拜占庭将军问题是一个共识问题, 首先由Leslie Lamport与另外两人在1982年提出,被称为The Byzantine Generals Problem或者Byzantine Failure。核心描述是距离遥远的部队之中可能有叛徒,却要保证进攻一致,由此引申到计算领域,发展成了一种容错理论。Pease证明了能容忍f个错误节点却仍能达成共识,总共至少需要3f+1个参与节点。拜占庭错误容忍算法PBFT是弱同步网络环境(如因特网)下首个对拜占庭将军问题的高效解决方案。

  3

  可扩展的联合签名方案CoSi使得authority或leader请求的状态可以被公开验证和被witness组成的分布式群组联合签名。本文采用的联合签名方案来自于PKI系统中证书授权的分散证人(witness)联合签名方案(具体可参看9月26日公众号文章)。

  方案

  ByzCoin使用成员关系证明取代工作量证明,如图1,首先选定窗口大小w,然后选取最近挖矿成功的w个矿工作为群组成员,窗口会随着新矿工的出现而向前移动,总成员保持w不变。群组成员构成联合签名的所有组成员,最新出现的矿工成为leader节点。

利用基于联合签名的强共识协议增强比特币安全和性能

  图1 blokchain中的窗口选择

  该协议将时间划分为片段。每一个片段中,都有一个单独的首领来负责序列化状态机器转换。

  关键区块(如图2方框):用于首领选择

  微区块(如图2圆圈):包含账本记录

  一旦一个节点生成了一个关键区块,它将变为首领。作为首领,该节点被允许以固定速率来生成微区块。一个微区块包含账本记录和数据头。数据头包含上一个区块的引用、目前的GTM时间、账本记录的哈希值以及数据头的签名

利用基于联合签名的强共识协议增强比特币安全和性能

  图2 关键区块和微区块

  PBFT算法:

  模型采取了Client -> Primary -> Backups的流程,即Client先将请求发给Primary,再由Primary通过一个三阶段协议广播给Backups。其中replicas节点表示窗口内的所有节点,replicas分为primary和backup两类。

  Client会发送一系列请求给各个replicas节点来执行相应的操作,BFT算法保证所有正常的replicas节点执行相同序列的操作。backup机制下有一个叫view的概念,在一个view里,一个replica会是主节点(primary),其余的replicas都叫备份节点(backups)。主节点负责将来自Client的请求给排好序,然后按序发送给备份节点。出现异常情况(序列合法性,timeout)时,这些备份节点就会触发view change协议来选举出新的主节点。当主节点挂掉后就触发了view change协议。需要确保在新的view中如何来延续上一个view最终的状态。图3为方案的overview,当前时间段的所有微区块(圆圈)分别隶属于关键区块(方框),窗口内关键区块的产生者——矿工组成联合签名的成员,对微区块中的交易信息进行签名。

利用基于联合签名的强共识协议增强比特币安全和性能

  图3 方案Overview

  总结

  本文亮点

  设计了基于Bitcoin-NG,PBFT和联合签名方案的ByzCoin方案,利用选定窗口机制和成员关系证明方式解决了区块链协议中不适合于PBFT的要素:开放的成员关系;大规模可扩展的节点;工作量证明的区块冲突等。并且结合了Bitcoin-NG中首领选择和交易序列化相分离的特性,及联合签名中树形结构的特性,大大提高交易的吞吐量,将交易确认延迟由10分钟降低到15-20秒以内。

知识: 比特币安全 比特币共识协议