目前已知的区块链跨链交换协议主要有三类。

Atomic Swap

Atomic Swap 协议构建于用户应用层,通过智能合约实现。该协议对于区块链的要求不高,只需要满足如下两个条件:(1) 区块链支持哈希锁定;(2) 区块链支持时间锁定;(2) 参与交换的各区块链使用的哈希函数相同。

下面以一个应用场景为例,简述该协议运行流程。

假设有两个人,Alice 和 Bob,分别在两条区块链,CoinA 和 CoinB 上有资产。其中,Alice 想要把 CoinA 的资产转为 CoinB 的资产。而 Bob 想要把 CoinB 的资产转为 CoinA 的资产。这时,Alice 和 Bob 就可以进行交换。首先,Alice 在 CoinA 区块链上发布一个智能合约,将资产转给 Bob。

该智能合约内容如下:该智能合约的内容为,将一定数额的 Alice 的 CoinA 资产锁定,解锁的条件为哈希锁。Alice 生成一个随机数 s,计算 h = HASH(s)。并把 h 记录在智能合约上。如果有人给出了 s,那么该智能合约就会被触发,并把资产转移给 Bob。同时,该智能合约还具有一个时间限制,如果一定时间内没有人提供 s,该合约就会失效,被锁定的资产将会被返还给 Alice。

在 Bob 看到 Alice 发布的智能合约之后,Bob 也会在 CoinB 上发布一个智能合约。智能合约内容和 Alice 的合约大致相同,哈希锁也是 h = HASH(s),但是是在 CoinB 上将资产由 Bob 转给 Alice。

在 Bob 发布智能合约后,Alice 就可以公布 s,触发 CoinB 上 Bob 的合约,获得 Bob 的资产。同时,Bob 可以得知 s,触发 CoinA 上 Alice 的合约,获得 Alice 的资产。

在该协议中,如果有人不遵守该协议,则受损的只有此人自己,参与的其他人将不会有资产损失。

上面描述的协议是两个参与者、两个区块链的情形。通过图论算法,可以对该协议进行扩展,使该协议可以适用于多参与者、多区块链的情形。

主要优点:

  1. 实现简单。对区块链没有额外要求。
  2. 安全性高。没有额外的复杂度。
  3. 运行于用户层,可以直接和以太坊等区块链交互。

主要缺点有:

  1. 需要第三方协调者,协调不同区块链上的买方和卖方。
  2. 如果有恶意交易者,虽然不会对其它交易者造成损失,但是可能会导致其它交易者的资产在一段时间内被白白锁住。

中继

中继方案依赖于跨链数据获取。如果有很多条区块链,需要进行两两之间的跨链资产交易,这样会导致所需要获取的数据长生爆炸。为了避免这种问题,就需要构建出一条中继链专门用于处理跨链交易的问题,这样一来,普通的区块链的跨链交易只需要和中继链交互即可。目前主要有两种实现思路。

第一种是 BTC Relay 项目所采用的方案。在此方案当中,中继链需要支持图灵完备的智能合约。这样,中继链上可以运行其它区块链的 SPV 轻钱包。这样一来,中继链上的用户就可以获取其它链上的交易信息并验证,并在中继链上通过智能和约进行跨链交易。

主要优点:

  1. 基于已有的成熟解决方案。
  2. 不需要为了跨链对智能合约虚拟机进行额外的设置。
  3. 可以完全的去中心化。

主要缺点:

  1. 同样的数据需要在中继链上保存多份,造成了冗余。
  2. 如果区块链参与过多,仍然会出现数据爆炸的问题。
  3. 可能需要撰写一些复杂的智能合约,带来额外的安全性隐患。

第二种方案则无需在智能合约引擎上运行 SPV 轻钱包。它的实现思路如下,在区块链的共识机制中,通过 validator 来维持区块链系统中的共识;首先,在各个子链的智能合约引擎中,加入一种特殊的交易:跨链交易,用户可以发起一个跨链交易,在进行跨链交易之后,用户的资产就会被锁住,与此同时,在中继链上会自动生相关的 token。

