闪电网络(四):利用闪电通道转账

昨天,我们已经建立好闪电通道,今天我们就来看看A和B如何实现闪电般地转账。

接下来,就以A转1个比特币给 B为例,来看看具体过程。如图:

这幅图在昨天的基础上增加了转账部分,即虚线右边的部分:交易⑤⑥⑦⑧。而虚线左边的,就是我们昨天讲的建立通道的部分。我们看看,用于转账的交易⑤⑥⑦⑧其实跟建立通道的交易①②③④很像,但具体细节还是不同的,如下:

第一步:A构造交易⑤,发起地址为A1B1多重签名地址,目的地址是A1B3多重地址和A1地址,给A1B3多重地址3个比特币,给A1地址1个比特币。

第二步:A继续构造交易⑥,发起地址为A1B3多重地址,目的地址是给B1,转账3个比特币,当然,这笔交易如果广播后要生效,也是要等待1000个区块才行。

第三步:A将交易⑤和⑥签名发给B。

第四步:B对A在⑤和⑥上签名进行验证。

第五步:B按同样原理进行操作。

以上五步与上篇中建立闪电通道前五步完全雷同。接下来,就是最关键的不同点了。

第六步:A把自己的A2地址的私钥发给B!

等等!我们之前不是说过私钥绝对不能泄露吗?因为谁拥有私钥谁就拥有该地址的比特币!现在,竟然要主动把自己的私钥告诉给别人,这不是疯了吗?这闪电网络靠谱吗?

别着急,我们好好来分析一下,看A把A2的私钥发给B之后,到底能会发生一些什么事。

B拿到A2的私钥后,首先可以拿到A2地址上的比特币,所以只要A不在A2地址上另存比特币,只把A2用于该闪电通道,那就没啥事。其次,B还可以完成交易④,因为交易④之前的状态就是A2未签名,B1已签名。但我们仔细看看,交易④的发起地址是B1A2多重地址,这个地址的比特币来源于交易③,但关键是交易③因为A1并未签名而没有生效,一环扣一环,绕了一圈,发现控制闸门的还是A。所以,即使B拿到A2的私钥,也捞不到啥好处。

那A把A2的私钥给B有什么用呢?

其实就是A向B表示:那个向A1和B1地址各转2个比特币的交易①②③④组合作废,当前通道状态,由转给A1地址1个比特币和转给B1地址3个比特币的交易⑤⑥⑦⑧补上。换句话来说,就是原来各有2个比特币,现在我只有1个,你有3个。这不就是A转1个比特币给B的意思嘛!当然,这作废不作废不是光口头喊别人就信的,而是因为如果不作废对A反而不利。

我们来看看,假如A执意要发起交易③和④,会发生什么。

首先,A用A1对交易③签名,交易③在区块链广播并被打包后,B马上就可获得2个比特币。这至少保证了B没有损失。对于B来说,更美妙的是,B还可以用A2私钥和自己的B1私钥,对B1A2多重地址发起转账,把交易③里转给该地址的2个比特币也转给自己。就算A马上发起交易④也于事无补,因为交易④的执行要等待1000个区块,这会,B早就把比特币转走了。

所以,当B收到A2的私钥后,其实就意味着这笔转账完成了,因为所有这些交易(交易①到⑧)全部都没有上链,只涉及A与B之间的点对点交互,所以,跟原始的链上交易比起来,确实快如闪电。

最后,如果A和B现在要结束这个闪电通道,该怎么做?

其实很简单,如果两人和平分手,可以一起发起一笔链上交易,按当前各自的余额分配资金池里的比特币。如果两人闹掰了,任何一个人都可以单独结束这个通道,要做的是就是将自己控制的交易签名广播出去,比如A将交易⑦和⑧签名广播,两个交易执行后各自会得到各自应得的比特币,不过B可以马上得到,而A需要等待一段时间才行。也就是说,谁强制发起结束,谁就会受到延迟拿币的惩罚。这一点,也鼓励大家有商有量,好聚好散。

不投资毋宁死

自由,就是拥有选择的权利,而每一次选择都是一次投资。

谢谢阅读

✬如果你喜欢这篇文章,欢迎分享到朋友圈✬

评论功能现已开启,灰常接受一切形式的吐槽和赞美☺

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181015G0KTKM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券