Cosmos入门学习(一):跨链到底在跨些什么

原文来自:巴比特|跨链到底在跨什么? 原文作者:黄世亮

原文链接:https://www.8btc.com/article/398387

欢迎与我交流,互相学习,VX:chainmans,备注:知乎 或 MGC等。微信群、每日推送相关信息。

第一时间获取最新资讯

第0章 引言

跨链是今年区块链里最火爆的技术,主打跨链技术的项目多的很,超级明星cosmos和polkadot主战场都是跨链。

但跨链到底是什么意思啊?

Cosmos入门学习(一):跨链到底在跨些什么_第1张图片

第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章 结束语

 未来是万链互跨呢?还是万链归一呢?

你可能感兴趣的:(blockchain)