区块链社会:区块链助力国家治理能力现代化
上QQ阅读APP看书,第一时间看更新

3.2 比特币的扩展方案

针对比特币的设计机制,比特币性能的扩展方案可以从几个方面入手,比如增加区块大小或者修改共识和记账机制。但是,这些直观的扩展方案会导致老系统无法兼容,因而将会硬分叉产生新的比特币网络,这对于比特币的信仰者是不可接受的。因此下面所讨论的扩展方案都是不改变比特币基本机制的扩展方案。

3.2.1 隔离见证(Segregated Witness)

比特币的每一个交易记录的数据内容分成两个部分:交易数据和签名数据。其中签名数据占了交易记录的65%。隔离见证机制约定链上区块只存储交易记录中的交易数据,而签名数据将存储在附加的见证区块上。隔离见证机制实质上扩展了比特币区块的大小,并保持了与传统比特币网络的兼容性。

隔离见证机制同时也解决了比特币的交易延展性问题(Transaction Malleability)。

交易延展性,是指当交易被签名时,签名并没有覆盖交易中所有的数据(即发送者的公钥和签名数据),而交易中所有的数据又会被用来生成交易的哈希值作为该交易的唯一标识(Transaction ID)。如此,比特币网络中的节点能够改变发送的交易内容(通过改变发送者中的签名,因为在椭圆曲线算法中可能存在两个有效的签名,攻击者可以将一个有效的签名改成另一个,但仍然是有效的签名),导致该交易的哈希值也即交易的唯一标识发生变化 参考资料来源:https://blog.csdn.net/jason_cuijiahui/article/category/6926621。

注意,攻击者仅仅能够改变该哈希值,但不能改变交易中的其他数据。然而,这确实意味着,在任何情况下,接收一系列未确认交易的链是不安全的。因为未确认交易的唯一标识可能会发生变化,而随后交易中的发送者会依赖于先前交易的唯一标识来确认结算。即使交易得到了一个确认,也是不安全的,因为区块链可能会被重新调整。

简单地说,交易延展性,或者叫作“交易可锻性”,指的是比特币支付交易发出后、确认前可被修改(准确说是被伪造复制)。2014年,黑客利用了交易延展性,对当时最大的比特币交易所MT.GOX交易所(俗称“门头沟交易所”)发动攻击,导致交易所倒闭。本次攻击交易所丢失了85万个比特币,按当时的币价计算,这些损失的比特币价值近4.54亿美元。

黑客的攻击过程如下:

Step1:黑客自己有一个账号,在交易所开了一个账号,把自己的比特币转进去。

Step2:申请提现,交易所发起一笔转账交易。

Step3:这笔交易被广播到网络上,还未打包进区块链之前。黑客收到这笔交易,稍微更改了签名的格式,生成一笔新的交易广播出去,此时交易标识已经变了。

Step4:黑客的这笔新交易被区块链接收了。然后向交易所投诉,说他没收到钱。交易所根据自己生成的交易标识查询该笔交易,发现在网络上查询不到,会再次转账给黑客,导致同一笔钱被黑客提现了两次甚至多次。最终使交易所蒙受巨大损失。

隔离见证将签名数据与交易数据分离,使得交易标识具有唯一性和稳定性,解决了交易延展性问题。

3.2.2 侧链技术(Side Chain)

侧链技术让用户可以在比特币和其他功能不同的区块链之间相互转移货币。在这个场景下,比特币被称为主链,其他的区块链则被称为侧链。侧链上可以使用价值来自主链的货币,与主链的功能和特性都可以不同,在一定程度上提高了主链的处理能力,扩展了主链的应用。围绕主链可以搭建起一个业务形态丰富的侧链生态。

主链向侧链转移货币时,将这些货币在主链上锁定的方式包括:

1)多方联合保管:在主链上创建一个多方共管地址,转移到侧链的虚拟货币用这个地址锁定,被锁定的虚拟货币需要多数同意才能使用。

