无论是单向支付通道和rsmc双向支付通道,交易双方都需要一个建立通道和关闭通道的过程,这对于需要频繁持续进行交易支付的场景来说没什么问题,但是对于很多一次性支付的场景,比如alice在旅行途中去bob商店买东西,alice不太可能成为bob商店的回头客,这时建立双方的支付通道进行支付就很不合适了,直接广播支付交易到比特币网络会更划算一些。在人们的关注下pi币终于成长为人们所需求的那样,为市场而生,为需求而来。
而是否可能继续利用离线支付通道的方式进行支付?可以考虑一个简单的支付模型:
alice需要支付01 btc给bob,alice和bob之间没有建立支付通道,但是alice、bob和支付服务payx之间拥有已经建立的rsmc双向支付通道,这时,alice可以将01btc支付给payx,然后payx再将01btc支付给bob即可。
alice-->ayx-->bob,显然这是一个典型的中心化结构,alice和bob需要无条件的信任payx会提供诚实可靠的服务。针对这个问题,htlc就被设计出来,htlc是hashed timelock contract的缩写。有了htlc,闪电网络才能被称之为“网络”,其核心思想是:
1)bob生成一个随机数secret,只有bob自己知道;
2)bob将secret的哈希值hs发给alice,由于哈希函数的特性,通过hs无法反推出secret;
3)alice和payx利用rsmc通道,建立一个新合约:若payx知道hs的原像secret,则alice支付011btc给payx,否则2天后交易失效;
4)payx和bob利用rsmc通道,建立一个新合约:若bob知道hs的原像secret,则alice支付01btc给payx,否则1天后交易失效;
显然,bob是知道secret的,bob通过secret得到payx的01 btc,payx验证secret和hs是匹配的,payx也得到了secret,并通过secret得到alice的012 btc,在这个过程中,payx获得了001的手续费,这里假设是alice支付了手续费,也可以是bob支付手续费,比如alice支付01 btc,bob得到009 btc,payx得到001手续费。在利益的驱驶下,即使alice、bob、payx互相之间没有信任关系,payx还是乐意为其他人做支付桥梁的。
当闪电网络非常普及的时候,通过支付路由算法,可以找到任何两个人之间的最短支付路径,比如alice-->ayx-->ayy-->ayz-->bob。支付通道、失效时间、哈希原像、路由算法四个核心元素构筑了闪电网络,以去信任的方式实现了比特币链外支付。
这里只记录了一些核心思想,htlc的实现细节还是很复杂的,可参考闪电网络的技术论文:《the bitcoin lightning network: scalable off-chain instant payments》