下面以一个应用场景为例进行详细说明:

Alice 和 Bob 分别在两条链 CoinA 和 CoinB 上拥有资产,Alice 想把 CoinA 上的资产转换为 CoinB 上的资产。Bob 想把 CoinB 上的资产转换为 CoinA 上的资产。此时,区块链上的 validators 运行了一条中继链 CoinR。CoinR 同时连接了 CoinA 和 CoinB。首先,Alice 执行跨链交易,将自己的资产锁定。Validator 在运行 CoinR 的同时,也运行了 CoinA 和 CoinB 上的状态,因此可以确认 Alice 已经执行了跨链交易,因此,Alice 可以在 CoinR 上获得 token。与此同时,Bob 也执行了同样的跨链交易,获得了 token。Alice 和 Bob 可以在 CoinR 上交易,这样,Bob 可以获得 Alice 的 token。Bob 可以再执行一次跨链交易,将资产转移回 CoinA。这样,在 CoinA 上,valitor 将会允许 Bob 取得刚刚 Alice 所锁定的资产。

主要优点:

  1. 没有数据冗余。
  2. 智能合约相对简单,

主要缺点:

  1. 因为中继链上没有保存其它区块链的状态,而依赖 validator 去确认,因此,没有办法做到完全去中心化。而只能采用 Tendermint、BFT、PoA 等方案达成共识。
  2. 需要对各个链的交易引擎和智能合约虚拟机进行深度定制,支持特殊的跨链交易,并允许 validator 获取其它链上的数据。

分布式密钥管理

分布式密钥管理的思路脱胎于中心化的交易所。在一个中心化的交易所当中,交易者只需要将数字货币转至交易所生成的新地址,就会在交易所的账面上生成相应的账户数字。随后,用户可以在这个交易所内进行交易。但是,这种方式有一个缺陷,这个地址是交易所生成的,是完全由一个组织控制的,这是中心化的,而且有可能会带来安全隐患。

分布式密钥管理就是为了解决这一难题,并做到了一定程度的去中心化。通过分布式密钥管理,用户的资产在进入交易所的时候,转账的目标地址是由多个 validator 安全多方计算生成的,每一个 validator 分别持有私钥的一部分。而在交易所需要动用这笔资产的时候,则需要多个 validator 通过门限签名的方式产生。如果觉得对于 ECDSA,安全多方计算和门限签名在密码学上过于复杂,也可以使用 multi-signature 合约的形式,这样在工程实现上较为简单。

而这种跨链交易所的形式可以区块链的形式呈现,例如,搭建一条专门的跨链交易链。Alice 和 Bob 分别在两条链 CoinA 和 CoinB 上拥有资产,Alice 想把 CoinA 上的资产转换为 CoinB 上的资产。Bob 想把 CoinB 上的资产转换为 CoinA 上的资产。此时,区块链上的 validators 运行了一条交易链 CoinT,他们协商产生了交易所地址 Addr。首先,Alice 将自己的CoinA 资产转移至 Addr,将自己的资产锁定。Validator 在运行 CoinT 的同时,也运行了 CoinA 和 CoinB 上的SPV,因此可以确认 Alice 已经执行了跨链交易,因此,Alice 可以在 CoinT 上获得 token。与此同时,Bob 也执行了同样的操作,获得了 token。Alice 和 Bob 可以在 CoinT 上交易,这样,Bob 可以获得 Alice 的 token。随后,Bob 可以提币,获得刚才 Alice 锁定的资产:validator 将生成门限签名或者产生 multi-signatutre 合约的签名,在 CoinA 上将 Addr 上的资产转移给 Bob。

主要优点:

  1. 用户体验良好,和普通的跨链交易所类似,几乎极少有延迟。
  2. 无需对区块链或智能合约引擎进行定制

主要缺点:

  1. 相对中心化
  2. 密钥管理较繁琐

参考链接

  1. Atomic Swap
  2. PolkaDot
  3. Cosmos
  4. WanChain
  5. FUSION
  6. BTC Relay