2)“矿工”保管:更容易围绕一个主链打造多个侧链应用,但是需要比特币的协议升级支持。

3)混合保管:主链使用多方共管,侧链使用矿工保管。

侧链技术的案例主要有三种:

1)RootStock(RSK):是一个建立在比特币区块链上的图灵完备的智能合约平台。

2)Liquid:为用户提供一种从交易所安全、即时转移资金的方式。Liquid将资金转移到一个共享的多重签名钱包地址,并通过一种拜占庭循环共识协议的区块链来处理交易。

3)扩展区块:是指在主链的区块之外并行地运行另一个侧链,但所有的矿工都要去验证这个侧链上的区块。因此可以将这些侧链区块看成主链的扩展区块。扩展区块可以提高交易处理能力或实现不容易在主链上推行的特性。

3.2.3 闪电网络(Lighting Networks)

闪电网络的设计思想则是将大量交易放到比特币区块链之外进行,只把关键环节放到链上进行确认。

闪电网络本质上是使用了哈希时间锁定智能合约来安全地进行零确认交易的一种机制。闪电网络是由微支付通道演进而来,有两种类型的交易合约:序列到期可撤销合约(Revocable Sequence Maturity Contract,RSMC),哈希时间锁定合约(Hashed Time Lock Contract,HTLC)。

RSMC的设计思路是交易双方共同出资创建一个双向微支付通道。交易双方先预存一部分资金到微支付通道里,初始情况下双方的分配方案等于预存的金额。每次发生交易,需要对交易后产生资金分配结果共同进行确认,同时签名把旧版本的分配方案作废。任何一方需要提现时,可以将他手里双方签署过的交易结果写到区块链网络中,从而被确认。

任何一方在任何时候都可以提现,提现时需要提供一个双方都签过名的资金分配方案。在一定时间内,如果另外一方拿出证明表明这个方案已经被作废了(非最新的交易结果),则资金罚没给质疑方;否则按照提出方的结果进行分配。罚没机制可以确保没人会故意拿一个旧的交易结果来提现。

另外,即使双方都确认了某次提现,首先提出提现一方的资金到账时间要晚于对方,这就鼓励大家尽量都在链外完成交易。通过RSMC,可以实现大量中间交易发生在链外。

HTLC可以保障任何两个人之间的转账都可以通过一条支付通道来完成。HTLC简单理解就是限时转账,通过智能合约,双方约定转账方先冻结一笔钱,并提供一个哈希值,如果在一定时间内有人能提出一个字符串,使得它哈希后的值跟已知值匹配(实际上意味着转账方授权了接收方来提现),则这笔钱转给接收方。通过HTLC可以在闪电网络任意节点之间安全转移价值而无须信任中介节点。

闪电网络整合RSMC和HTLC两种机制,可以让任意两个节点之间的交易都在链下完成。在整个交易中,智能合约起到了中介的重要角色,而区块链网络则确保最终的交易结果被确认。闪电网络通过将大量的交易放在链下完成,大大降低了主链负荷,从而让主链快如闪电。然而,从其工作原理分析,闪电网络也会带来一些问题:

如果通道中任一节点反应迟钝,用户可能要等上几个小时才能关闭支付通道,并通过另一种途径重新发送资金。

没有离线支付:用户无法支付不在线的人。

不适合大额支付:即使一条经由各种支付通道的路线可能存在,但通道中其他节点多重签名钱包中的资金可能不足以转移大笔资金。

集中化:闪电网络可能会鼓励支付枢纽的集中化(类似于矿工集中化)。闪电网络包含百万级别的支付通道,通道内锁定了大量的资金,特别是大的中介人通道容易成为系统性攻击的目标。

没有一种技术可以解决所有问题,虽然闪电网络仍然存在一些问题,但不可否认闪电网络是一个创新性的设计。对于闪电网络的研究仍在继续,相信未来闪电网络的应用会更加完善。


[1] 参考资料来源:https://blog.csdn.net/jason_cuijiahui/article/category/6926621。