美文网首页
哈希时间锁,将条件交易由点成面

哈希时间锁,将条件交易由点成面

作者: 数字门徒 | 来源:发表于2018-08-18 10:56 被阅读0次

    上一篇解读到闪电网络白皮书中可撤销的顺序成熟度合同RSMC,哈希时间锁合约(Hashed-Time Lock Contract,简称HTLC)是在此基础上进一步延伸,引入哈希密码和时间锁概念,让单个支付通道相互连接形成网络,最终形成覆盖全球的支付网络。具体操作就是发起交易时,双方约定转账方先冻结一笔钱,并提供了一个哈希值,如果在一定时间内有人能提出一个密文,并且哈希后的值与已知的哈希匹配,则这笔钱就转给接收方。

    RSMC只支持最简单的无条件资金支付,HTLC进一步实现了有条件的资金支付,通道余额的分配方式也因此变得更为复杂。

    它有两个条件
    Hash lock:给你一个哈希值H(R),当你给出它的原像R时,你就可以花这笔钱。
    Time lock:在某个时间点之前提供原像R才是有效,超出时间后交易失效。

    举个栗子,Alice和Bob分别拿出0.5个BTC,建立一个通道FT(资金交易),相当于资金池。根据RSMC原理,生成承诺交易CT:C2a和C2b。图示所反映的通道余额划分是: 有0.9 BTC以无条件余额划分的形式在Alice和Bob之间分割,Alice占0.4 BTC,Bob占0.5 BTC。Alice向Bob有条件支付0.1 BTC,如果Bob能于3天内(实际是以区块链高度代表的未来某时)之前提供合适的R,Bob就能得到这笔钱,反之这笔钱仍然回到Alice账上。

    备注:其中“> 3 days”是利用lock time字段的最新扩展实现的。与“seq=1000”的区别在于,lock time指定的是一个高度绝对值,而sequence指定的是相对父交易所在区块高度的相对值。

    HTLC案例示范图

    交易并非总是一帆风顺 ,超时退款时有发生。如果Bob未能在3天内及时提交R,Alice可以通过用自己的私钥准备各交易的输入解锁脚本并发布交易到区块链上,最终取回这0.1 BTC。在此方式下,最终Alice拿到0.5 BTC,Bob拿到0.5 BTC。也可采用新建版本余额的方式,无需终止通道。

    若需要作废旧合约,建立新合约,那HLTC有该如何操作?这部分,同RSMC,也需要建立违规补偿交易(breach remedy transaction)。若Alice将旧交易C2a和HT1a在区块链上公开,由于seq字段的限制,Alice不能立刻公开交易RD2a和HTRD1a,这样就使得Bob有机会发现Alice企图作恶并能够通过公布交易BR2a和HTBR1a的方式予以惩戒。发出这对交易后,通道中的全部资金将都归Bob所有。下图中BR2a、HBR1a、HTBR1a就是违规补偿交易。

    违规补偿交易示意图
    以上就是哈希时间锁在RSMC的基础上实现了条件交易,技术点在于哈希密码,这类似玩一个猜谜游戏,知道谜底方可解锁。问题来了,这样的点对点交易又是如何连成网络?时间锁的作用在哪?

    举个栗子,Alice除了和Bob之间有交易需求,和Carol之间也需要产生交易,怎么办?一种办法,当然是Alice和Carol之间建立一个双向通道。还有一个办法是,Alice和Bob之间已经现成有一个双向通道,Bob和Carol之间也已经现成有一个双向通道。那么交易可以通过Bob来实现。

    假设Alice需要付给Carol 1个BTC,由最终的收款方Carol创建一个原像R和对应的哈希值值H(R),然后把H(R)给了Alice。Alice就和Bob之间达成了一个合约:如果Bob在3天内(Lock time=3 day),提供H(R)对应的密钥R,Alice就给Bob 1.001 BTC,超过3天,BTC原路返回给Alice。

    很显然,密钥R只有Carol有,Bob没有。那Bob怎么办呢?

    Bob和Carol达成一个合约:如果Carol在2天内(Lock time=2 day),提供H(R)对应的密钥R,Bob 就给Carol 1 BTC,超过2天,BTC原路返回给Bob。两天内,Carol向Bob提供了秘钥R,获得了1 BTC。Bob向Alice提供了秘钥R,获得了1.001 BTC。

    最终结果就是:Alice支付了1.001 BTC,Carol收到1 BTC,而中间方Bob收到0.001BTC的手续费。

    由此延伸,若Alice和Eric之前想进行交易,但没有支付通道。Alice和Bob之间,Bob和Carol之间、Carol和Diana之间、Diana和Eric之间,已经有了支付通道,那把这些通道串联起来,就相当于建立了Alice和Eric之间的支付通道。


    多方支付通道示意图

    交易流程就是:最终的收款方Eric构建了一个秘钥R和对应的哈希值值H(R),然后把H(R)给了Alice。Alice和Bob之间,Bob和Carol之间、Carol和Diana之间、Diana和Eric之间分别创建一个时效性递减的条件交易合约。Eric把R给Diana,拿到1.0 BTC, Diana把R给Carol,拿到1.001BTC......密钥R一直传递,最终到达Alice。最终结果就是:Alice支付了1.003 BTC,Eric收到1 BTC,每个中间方,收到0.001BTC 的手续费。这样众多的支付通道相连就形成一个巨大的支付交易网络。

    上面的交易过程,核心就是“一方用密钥R向另一方换钱,超过时间没有换,钱自动回到打款人的账号”,这个过程就是所谓的哈希时间锁HTLC(Hashed Time Lock Contract)。HTLC本身想法不复杂,需要和RSMC紧密结合,才能形成一个完善的、具有多个中间节点的支付通道。

    相关文章

      网友评论

          本文标题:哈希时间锁,将条件交易由点成面

          本文链接:https://www.haomeiwen.com/subject/rohzvftx.html