从0系列---闪电网络场景

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,同时完成收款。

你可能感兴趣的