区块链问题之bitcoin的可扩展性——bitcoin-ng

     作为区块链1.0的加密数字货币,bitcoin创造了可信价值互联网的概念。基于PoW共识协议,bitcoin成功实现了去中心化的记账功能,多方参与且不可篡改。同时,bitcoin中也存在一些重大问题,比如安全性(eg.51%攻击)、可扩展性(吞吐量)、mining power的中心化(mining pool)等。本文基于cornell大学Robbert van Renesse教授研究组在NSDI'16上发表的的文章 Bitcoin-NG: A Scalable Blockchain Protocol,对bitcoin的可扩展性问题作简要介绍。

      为了保证链的安全性,Nakamoto的PoW协议采用一cpu一票制,将block之间的间隔时间设为平均10mins,使恶意节点故意产生分叉发起双花攻击变得困难。这样也就导致一笔交易的确认时间平均为10mins,在某些线下交易中这样的等待时间将会不可接受,这也制约了bitcoin的实际应用范围。Bitcoin-NG针对这一问题,提出了基于bitcoin的可扩展协议,提高吞吐量的同时,保证链的安全性。

        bitcoin的可扩展性涉及到两个参数:block interval和block size。减小block interval,可以减小交易的平均确认时间,但同时降低了哈希计算难度,更易导致分叉;增大block size,可以增大系统的吞吐量,相同时间段处理更多的交易,但会导致block在网络中的传输延迟增大,同样更容易发生分叉。

区块链问题之bitcoin的可扩展性——bitcoin-ng

 

    区块链问题之bitcoin的可扩展性——bitcoin-ng

     bitcoin中每个block要参与两种核心工作:记账(交易的序列化)和竞争记账权。bitcoin-ng将将这两种工作解耦,使得记账和竞争记账权得以并行执行,消除了bitcoin中两次leader选举之间长时间的系统冻结。bitcoin-ng将block分为key block和micro-block,key block产生leader,执行下一个时间段的记账工作,micro-block包含交易数据,由上一个leader将其打包并链上bitcoin blockchain。同时,为了证明key block和micro-block的从属关系,使用了公私钥对进行加密,key block记录了公钥,microblock用对应的私钥加密签名,网络中其他节点可通过公钥验证micro-block广播者身份的正确性。

区块链问题之bitcoin的可扩展性——bitcoin-ng

    bitcoin-ng通过将leader election和contain transaction entry这两种任务分配到两种block中,实现了挖矿和交易记录的并行执行:每当miner计算出一个key block后,将其广播全网,其他miner验证其正确性后将其链上本地的chain,然后立即基于此key block挖矿,每来一个新的micro-block,节点根据上一个 key block中的公钥验证,通过后链上本地的chain,然后基于此micro-block继续挖矿,直到算出keyblock为止,将其广播全网。

     当然了,bitcoin-ng中也存在分叉和双花攻击问题,有兴趣的读者可以查看原文。

原文链接https://www.usenix.org/conference/nsdi16/technical-sessions/presentation/eyal