A与B建立支付通道的流程。
- A和B分别转5BTC到一个多签地址AB1(上链)
A和B发生一笔交易,A要给B发1BTC,(不上链)
- A生成一个随机串,并计算hashA,发送给B
B创建一笔交易,从AB1账户向B转6BTC,向多签地址AB2转4BTC,并发送给A。
- 并且设定AB2账户,允许A的私钥单独操作AB2账户,但是需要等待1000个块(通过哈希时间锁定指令)
- 或者当B有hashA时,B的私钥可以马上操作AB2账户(通过哈希密钥锁定指令)
- B也创建一个随机串,然后A也创建一笔对应交易。
- 当A和B决定关闭通道,A和B创建一笔交易,将AB1的BTC按约定分别发给A和B的地址。
- 当A单方面决定关闭通道,A对B创建的交易签名,并发送到链上,此时B马上获得6个BTC,A等待1000个块后可以从AB2账户上提取出4BTC。
假如A和B打算继续交易,此时B向A发1BTC,(不上链)
- A和B分别把上一轮的随机串给对方,将上一轮的交易作废(原理用于防止违约,后面说明)
- B重新创建一笔交易,从AB1账户向B转5BTC,向多签地址AB2转5,与上一轮相同。
此时如果B想违约,想将上一轮的交易发送到链上获得6个BTC。
B将A在上一轮创建的交易(A获得4个BTC,AB2获得6个BTC)发送到链上
- 已经有A的签名,B只需要增加自己的签名
- A马上获得4个BTC,但是AB2上的6个BTC需要1000个块以后,B才能使用A的随机串来操作AB2。
- 而按照AB2的约定,A有B的随机串,可以马上操作AB2,获得6个BTC,所以B一无所有。
- 所以B不会将旧的交易发送的链上,也就达到将上一轮的交易作废的目的。
建立闪电网络的流程
- A和B建立支付通道,B和C建立支付通道
- A要给C转账,C生成一个随机串并计算hash,把hashC给A。
- A给B1地址转账,并约定只有B提供hashC对应的随机串,B才能操作B1账户(通过哈希时间锁定指令),如果超时自动取消。
- B给C1转账,并约定只有C提供hashC对应随机串才给B,C才能操作C1账户
- 当C提供随机串给B时,B也提供给A,同时完成收款。
划重点
个人认为闪电网络的核心有两点,一是在链上增加一个公共账户(通过多重签名管理),存储交易双方的金额。二是,链下通过互相确认账本(通过哈希时间锁定策略),保障互信。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。