跨链
01
Hash-locking(哈希锁定)的原理
哈希锁定技术的核心原理是使用带有哈希锁定机制的合约进行资产锁定实现质押效果,为不同资产之间的交易提供了信任基础。使用哈希锁定机制的合约称为哈希时间锁合约(Hash Time Locked Contract,简称 HTLC)。
02
HTLC 的核心是时间锁和哈希锁
时间锁是指,交易双方约定在某个时间内提交才有效,超时则提案方案失效(无论是提出方或接受方)。如果交易因为各种原因未能成功,时间锁能够让交易参与各方拿回自己资金,避免因欺诈或交易失败造成的损失。
哈希锁是指,对一个哈希值 h,如果提供原像 s 使得 hash (s) = h,则提案有效,否则失效。
03
HTLC的组成逻辑
HTLC 主要由两部分逻辑组成:哈希验证和过期验证。
哈希验证是概念定义,接下来以 2 个持有不同区块链资产的用户使用 HTLC 进行资产交换来表示:
假设 A 用户和 B 用户有资产交换的需求,A 用户想用 m 个 x 链数字资产和 B 用户换 n 个 y 链数字资产。大家可以把 x 链数字资产替换为 BTC,把 y 链数字资产替换为 ETH 来做实例理解。
首先需要在两条链上部署哈希时间锁定合约,然后执行如下步骤进行跨链资产交换:
01
A 用户随机构建一个字符串 s,并计算出其哈希 h = hash (s);
02
A 用户将 h 发送给 B 用户的 HTLC 合约;
03
A 用户锁定自己的 m 个 x 链数字资产,并设置一个较长的锁定时间 t1, 并设置了获取该 x 链数字资产的一个条件:如果 B 用户能够提供 h 的原始值 s 就可以得到该 x 链数字资产;
04
B 用户观察到 A 用户 HTLC 合约中锁定了一个 x 链数字资产,然后 B 用户锁定自己的 n 个 y 链数字资产资产,并设置一个相对较短的锁定时间 t2, t2 < t1, B 用户也设置了获取条件:如果 A 用户能提供 h 的原始值 s 就可以获取 n 个 y 链数字资产;
05
A 用户将自己最初生成的字符串 s 发送到 B 用户的 HTLC 合约里取得了 n 个 y 链数字资产;如果到时间点 t2 后仍未解锁,则退回 n 个 y 链数字资产给 B 用户;
06
B 用户观察到步骤 5 中 A 用户 的 s 值,将其发送给 A 用户的 HTLC 合约成功获取 m 个 x 链数字资产;如果到时间点 t1 后仍未解锁,则退回 m 个 x 链数字资产给 A 用户;
经过以上步骤,就完成了 A 用户用 m 个 x 链数字资产和 B 用户交换 n 个 y 链数字资产。
以上的跨链事务流程图如下:
如果代入参数来理解:
A 用户 = Alice
B 用户 = Bob
x 链数字资产 = BTC
y 链数字资产 = ETH
m = 1
n = 20
场景是:Alice 用 1 个 BTC 和 Bob 交换 20 个 ETH。
事务流程图如下:
04
HTLC 的应用限制
限制 1. 协议兼容性较低
HTLC 实施需要满足一些必要条件:
(1)用户资产所在区块链需要基于相同哈希算法(比如都使用比较常用的 SHA-256 哈希算法);
(2)区块链需要兼容 HTLC 和其他可编程功能(如 BTC 的 Bitcoin Script 或 ETH 的智能合约);
(3)交易双方需要在同一区块链上有交易账户;
(4)对于不包含资产托管账户(例如 Fabric)的区块链需要借助智能合约来构建账户概念。
限制 2. 时间锁机制造成退款时间过长
时间锁有效降低了交易对手风险,但如果有中间节点因故无法进行交易,则必须等时间锁设定时间结束才能退款。
哈希锁定技术不是一种普适的跨链通讯机制,它解决的是价值交换问题,而不是信息传递问题,因此应用领域比较狭小。
抛砖引玉:
哈希锁定技术能否用于做跨链资产转移?
(如果你知道这个问题的答案,欢迎加入我们的技术沙龙参与讨论)
溪塔科技技术博客正式上线
这里有最实用的技术分享,最全最热门的技术咨询
区块链流行动态一网打尽
欢迎大家参与~
https://tech.citahub.com/categories/
往期回顾
01 一键迁移 零成本复用 Fabric 生态!国产云原生区块链 CITA-Cloud 发布 v2.0 版本 |
02 溪塔科技完成数千万元 A 轮融资,加速赋能数字经济 |
03 发挥创新优势,加快数字经济布局与发展 | 溪塔科技参与起草信通院《2020区块链创新与知识产权发展白皮书》正式发布 |
04 国内首份分布式数字身份技术白皮书亮相 溪塔科技王晓亮作为DIDA联盟代表发布 |
05
开源驱动 协同创新 | CITAHub 开源社区二周年记