基于哈希锁定的原子交换

基于哈希锁定的原子交换

保证不同链间资产交易的安全性和原子性,从而不需要第三方参与


提出

于2013年由TierNolan在比特币论坛上提出。


原子交换哈希锁机制

设A使用链A上的代币a与B交换B上的代币b
在这里插入图片描述

  1. A产生随机数s,计算哈希值H(s).
  2. A使用H(s)和一个时间t1在链A上产生一个合约交易Tx1=T(H(s),t1).Tx1会锁定A链上需要交易的代币a,锁定时间为t1
  3. A把计算的H(s)发给B,并发送交易Tx1至A链上,证明已经锁定自身的代交易代币a。
  4. B使用H(s)和时间t2,锁定需要交易的代币b并将其交易上链,其中,锁定时间为t2(t2<t1)
  5. A使用s构建Tx3解锁链上B的交易Tx2,获取Tx2锁定的代币b,此时随机数s暴露。
  6. B使用公开的s构建Tx4解锁链A上的Tx1,获取Tx1锁定的代币a。

交易支持哈希锁定的条件:1)哈希锁,只有提供目标哈希的原像才能解锁交易。
2)时间锁,只有在指定时间之前完成交易才有效。

资产的哈希锁定可以通过构建HTLC完成。

假如交易双方为A和B,A构建HTLC需要两笔UTXO。A首先产生一个随机数s,计算H(s),只有提供原像s才能计算出H(s),实现哈希锁定。

然后,A生成一笔UTXO发送一定数量的比特币到一个比特币脚本,脚本中设置UTXO的花费条件有两个:1)提供B的签名和原像s。 2)提供A和B的签名。

通常,这笔交易被称为存款交易,(fund transation),表示资产的锁定。

A产生另外一笔交易,把存款交易作为第二笔UTXO的输入,输出为A的地址,同时设置nTimeLock字段为Tlock,表示到达T后才允许被打包生效,实现时间锁定,称退款交易(redeem transcation)

这两笔交易共同构成了一个比特币系统上的哈希锁定合约。

A把交易发给B,如果B同意则在第二笔交易上签名并发给A。


以太坊,图灵完备的链,合约逻辑:在t时间内(实现时间锁),如果A的地址能提供哈希原像s(实现哈希锁定),则可以取走合约中锁定的资产,然后发送需要锁定的资产到合约上。

比特币闪电网络采用了HTLC,HTLC使得没有支付通道的双方也可以通过其他支付通道最终实现资产转移。

发送方选取随机数s生成哈希值H(s),并且私下把s告知接收人,然后利用自身的支付通道和中间人构建HTLC,设置时间为t1,中间人再通过H利用可用支付通道构建HTLC,设置时间为t2,最终实现在连通接收者的支付通道上构建同样的HTLC,当接收者利用s取走支付通道的比特币时,s暴露并被一次传到上层HTLC,最终所有人都可以取走个人应得的比特币。


瑞典的InterLeger协议中通用模式的实现也是基于原子交换,其基本原理和闪电网络相似,其区别在于交易双方不在同一条链上,可实现多个链的资产交换,前提时这些链都支持哈希锁和时间锁。


原子交换存在3个缺点:

  1. 对于比特币这种非图灵完备的链来说,构建一个HTLC需要生成两笔交易,如果交易最终达成,那么这两笔交易都要上链,操作复杂且手续费高
  2. 原子交换要求双方在线完成,限制了原子交换的交易量
  3. 现实中存在汇率波动,对方手可以根据汇率的波动来选择是否完成这笔交易
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值