侧链与跨链(Sidechain,Cross-Chain)

侧链最早是为了提升比特币交易速度所提出的解决方案,可以让比特币安全的从主链上转移到另一条链,又可以安全的返回比特币主链的一种协议。如果一个链B的存在是为了处理链A上的交易,简单来说链B就像外挂插件,依附于链A,则称链B为链A的「侧链」,链A就是链B的「主链」。其中主链A并不知道侧链B的存在,侧链B知道有主链A的存在。

侧链与跨链的定义较难厘清,也有许多人将所有牵涉到链下的解决方案统称为侧链,为了方便理解,如果是像比特币与以太坊这种,两条拥有各自独立数据的主链之间的数据交换,本文则称之为「跨链」。

双向锚定(Two-way Peg)

然而在区块链的世界中,资产不能真的从一条链转移到另一条链。以比特币为例,比特币不可能真的从一条链流通到另一条链,而是透过「双向锚定」的方式完成。

以比特币为例,进行侧链或跨链操作时,将比特币发送到一个特定的钱包地址锁定,就能够在另一条链上释放等量的代币。同样的,当等量等值的代币在侧链上被锁定时,比特币区块链上的原始比特币就可以被释放了。

这时就涉及到一个很重要的问题,「安全」。谁来管理锁定的账户谁来解锁锁定的资产如何被安全释放可以说,这个部分是侧链与跨链技术最困难的地方。

目前主流的方法有公证人机制、中继器/链、哈希锁定和分布式私钥控制四种机制。

公证人机制(Notary schemes)

链与链之间互操作最简单的方法是使用公证人模式。在公证人模式中,使用受信任的一个或者一组团体向链A声明链B上发生了某事件,或者确定该声明是正确的。

举个例子 :

阿平有一个比特币,阿蔡有一个以太币。

有一天阿平突然跟阿蔡说,”欸欸,我用一个比特币跟你换一个以太币”。阿蔡听到兴奋不已,但冷静思考后,觉得天底下哪有这么好的事,阿平会不会心怀不轨。于是,他想了一个办法,他找了老徐来当公证人,双方都先把币打给老徐,老徐收到双方的币并确认金额无误后便把一个比特币打给阿蔡,一个以太币打给阿平,双方交易完成。

公证人模式在侧链解决方案领域受到很多关注,因为其既可以提供灵活的共识,也无需进行昂贵的工作证明或关于利益机制的复杂证明。然而,从上述例子中我们也不难发现,最大的缺点就是中心化程度高,存在安全疑虑,如果例子中的老徐从中作梗,将导致资产陷入危险之中。公证人模式的代表项目有Ripple。

中继器/中继链(Relays/Sidechain)

区块链的区块头中拥有历史交易的有效证明信息。因此可以藉由将链A的区块头,写入中继链的块中。等待链A的区块头序列之后,在中继链上处理的交易,就可以通过区块头的历史交易的证明信息,来验证交易的有效性。以比特币为例,中继链就像是比特币链的简易复制版,比特币可以透过这条复制出的中继链,与其他区块链进行跨链的资产转移。

来源: Chain Interoperability,Vitalik Buterin,September 9, 2016

以BTC Relay为例。在BTC Relay的设计中,比特币链上会有一个脚色称为Relayer ,负责搜集比特币的区块头讯息并将此讯息发送给BTC Relay , BTC Relay透过这些区块头的串接创建出小型版本的比特币区块链,以太坊Dapp开发者便能借此从智能合约向BTC Relay进行API调用来验证比特币网络的状态。

举个例子:

阿菜想用比特币跟阿平买以太币,他们说好要用BTC Relay做交易。

阿平会先将以太币打到BTC Relay 在以太坊上的智能合约BTCSwap,阿菜再接着将比特币打到阿平的比特币地址。→阿平拿到比特币

接下来阿菜必须让智能合约知道他已经把比特币打给阿平了,阿菜把交易资讯发送给BTC Relay 验证这笔交易是否真实存在。(注意,由于区块链是封闭式的,所以必须由使用者提供资讯,才能进行验证)

验证成功后BTC Relay 便会触发BTCSwap 释放以太币给阿菜。→阿菜拿到以太币

中继器/ 中继链与公证人所扮演的脚色事一样的,不同的地方在于,公证人机制存在信任问题,交易执行与否,由公证人决定,而中继器/ 中继链则是自动执行,只要符合条件即自动进行交易。

哈希锁定(Hash-locking)

哈希锁定模式的设计来自于闪电网络,也是其关键技术之一。透过「哈希锁定」以及「时间锁」的搭配,能够消除网络上参与交易者之间的信任问题,这部分在之后的「闪电网络」会做更深入的介绍。虽然哈希锁定能实现单一资产的交换,但是不能实现跨链两种资产之间的转移,换句话说哈希锁定没办法做到比特币与以太币之间的跨链资产转移,因此它的应用场景比较受限。

分布式私钥控制(Distributed private key control)

进行跨链交易时,需要涉及的问题是,「原有链上的资产必须被安全的锁定,当交易完成时,资产要能安全的被解锁与分配」。而分布式私钥控制就是跨链进行资产锁定的其中一种解决方案。

以跨链项目FUSION为例,当用户要进行跨链交易时,就需要锁定链A上的部分资产。首先需要先向FUSION请求跨链交易,FUSION便会生成一个可以锁定资产的一组私钥和地址,并把这个地址发送给用户,用户就可以在链A上把资产转移到锁定的地址上面去。

接下来FUSION网络里面的多个节点,会将这组私钥,拆分共同保管,由多个节点共同持有这组私钥,单独某几个节点是没办法去动用这里面的资产的。只有在通过智能合约的特定条件(例如:链B交易完成)时,各节点达成共识之后,如果他们都认为这个资产是可以解锁的,他们才会把各自的私钥片段贡献出来,将这个私钥完整恢复,对应的资产也就可以被解锁了。

侧链的应用

侧链的应用较单纯,就是将原链上的某些交易,转移到侧链上做确认,要结算时,在将结果广播到原链上清算。简单来说侧链最大的应用就是提升交易吞吐量。

现实世界中的赌场,就是侧链很好的例子。想像一下,如果每一个赌桌,都开放用新台币下注,桌上又是钞票又是零钱,每一局结算等荷官算钱都不知道浪费多少时间了。所以大部分赌场都会统一使用筹码下注,让所有人进场时将法币换成筹码(双向锚定,锁定原资产),所有赌局都透过筹码进行,要离开时再回到柜台结算,将筹码换回法币(交易结算,释放相应数量的资产)。

跨链的应用

与侧链相比,跨链涉及到两条不同的链,因此拥有更多样化的应用场景。 资产转移:不需要透过交易所即可进行资产交换。 原子交易:所谓原子交易就是说如果A交易成功了,那么B 就应该是成功,如果A 失败了,那么B 就肯定是同时失败的。BTC Relay 就是原子交易很好的例子,若比特币没有发送至约定地址,就无法触发智能合约发送以太币。 数据交换:链A 能够得知链B 上的数据

去中心化交易所:一般去中心化交易所只支援单一条链上的资产,例如EtherDelta只支援以太坊的ERC20代币。透过跨链技术,去中心化交易所即可实现不同链上的资产交换。