技术沙龙第四期-跨链

Rain:

关于跨链,V神在2016发布过一篇报告《Chain Interoperability》,里面总结了3种跨链方案的实践:

  • Notaries(公证员)
  • Relays(中继技术)
  • Hash-locking(哈希锁定)

Rain:

今天我就分享一下 Hash-locking(哈希锁定)的原理

Rain:

哈希锁定技术的核心原理是使用带有哈希锁定机制的合约进行资产锁定实现质押效果,为不同资产之间的交易提供了信任基础。

Rain:

使用哈希锁定机制的合约称为哈希时间锁合约(Hash Time Locked Contract,简称HTLC)

Rain:

HTLC 的核心是时间锁和哈希锁

Rain:

时间锁是指,交易双方约定在某个时间内提交才有效,超时则提案方案失效(无论是提出方或接受方)

Rain:

如果交易因为各种原因未能成功,时间锁能够让交易参与各方拿回自己资金,避免因欺诈或交易失败造成的损失

Rain:

哈希锁是指,对一个哈希值 h,如果提供原像 s 使得 hash(s) = h,则提案有效,否则失效

Rain:

HTLC 主要由两部分逻辑组成:哈希验证和过期验证

Rain:

前面是概念定义,接下来以2个持有不同区块链资产的用户使用HTLC进行资产交换来示例说明

Rain:

假设 A用户 和 B用户 有资产交换的需求,A用户 想用 m 个 x链数字资产 和 B用户 换 n 个 y链数字资产

Rain:

大家可以把 x链数字资产 替换为 BTC,把 y链数字资产 替换为 ETH 来做实例理解

Rain:

首先需要在两条链上部署哈希时间锁定合约,然后执行如下步骤进行跨链资产交换

Rain:

  1. A用户 随机构建一个字符串 s,并计算出其哈希 h = hash(s);

Rain:

  1. A用户 将 h 发送给 B用户 的HTLC合约;

Rain:

  1. A用户 锁定自己的 m 个 x链数字资产,并设置一个较长的锁定时间 t1, 并设置了获取该 x链数字资产 的一个条件:如果 B用户 能够提供 h 的原始值 s 就可以得到该 x链数字资产;

Rain:

  1. B用户 观察到 A用户 HTLC合约中锁定了一个 x链数字资产, 然后 B用户 锁定自己的 n 个 y链数字资产 资产,并设置一个相对较短的锁定时间 t2, t2 < t1, B用户 也设置了获取条件:如果 A用户 能提供 h 的原始值 s 就可以获取 n 个 y链数字资产;

Rain:

  1. A用户 将自己最初生成的字符串 s 发送到 B用户 的HTLC合约里取得了 n 个 y链数字资产;如果到时间点 t2 后仍未解锁,则退回 n 个 y链数字资产给 B用户;

Rain:

  1. B用户 观察到步骤 5 中 A用户 的 s 值,将其发送给 A用户 的HTLC合约成功获取 m 个 x链数字资产;如果到时间点 t1 后仍未解锁,则退回 m 个 x链数字资产给 A用户;

Rain:

经过以上步骤,就完成了 A用户 用 m 个 x链数字资产 和 B用户 交换 n 个 y链数字资产

Rain:

以上的跨链事务流程图如下

Rain:

我们可以代入参数来理解:

A用户 = Alice
B用户 = Bob
x链数字资产 = BTC
y链数字资产 = ETH
m = 1
n = 20

Rain:

场景是:Alice 用 1 个 BTC 和 Bob 交换 20 个 ETH

Rain:

那事务流程图就是


Rain:

HTLC 的应用有以下的限制

Rain:

  1. 协议兼容性较低

Rain:

HTLC 实施需要满足一些必要条件:

Rain:

一是用户资产所在区块链需要基于相同哈希算法(比如都使用比较常用的 SHA-256 哈希算法);

Rain:

二是区块链需要兼容 HTLC 和其他可编程功能(如BTC的Bitcoin Script或ETH的智能合约);

Rain:

三是交易双方需要在同一区块链上有交易账户;

Rain:

四是对于不包含资产托管账户(例如 Fabric)的区块链需要借助智能合约来构建账户概念。

Rain:

限制2. 时间锁机制造成退款时间过长

Rain:

时间锁有效降低了交易对手风险,但如果有中间节点因故无法进行交易,则必须等时间锁设定时间结束才能退款

Rain:

哈希锁定技术不是一种普适的跨链通讯机制,它解决的是价值交换问题,而不是信息传递问题,因此应用领域比较狭小

Rain:

以上就是我今天的分享

Rain:

抛出个问题:哈希锁定技术能否用于做跨链资产转移?

U2:

htlc应该是支持资产的原子交换

U2:

像侧链或者中继链这种relay模式的支持转移

U2:

相当于从a到b

U2:

另外研究区块链会发现,和传统的分布式事务算法里不同的是,区块链例一般都是用密码学加博弈论来保证的

U2:

像htlc本质上是一种序贯博弈

U2:

另外htlc也是依赖链本身的安全性,比如如果发生51%攻击依然会有资产丢失的风险

U2:

我记得某人写过一篇文章分析这个htlc博弈的过程,应该有一份是有一点点便宜可以占的,另外一方相对处于一个博弈的被动选择。比如就是说其中一方可以根据汇率选择是否进行交易,后后手只能根据前面的人选择被动选择,否则就有损失。