原文来自:巴比特|跨链到底在跨什么? 原文作者:黄世亮
原文链接:https://www.8btc.com/article/398387
欢迎与我交流,互相学习,VX:chainmans,备注:知乎 或 MGC等。微信群、每日推送相关信息。
第一时间获取最新资讯
第0章 引言
跨链是今年区块链里最火爆的技术,主打跨链技术的项目多的很,超级明星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代币。
你看,这种的合约就涉及到两条链,这就是合约跨链。一条链上的智能合约,能够读取另外一条链上的特定信息,来执行合约代码,并给出确定性的结果。
第3章 跨链的应用举例
跨链有什么用呢?
第一场景是做去中心化的交易所。依赖币可以跨链,支持用户挂单,通过跨链合约来提供撮合,撮合成交后使用币的跨链来完成币的转移。理论上是可以做到完成不依赖于特定的服务器的。
现在的去中心化交易所,以太坊和EOS上的交易所,并不是严格意义上的跨链去中心化交易所。都是ETH和ERC20之间的交易,和EOS和EOS上的代币的交易。比特股是一个去中心化的交易所,通过网关发行稳定币的方式来将BTC等迁移到BTS内网来交易。
第二个场景是资产抵押。某条链上的币是否解锁,取决于另一条链上的特定信息。
第三个场景是读取链外数据(预言机)的智能合约。比如赌球,有专门的链外数据,即预言机,提供球赛结果。然后用户在以太坊上通过合约来对赌,双方押币进合约,合约采集预言机的特定数据来判决赌资归谁。
第4章 实现跨链生态
跨链这个概念的提出,会出现两种情况。第一种情况是,在现有链之间相互跨。比如让以太坊和比特币相互跨。第二种情况是,我造一个标准,以后大家按这个标准来设计新的链,所有这些新链就可以非常方便相互跨。
在跨链概念的早期,大家都想着第一种情况。最著名的就是闪电网络,中继和侧链三大技术。这种在现有链相互跨的生态里,是不会发一个叫“跨链币”的币的。跨链技术本生是不会发币。比如闪电网络就不是一种币,只是一种技术。
但在现有的链之间相互跨,因为各自链设计之处就没有考虑过要你跨我我跨你的场景,所以跨链还是很难的。你看侧链,中继,闪电网络等发展了那么多年,你有实际做过跨链吗?没有。
因为早期的链,很多基本上就是复制比特币技术。比如LTC基本上就是复制了BTC。代码都是复制的嘛,所以相互跨就有了理论上的依据。
在第一种情况发展了那么多年后,大家发明,哎呀,这玩意也搞不成啊。然后说,算了算了,看来我们还得想办法搞点别的事。这就诞生了今年的跨链热门。
现在的跨链热门,其实都包含了造链技术。就是我自己设计一条区块链,如cosmos,polkadot,vsystem。这些区块链里都包含了一组造链协议,就是按照特定的标准来设计一条新的链。只要在这个标准下设计出来的链,那相互跨就非常容易了。这些标准协议就是跨链的基础设施。
当然,在第二种情况下,并不是只有新造出来的链能相互跨,他们也会想办法让现有的链也加入到跨链生态中。也就是说,在第二种情况下往往是包含了第一种情况的。其中cosmos和polkadot都是使用类似于中继的技术来实现和现有的链跨。
polkadot就将跨现有的链叫着中继链。原理就是将原有链上的资产通过多重签名来锁定,然后在中继链上发行对应的稳定币。
第5章 结束语
未来是万链互跨呢?还是万链归一呢?