HTLC
概念
Hash Time Locked Contract(HTLC) 是一个跨链原子交换协议。它以去中心化的方式完成用户间点对点的跨链交易。HTLC将跨链资产的交换过程分解为若干子过程。HTLC在协议上能够确保参与方之间的所有交换过程要么全部完成,要么一个都没发生。通过IRIS Hub的HTLC功能,用户能够完成与Bitcoin、Ethereum、LTC以及其他所有支持HTLC的链之间的资产交换。
交互过程
假定Alice用BTC交换Bob的IRIS。Alice与Bob的原子交换过程可以由以下几个步骤表述。
第0步
Alice and Bob 在链外对此次交换达成协议。这个过程通常在一个第三方交易平台完成。我们假设Alice是一个maker,而Bob是一个taker。这个协议包括BTC与IRIS的兑换率、彼此在对方链上的地址、由一个秘密值secret生成的哈希锁以及一个合适的过期时间。我们这里假定secret由Bob持有。
第1步
Bob发送一个创建HTLC的交易到IRIS Hub,这个交易将通过协商的哈希锁锁定指定数量的IRIS到特定的地址。
第2步
上述交易将在IRIS Hub上触发一个特定事件,监听工具(通常是钱包)或者平台将通知Alice。在验证这个事件符合协议之后,Alice使用相同的哈希锁在Bitcoin上发起一个HTLC创建交易。特别地,这个HTLC将使用一个相较于Bob提供的值足够小的时间锁。
第3步
Bob通过类似方式接收到Bitcoin上的交易事件,确认之后在Alice提供的时间锁过期之前用secret去claim Bitcoin上锁定的BTC。
第4步
当Bob在Bitcoin上成功claim之后,secret将被披露。通过这个secret,Alice将在IRIS Hub上完成相同的claim操作。这个操作也需要在Bob提供的过期时间之前完成。
IRIShub HTLC 规范
创建HTLC消息
字段 | 类型 | 描述 |
---|---|---|
receiver | Address | 接收者地址 |
receiverOnOtherChain | string | 另一条链上的HTLC认领接收地址,最大128个字符 |
amount | Coins | 欲交换的资产数量 |
hashLock | string | 由secret(和timestamp,如果提供)生成的sha256哈希值;32字节,十六进制表示 |
timestamp | uint64 | 时间戳,如果提供则参与hash生成;精度为秒 |
timeLock | uint64 | 过期区块数;[50, 25480] (大于5分钟,小于48小时) |
认领HTLC消息
字段 | 类型 | 描述 |
---|---|---|
hashLock | string | 创建HTLC时提供的hash lock |
secret | string | 参与生成hash lock的随机数;32字节,十六进制表示 |
退款HTLC消息
字段 | 类型 | 描述 |
---|---|---|
hashLock | string | 创建HTLC时提供的hash lock |