Qtum量子链研究院:闪电网络(上)

Qtum量子链研究院即日起将会定期进行技术课程,每期一个主题,在这里我们用最专业的视角解读当下区块链技术热点话题。第一期的主题:闪电网络,早在2017年11月Qtum便先一步引入闪电网络,详情见《基于Qtum量子链的闪电网络功能简介及测试》

近月以来,比特币网络的交易费一路飙升,一度超过 30 美元达到历史新高,但在 2018 年,一个新的扩展解决方案可能会拯救数字货币王国。

闪电网络

当区块大小限制为1MB时,比特币网络只支持全网每秒7笔左右的交易速度,远低于传统的金融交易系统。同时,每10分钟一个区块,交易要安全的确认需要至少6个区块,使得交易确认缓慢。

为了提升比特币网络的性能,社区提出了链上扩容和链下扩容等不同方案。链上扩容主要是通过增大区块大小,使每个区块可以包含更多的交易数,从而提高交易容量;链下扩容方案就是闪电网络,其设计思想则是将大量交易放到比特币区块链之外进行,只把关键环节放到链上进行确认。闪电网络的设计最早于2015年2月在论文《The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments》中提出。

闪电网络主要通过引入智能合约的思想来完善链下的交易渠道,它基于微支付通道演进而来,创造性的设计了两种类型的交易合约:Revocable Sequence Maturity Contract(RSMC,序列到期可撤销合约)和Hashed Timelock Contract (HTLC,哈希时间锁定合约)。RSMC解决了链下交易的确认问题,HTLC解决了支付通道的问题。在这里上篇我们只讲一种交易合约——RSMC。

 闪电网络——RSMC

RSMC(Revocable Sequence Maturity Contract)

RSMC的设计思路是交易双方共同出资以创建一个双向微支付通道。

下面以Alice和Bob为例解释RSMC。

创建RSMC

假设Alice和Bob是合作方,经常有比特币交易往来,所以他们决定各拿出0.5BTC放入通道中,便于业务往来。

下图为RSMC交易的结构图,左侧为Alice的视角,右侧为Bob的视角,中间Funding Tx为共同可见。图中带<>号的签名表示已经签名成功,不带<>号表示待签名。

RSMC交易的结构图

1.双方各拿出0.5BTC,构建Funding Tx(资金池),输出为Alice和Bob的2/2多重签名。此时,Funding Tx未签名,不能广播进主链。

2.Alice构造Commitment Tx:C1a(Commitment Tx 1a)和RD1a(Revocable Delivery 1a),并交给Bob签名。C1a的第一个输出为多重签名地址,Alice的另一把私钥Alice2和Bob的2/2多重签名,第二个输出为Bob 0.5BTC。

3.RD1a为C1a第一个输出的花费交易,输出给Alice0.5BTC,但此类型交易带有sequence,作用是阻止当前交易进块,只有前向交易有sequence个确认时才能进块

4. Bob构造Commitment Tx:C1b(Commitment Tx 1b)和RD1b(Revocable Delivery 1b),并交给Alice签名。结构与C1a、RD1a是对称关系。

5. Bob对C1a和RD1a进行签名,并将签名给Alice;同理,Alice对C1b和RD1b签名,完成后给Bob。此时,由于并未对Funding Tx进行签名,任何一方均无法作恶,任何一方也不会有任何损失。

6. 双方均完成对commitment Tx的签名并交换后,各自再对Funding Tx进行签名,并交换。此时,Funding Tx是完整的交易,可以广播进入主链。

上述就是创建RSMC的全部过程。

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

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

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

交易更新

Alice和Bob各自拥有0.5BTC的余额,此时Alice从Bob处购买了一件商品,价格为0.1BTC,那么余额应该变为Alice 0.4BTC,Bob 0.6BTC。于是创建新的Commitment Tx,对于Alice来说是C2a 和RD2a,对于Bob来说是C2b和RD2b,过程与上面类似。

交易更新时的交易结构

此时两个状态均是有效的,那么最核心的问题来了,因为C1a和C1b已经是处理过的交易了,C2a和C2b才是最新交易状态,如何才能彻底废弃掉C1a和C1b呢?RSMC采用了一个非常巧妙的方法,在C1a的第一个输出中,采用了Alice2和Bob的多重签名,Alice将Alice2的私钥交给Bob,即表示Alice放弃C1a,承认C2a。同样的逻辑,Bob将Bob2的私钥交给Alice,即表示Bob放弃C2a,承认C2b。

交易更新时的多重签名

Alice交出Alice2的私钥给Bob,那么Bob就可以修改RD1a的输出,将RD1a中输出给Alice的BTC输出给他自己,形成新的交易BR1a(Breach Remedy 1a)。若Alice破坏合约,在存在C2a的情况下依然广播出C1a,那么Alice的惩罚就是失去她全部的币。Alice交出Alice2的私钥,或者对交易BR1a进行签名,两者是等同的,都是对C1a的放弃。反之亦然,Bob交出Bob2的私钥给Alice即意味放弃C1b,而仅能认可C2b。

引入sequence的目的是,阻止后续交易(RD1a)进入主链,给出一个实施惩罚窗口期,当发现对方破坏合约时,可以有1000个块确认的时间去实施惩罚交易,即广播BR1a代替RD1a。若错过1000个块时间窗口,则无法再实施惩罚了(RD1a进入主链了)。

交易关闭

关闭RSMC,直接按照最终的余额构造出一个Commitment TX即可,例如输出为Alice 0.1BTC,Bob 0.9BTC,无需再设置多重签名,构造惩罚交易等。

明日预告:闪电网络(下)——Hashed Timelock Contract (HTLC,哈希时间锁定合约)

猜你喜欢

转载自blog.csdn.net/weixin_42667079/article/details/82871108