比特币Lightning网络技术分析(一)

比特币Lightning网络技术本身提出来比较早,但是最近才兴起起来,因为比特币网络实在是太不堪重负了,大量的交易等待被打包,高昂的交易费用使得比特币扩容方案的选择越来越紧迫。Lightning网络就是扩容方案的一种,采用链下交易的形式,只是开始和结束需要在链上广播交易,其他的交易完全在链下实现,避免了主链上交易确认的拥堵,可以实现快速确认,这也就是闪电网络名称的由来,非常适合于大量小额交易的场景。
现在来聊聊Lightning网络的技术实现,先请出我们的主人公Alice和Bob,大家都喜欢用这两个人名,我也不免俗了。

第一步

Alice和Bob在需要交易之前先要各自拿出一笔钱来放进一个共同的多重签名账户,这个账户一般的说法叫channel(通道),通道里是交易保证金,保证双方都有钱进行交易,不会开空头支票,另外还约束了交易金额的范围。这个多重签名是2/2多重签名账户,也就是必须Alice和Bob两个人同时签名才可以动用这笔账户的钱。后面所用到的账户很多都是这样的2/2多重签名账户,我在这里叫联名账户。


初始状态

这里假设Alice和Bob各出0.5个BTC放进这个联名账户,当然不一定是各0.5,金额可以双方协商而定。
这个过程是需要在比特币主链上做的,相当于双方先放了一部分押金在那里。

第二步

Alice和Bob各拿出一张白纸来拟定链下交易的合约,内容是什么呢?先来看Alice写的:


Alice的合约1

这张纸上写了两笔交易

  • 第一笔是从Alice & Bob联名账户转到 1. Alice2 & Bob联名账户和2. Bob账户。注意这里出现了个Alice2,其实这也是Alice本人,只是她新创建了个账号,以后每个合约都会创建一个新的账号。Alice2 & Bob联名账户是个临时账户,这个账户的钱最终是要转给Alice本人的,这个可以从第二笔交易中看到。
  • 第二笔交易是从Alice2 & Bob联名账户转到Alice账户,但是下面有个sequence 1000是什么?这个是表示延迟1000个块才打包这笔交易,也就是Alice这笔0.5BTC的到账相对于第一步交易中Bob的到账要晚得多。为什么会有这么奇怪的交易呢?因为Lightning网络为了鼓励大家多用这种方式交易,约定谁先终止通道,也就是集齐两个签名,谁的钱就要后到账,另外还有一个原因是防止一方作弊,这个后面会谈到。
    从这个合约上来看都是对方占好处,我方吃亏,为什么要这样呢?因为等下要拿给对方签名的,没有好处对方怎么肯签名?不过也问题不大,因为对方也要拟定一个相反的合约给我来签名。
    Alice拟定好这个合约以后将这份合约交给Bob签名,Bob签好名以后再还给Alice,现在这份合约变成了:


    Alice的合约1(Bob签名后)

    Alice签名仍然空着,因为她一旦签名就意味着两个签名被集齐,通道被关闭,交易会在主链上广播,这个应该是最后一步做的,也就是全部交易都做完的情况下,一方签名来关闭通道。
    而Bob也会拟定一份合约,不过和Alice正好相反,并给Alice签名,签好名的合约为:


    Bob的合约1(Alice签名后)

第三步

以上是初始状态,下面开始正式交易,交易前还需要做一件事,那就是Alice把Alice2密钥交给Bob,Bob将Bob2的密钥交给Alice,以后每次交易前都需要这么做!
这个是防止一方作弊的!很重要!
假设Bob卖给Alice一部iphone,Alice付给Bob0.1BTC,那么两人又各拿出一张白纸来拟定新的合约,Alice拟好合约以后交给Bob签名,新合约如下:


Alice的合约2(Bob签名后)

看起来和合约1差不多,只是金额有变化。Bob也会拟定一份合约2,并给Alice签名。
既然合约2出现了,那么合约1就要给废止了,因为合约2比合约1新,而且相互冲突。试想一下Alice拿着新iphone,又拿着合约1去主链上广播,那么她账户的钱没变,还白得一部iphone,Bob岂不是亏死?
那么怎么废止合约1呢?不要告诉我当场撕掉合约1那张纸,现在是高科技时代,复制备份一份又有何难。
从技术角度要怎么解决这个问题?那就需要用到上面交换的密钥了。
如果Alice拿到iphone后拿着合约1来签名,那么合约1变成这样:


Alice的合约1(双方都签名)

Alice签名了第一笔交易后,顺便也把第二笔交易用Alice2密钥签名了,因为第二笔交易不签名的话她拿不到钱,但是第二笔交易有个sequence,所以Alice只好等。但是因为第一笔交易很快确认,Bob账户里得到了0.5BTC,Bob一看不对啊,我应该得0.6BTC啊,所以Alice一定是作弊了!Bob有什么办法追回损失?别忘了Bob手里还握有Alice2的密钥呢,该是它发挥作用的时候了!仔细看合约1第一笔交易的第一个输出账户,那是Alice2 & Bob联名账户,现在Bob两个密钥都有了,那就成Bob个人账户了,于是Bob赶紧创建一笔新的交易,将这个联名账户的钱都转给自己:
Bob的反攻交易

最后Bob得到了0.5BTC+0.5BTC=1.0BTC,Alice得到了一部iphone,但损失了初始联名账户里的0.5BTC,等于用0.5BTC买了个iphone,按目前的行情是接近3500美刀,真是亏大发了,得不偿失啊!
由此可见,双方还是要规规矩矩的,作弊要付出太大的代价,Lighting网络在这方面做得不错。

对了这种技术官方名称叫RSMC(序列到期可撤销合约)。

你可能感兴趣的:(比特币Lightning网络技术分析(一))