跨链到底在跨什么?
跨链是今年区块链里最火爆的技术,主打跨链技术的项目多的很,超级明星cosmos和polkadot主战场都是跨链。
但跨链到底是什么意思啊?
第1章 资产跨链
跨链技术很早就出现了,在2013年就大量出技术在讨论比特币的跨链。主要有三大跨链技术,闪电网络、侧链和中继。
在以太坊出现之前,区块链很少谈及“合约”,当时只谈“币”,当时的跨链技术都是指的是“资产(币)的跨链”。资产跨链,或许应该称为币跨链。
资产跨链简单来说是两条链的币相互发给对方。但这怎么发?币的跨链技术有很多,有双向锚定(two-way-peg),哈希时间锁,原子交换,资产质押转移,网关,联邦签名等等。
双向锚定是比特币侧链技术中非常重要的概念,用来实现比特币主链币和侧链币之间的跨链。双向锚定能够让侧链“知道”主链上的特定币是否处于锁定状态,并且依此锁定状态来解锁或销毁对应数量的侧链币。这就好像BTC“跨”到了侧链,或者反过,侧链币“跨”回了主链。
比特股是一个去中心化的交易所,里面可以交易比特币,哎,这里面的比特币是怎么出现的呢?用的就是网关技术。原理很简单,就是用户将比特币发给一个叫“网关”的地方,然后“网关”会生成一个比特币稳定币在比特股流通。用户要提比特币时,就反过来,网关会销毁比特币稳定币,然后将相同数量的比特币发给用户。
币的跨链有一个非常重要的概念叫“原子交换”。所谓的原子交换是指:A链上的一笔交易,和B链上的一笔交易,要么同时成立,要么同时不成立。
比如BTC和LTC,两个人,张三愿意拿1BTC换李四的100LTC,为了防止毁约,双方使用原子交换技术来完成币的互换。
张三给李四一个LTC地址;李四给张三一个BTC地址。
张三使用原子交换协议构建了一笔BTC交易,将1BTC发到李四的BTC地址。这笔交易成立的条件是张三的LTC地址收到李四发来的100LTC。
李四使用原子交换协议构建了一笔LTC交易,将100LTC发到张三的LTC地址。这笔LTC交易成立的条件是李四的BTC地址收到了张三发来的1BTC。
上述两笔交易要么同时成立,要么同时不成立,没有任何一方可以做到在收到对方的币后,不给币就跑路。
这就是币的跨链。本质上币的跨链并没有真实的币从一条链跑到另外一条链,只是币在各自链上相互纠缠一样锁定和解锁的状态。
第2章 合约跨链
以太坊诞生后,区块链开始大量讨论智能合约。智能合约本质上就是代码,这些代码可以依据区块链上的特定数据来触发执行。
智能合约我们可以简化理解成为一个函数,输入特定的参数,代码就会自动触发执行,就能得出特定的结果,并且给出稳定的输出结果。
f(x)=y
f()就是合约代码
x就是激活的代码的条件
y就是合约执行结果。
不跨链的智能合约,f(),x,和y都是在一条链上,不会出现在多条链上。
举一个例子说明。
EOS的众筹就是一个智能合约,这个合约有一个合约地址。
用户可以将从自己控制私钥的以太坊地址将ETH转入这个合约地址。
EOS的众筹合约每隔23小时就会计算合约地址一共收到多少ETH,并且计算出每个用户的地址将获得多少EOS代币。
过了23小时后,用户就可以向这个合约地址发起一次调用函数,要求合约返回计算好的EOS代币。
这个EOS的众筹合约就会将相应的EOS代币发送到用户的以太坊地址。
但以太坊上的智能合约,代码是在以太坊区块链上,要激活合约也需要在以太坊区块链上发送特定的交易。
以太坊诞生后,整个区块链社区又搞出了非常非常多的链,很多都带有智能合约的功能。然后就有人提出来,我们能不能在一条链上发布一个智能合约,然后依据另外一条链的特定信息,来触发这个智能合约来执行特定的操作呢?
这就是合约(调用)跨链。
就比如,如果有人做发一个ICO,目标是众筹稳定币USDT(为了举例,我们只考虑这是Omni版本的USDT),稳定币可以规避波动性风险。项目方向外界公布收币的BTC地址。
又因为比特币上不方便构建代币。项目方就在以太坊构建ERC20代币。项目方通过构建一个支持跨链的智能合约来分发这些ERC20代币。
用户使用自己控制私钥的BTC地址将USDT转入项目方公布的BTC地址上。
智能合约可以读取项目方公布的BTC地址的收币状态,合约能够读取到用户的付款地址,并且计算相应的代币数量。
用户通过以太坊钱包,和自己的比特币地址特定签名向合约发起调用函数。
合约依据调用函数和计算结果,向用户支付ERC20代币。
中国观察