主页 > imtoken2022官网版 > 哈希时间锁,从条件事务来看

哈希时间锁,从条件事务来看

imtoken2022官网版 2023-01-16 21:29:55

本文讨论的Hashed-Time Lock Contract(HTLC)是在此基础上的进一步扩展,引入了hash密码和时间锁的概念,让各个支付通道相互连接形成网络,最后形成覆盖全球的支付网络。具体操作是在发起交易时转币的哈希值查不到交易记录,双方约定转账方先冻结一笔钱,并提供一个哈希值。如果有人能在一定时间内拿出密文,并且哈希值与已知的哈希值匹配,钱就会转给收款人。

RSMC只支持最简单的无条件资金支付,HTLC进一步实现有条件资金支付转币的哈希值查不到交易记录,渠道余额分配方式更加复杂。

它有两个条件:

哈希锁:给你一个哈希值H(R),当你给它的原像R,你就可以花掉这笔钱。

时间锁:在某个时间点之前提供原像R有效,超过时间后交易无效。比如 Alice 和 Bob 各自拿出 0.5 个 BTC 建立一个通道 FT(资金交易),相当于一个资金池。根据 RSMC 原理,生成承诺交易 CT:C2a 和 C2b。图中体现的通道余额划分为:Alice和Bob以无条件余额划分的形式有0.9个BTC,Alice占有0.4个BTC,Bob占有0. 5比特币。 Alice 有条件支付 0.1 BTC 给 Bob,如果 Bob 可以在 3 天内提供合适的 R(实际上是以区块链的高度表示的未来某个时间),Bob 就会得到这笔钱,反之亦然这笔钱仍会回到 Alice 的账户。

转币的哈希值查不到交易记录

注意:其中“> 3天”是通过锁定时间字段的最新扩展来实现的。与“seq=1000”的区别在于lock time指定的是高度的绝对值,而sequence指定的是相对于母交易所区块高度的相对值。

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

HTLC 案例

转币的哈希值查不到交易记录

交易并不总是一帆风顺,有时会发生超时退款。如果 Bob 未能在 3 天内及时提交 R,Alice 最终可以通过使用她的私钥为每笔交易准备输入解锁脚本并将交易发布到区块链来取回 0.1 BTC。这样,Alice 最终得到 0.5 BTC,Bob 得到 0.5 BTC。也可以在不终止频道的情况下创建新的版本余额。

如果需要撤销旧合同并创建新合同,HLTC 应该怎么做?这部分和 RSMC 一样,也需要建立违约救济交易。如果 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 天内(锁定时间=3 天)提供 H(R) 对应的密钥 R,Alice 会给 Bob 1.001 BTC 超过 3 天,返还 BTC以同样的方式给爱丽丝。

显然,只有 Carol 拥有密钥 R,而不是 Bob。鲍勃呢?

Bob 和 Carol 达成协议:如果 Carol 在 2 天内(锁定时间=2 天)提供 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.001 BTC的手续费。

由此延伸,如果 Alice 和 Eric 之前想要进行交易,但是没有支付渠道。 Alice 和 Bob 之间、Bob 和 Carol 之间、Carol 和 Diana 之间以及 Diana 和 Eric 之间已经有了支付渠道。将这些通道串联起来,就相当于在 Alice 和 Eric 之间建立了一个支付通道。 .

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

多方支付渠道示意图

交易过程为:最终收款人Eric建立一个秘钥R,对应的hash H(R)为hash值,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.001 BTC 的手续费。如此众多的支付渠道连接起来,形成了一个庞大的支付交易网络。

上述交易流程的核心是“一方使用密钥R与另一方进行货币兑换,如果兑换不超时,款项将自动退回付款人的账户”,这个过程是所谓哈希时间锁HTLC(Hashed Time Lock Contract)。 HTLC本身的思路并不复杂,需要与RSMC紧密结合,形成具有多个中间节点的完整支付渠道。