什么是跨链(上)

  • maxdeath
  • 更新于 2021-09-04 21:17
  • 阅读 5950

带你真正读懂“跨链”

跨链这个词最近频频出现在区块链相关的媒体上,然而不出意料地,关于跨链这个概念的,说人话的科普文章寥寥无几。那么,我在这里试图深入浅出地,把跨链这个事的来龙去脉和所有技术概念一次性讲明白。

01 理论上的跨链

跨链这个事,从直觉上理解起来似乎是很容易的,基本上,一听到跨链,我们立刻会有这样的概念:

1.从场景上 —— 既然现在有不止一条区块链,那么显而易见地,我们需要某种让两条链产生关联的技术。

2.于是,从作用上,“跨链”应该是能够让两条链产生某种关联的技术。或者可能更确切一些,能把一条链上的某些东西“跨”到另一条链上。

因此,由于现实中确实有不止一条链存在,所以大部分人也都认可了“跨链”这个事很重要,但大部分人对于跨链的理解也就仅限于此了。究竟这个事要怎么做,难点在哪,是如何发展的,当前的技术瓶颈在什么地方,就很少有人知道了。

那么“跨链”这个事究竟是什么,难点在哪里,技术上又是怎么实现的呢?

我们先要从最基本的“跨链”概念说起。

假设,现在有两条区块链 —— 链A和链B,而根据区块链的基本原理,我们知道区块链是个由不同节点维护的账本,这些节点通过“共识算法”来保证账本上的所有东西都经过大部分人的同意,并且不可篡改。

我们假设维护链A的这群人叫A星人,维护链B的人叫B星人,两者毫无交集。

然后这个时候,A星的某个人去B星游玩,结果,一下宇宙飞船就被B星的海关拦住了——

“请出示你的身份。”

“我可是A星大佬,我在A星的身份是xxxx,我在A星产业无数,资产上百亿,你竟然拦我?”

看到A星大佬摆架子,海关人员不为所动,冷冷说道:“是吗?你有证据吗?”

A星大佬不屑地一笑:“当然,都在A链上,你可以自己去看。”

“哦?我只认识B链,不认识什么A链。”

而这里,就需要用到跨链技术了,但很不幸的,A星大佬没有这项技术,而A链和B链也都没有采用跨链技术。

于是,跨链的第一个难题就来了——

“哼,你找个认识A星的人一问便知。”

“不好意思,我不认识什么A星的人,如果你非要说自己是A星大佬,那么请出示证据。”

以上便是最基本的跨链 —— 信息跨链。

而信息跨链的基本假设、问题和方法,也就隐含在两人的对话之中了——

【假设】是:B星人愿意认同A星大佬在A星的地位,也就是愿意承认他在A链上的信息。

【问题】是:A星大佬要如何说服对方A链上真的有某些信息,比如他很有钱。

【方法】是:需要提供一个对方不需要去了解整个A链也能够验证的证据。

A星大佬心想我在A星是什么人物,A链上的证据不是信手拈来?于是一个电话打给下属,说“把我在A链上身份和资产的证据打包一份发过来!我马上就要。”

下属收到了命令之后,立刻带着公司的技术团队召开了紧急会议,然后经过一个通宵,双目血红的程序员把证据交给了下属,而下属战战兢兢地把证据传给了A星大佬。

A星大佬用100M带宽的缓慢的星际通讯网络里又足足下载了1天才下完全部证据,然后把证据交给了B星海关。

B星海关人员看来证据之后说:“你这不就是整条A链么?我说了我没空验证这整条链。”

A星大佬于是愤怒了,打开手机就把火全部发在了他的下属头上:“你是不是没有脑子?!我让你给我找我在A链上资产的证据?你把整条A链发过来了?”

“呃……”下属吞吞吐吐地回答,“技术团队找了很久也找不到这个‘证据’是什么,于是问了我们的科学顾问,而科学顾问说……由于A链用的是PoW算法,所以能够证明链上信息的证据……只有整条链……”

这就是“跨链”这件事 一 开始就摆在学术界面前的难题 ——

在中本聪共识的区块链中,也就是以比特币PoW所采用的,以及以太坊和大部分公链所采用的包括大家认知范围内的PoW,PoS,PoA算法的所有区块链中,共识是概率的,是没有最终性的。

以比特币为例,我们一般说五个确认,也就是一笔交易所在的区块如果后面有五个区块我们就认为这笔交易确认了。

但你要说这六个区块就是这笔交易成功了的铁证吗?理论上来说也不对,因为实际上还是有一定的概率在我们不知道的地方存在一条一样长或者更长的分叉,未来会被公布出来取代这条链,于是这笔交易就消失了。

那么,如果5个确认不够,那么几个才够呢?

不幸的是,理论上来说,多少个都不够,这就是没有最终性的含义。有没有有最终性的区块链呢?也有,我们一会再说。

于是,一个在A链上的消息m绝对为真的证据是找不出来的,最多,你把整条A链当作证据让人重新验证一遍,那样,能够证明这个m和“真的就在A链上”一样真。否则的话,只要你给的证据不是整条链,比如只是A链的一段,那么实际上都不能百分之百的保证“m在A链上”。

A星大佬把手机交给B星海关,他手下的科学团队和海关的工作人员一通解释,B星海关表示十分理解,于是将“A星大佬在A链的h区块高度有信息m”这个信息发到了B链上,然后据此给A星大佬发了个9527的临时身份。

A星大佬长舒一口气,拿着临时身份和行李走了进去,可是才走了两步就又被拦下来了:“抱歉,由于你的身份是临时的,请不要离开隔离区。”

“那这个身份多久才能变成正式的?”

“直到你把百分之百证明自己A链上的身份的证据给我们。”

“不是给你解释了吗?A链提供不了这样的证据。”

“呃……那就只能委屈你一直在隔离区呆着了。”

“好吧……那隔离区在哪?我在隔离区走走总行吧?”

“隔离区就是这间屋子。”

A星大佬彻底崩溃了,但海关官员还在继续解释:“因为我们放你出去,你用临时身份在B链上发了交易并且已经达成了共识,那么到时候如果你在A链上的信息更改了,那么B链上的就会出现不一致——有人看到A链上的h高度上没有信息m,于是就判定刚才我发的验证是假的,于是整条B链就会产生分叉。说白了——这个宇宙有许多星球,有许多链,我们无法判断每条链都用什么样的共识算法,也不知道哪条链有多安全。如果有个X星实际上已经被恶意节点控制了,那么即便给我整条X链,上面的东西依旧是可以篡改的。而如果我就根据这个认可了X星人的某个X链上的消息并将这个消息发上B链,相当于我把B链的安全性绑定在X链上了。这个时候,B链的确认就和X链一样不可靠,因为一旦X链分叉,篡改了被背书的消息,那么B链也就会产生分叉。”

那么,我们说回最终性这回事。

假设A链采用拜占庭容错算法,有最终性,也就是说,A星大佬这次可以提供一个百分之百保证某条消息在A链上的证据了。

那这样,是不是跨链就能成了呢?

我们带回刚才的逻辑,实际上B星海关还是可以用相同的理由拒绝掉 —— 虽然你这里有这个消息百分之百在A链上的证据,但是我怎么知道A链是安全的呢?如果我因为这个证据就认可你,我还是相当于把B链的安全性降到和A链一样了。

于是,这个问题就无解了么?

02 实际中的跨链

当然不是,实际上,办法总比问题多。

实际上,这个问题和之前我们在DeFi的文章中提过的“预言机”的问题是一样的。

预言机的问题是:怎么样从链外获取正确和安全(不会出现给出不一致信息的情况)的信息,而我们的答案是 —— 我们不知道,但是这不妨碍我们把这个我们不知道的问题抽象成一个叫做“预言机”的东西,把它放在外部世界和区块链之中,它可以对于链外的东西给出正确而又安全的信息并且签名认证,然后,我们在“预言机”存在的前提下继续做应用。而与此同时,我们再去思考怎么实现这么一个预言机。

而现在跨链面临的问题是一样的 —— 同样是从链外获取正确和安全的信息,只不过这次信息的来源变成了另一条区块链。

所以,我们不妨先把这个问题抽象出来,起名叫“跨链桥”

有人可能会觉得 —— 你这不是掩耳盗铃吗?搞不定的问题又不会因为你给它改了个名字就消失。

但其实我们不仅仅是给它起了个名字,而是将这些问题的解决方案单独作为一个独立的主体搁到了区块链之外。于是,就不会出现之前的,把A链信息跨过来就一定会把B链的安全性降到和A链一样(在证据不绝对的情况下,甚至更低)的情况。因为其实不管信息源是另一条链还是比链更不可靠的来源,反正我们现在一视同仁,都当作是个我们认为可靠的,叫做“预言机”或者“跨链桥”的主体。

而想要让这个主体对于B链可信,实际上方法要灵活得多 —— 比如经济抵押就是一个简便的方法。

也就是说:

A星大佬这次想要入境,这次B星海关换了一个笑容甜美的小姐姐:

“您好先生,请证明您的身份。”

“这是整条A链,你看行不行。”

“您好,我们不接收这样的证据,不过没关系,您可以将证据提供给C公司,并且提交一笔费用,而C公司会负责审核您的证据然后向我们提交审核结果。”

“所以说你们可以认可C公司的审核结果?即便我提供的证据并不是百分之百安全?”

“我们认可C公司的声誉,同时,C公司在B链上有足够的资产和抵押,我们认为他不会提供错误的审核结果。而另一方面,如果他们认可了你的证据,那么就证明他们认为你提供的费用足以弥补可能的风险和造成的损失。”

“那么……假设,我是说假设,我来自不可靠的星球,或者我伪造了证据骗过了他们呢?你们会怎么处理?”

“我们只认他们给的结果。如果你骗过了他们,那么你的信息在B链上就是有效的,但是造成的损失,我们会去扣除C公司在链上的押金。”

C公司会怎么审核A星大佬的信息呢?其实很简单,它不用采用任何复杂的验证技术,也不需要A星大佬再提供什么额外的证据,他只要跑个A链的节点就好了。

实际上,和负责提供链外信息的预言机一样,目前负责提供其他链信息的C公司其实多数也并没有提供抵押,但将这个服务转包出去的好处在于,我们现在倾向于认为 —— 愿意提供这类服务的人由于自己的利益有诚实地并且一致地提供链外信息的意愿,自断财路的事大家都不会去做。

而事实也确实如此,目前还没有看到提供预言机或者提供跨链服务的机构恶意攻击这个机制的情况。然而,有意愿不代表有能力,因为预言机和跨链导致的安全问题也一再出现,而这就是另一个故事了。

03 资产跨链

A星大佬终于办好了入境手续。这个时候C公司提出了一个offer:“你到B星得要钱吧?要不要使用我们的资产跨链服务?”

A星大佬一听来了兴趣:“你先说说这个资产跨链是怎么回事?”

“简单说就是你在A链把你的钱打进某个地址,然后我们就在B链上我们把钱打给你。”

A星大佬一下就警惕了起来:“等等,你是说,我得把钱先打给你?这听起来很危险啊,我怎么知道我把钱打给你了之后你会不会把钱给我?”

“哈哈,这个您不用担心,刚才我说的只是简洁的说法,具体来说是这样的……”C公司的经理解释道:“首先,我们会在A链上部署一个合约——这个合约要求你把钱打进一个地址,然后这笔钱会被锁住。同时,我们在B链上也部署一个合约,这笔合约的规则是:‘如果A链有笔钱在这个地址被锁住,而且把我们认证的签名信息发进这个合约,就把钱在B链上解锁’。而反之亦然,你也可以再把B链上的钱发给另一个锁定地址,然后用类似的方法拿回刚才你在A链上锁住的钱。” 640

“听起来很复杂……我怎么能知道给你的钱是真的被‘锁住’了,你没办法卷走呢?”

“以上的这些逻辑都写在智能合约里,你可以让技术人员或者第三方审查这些逻辑有没有漏洞或者后门之类的。”

“那跨链的过程中会不会出问题呢?比如我的钱锁住了,但是B链上的钱迟迟不解锁,这个时候汇率变了,我不就亏了吗?”

“你说的有道理,这的确是个麻烦事,所以,我们不直接把A链上的资产兑换成B链上的资产,而是在B链上创造A链上的镜像资产 —— 也就是说,你在A链上锁定100A币,我不是根据汇率在B链上给你兑换B币,而是给你100叫做xA币的镜像资产……”

“等等……好像有哪里不对。”A星大佬打断了C公司经理,“所以你给我的不是B币而是你们自己发行xA币?你以为我是傻子很好骗吗?”

“不不您听我解释 —— 首先,如果我们锁定和解锁合约的安全性100%可靠,你又能够相信我们会真实地提供跨链信息,那么xA和A其实就是等值的,因为任何人都可以把xA锁定之后去A链上解锁等值的A币,这点没错对吧。”

“好像没错。”

“那么如果B链上有一个自由的关于xA的市场,那么这个市场会怎么对xA定价呢?市场上的人肯定和您一样会去找专业人士审核我们的合约和机制,如果他们对安全有信心,那么xA的定价就会和A基本一致。所以说,您其实并不需要知道xA究竟有什么用,或者是不是安全,只需要知道在B链的市场上,xA可以和A等价交换就可以了,这其实也说明了市场认为我们的机制是安全的。”

“这么说也有道理。”A星大佬继续问,“那么B链上有这种开放的市场吗?”

“有的,这就是DEX了。也就是说,您也不需要担心汇率的问题,这个市场的汇率会和链外的市场保持一致(详见DEX的文章)。因此,我们只要帮你完成了A币和xA币之间的兑换,你可以自行选择汇率合适的情况换成B币。”

以上,就是资产跨链的基本原理。

正如A星大佬纠结的一样,资产跨链的问题也就是这几个——

1.哈希锁定机制:在两条链上各部署一个(或几个)智能合约,使得一条链上的锁定币的信息可以作为钥匙,解锁另一条链上的币,反之亦然。这点,是跨链技术的核心,但实际上如果两条链都像是以太坊这样“图灵完备”的区块链的话,其实实现起来并不困难。但另一方面,如果其中一条链是如同比特币这样的功能有限的链,如何实现这件事就需要花上很多功夫。

2.消息跨链机制:大家最初担心的事情和前面一样,就是如何保证跨链证据的安全性——尤其是如果有人提供了一个证据说A币锁定了,然后拿A币换成了B币,但接着A币锁定的消息没了(由于共识的安全性),那么如果B链不回滚这笔交易,则相当于B币凭空增发了,这对于B币的经济模型是很大的打击。但和之前的消息跨链一样,通过把跨链外包给第三方,我们也可以规避掉这个问题。

3.接下来的问题就是A星大佬担心的了 —— 如果是希望把A币直接跨链过来变成B币,那么跨链的过程中汇率变了怎么办?从现在的方案看起来,这事有些不可理喻。但最初,人们对于资产跨链的方案是:在A链上锁定A币 ——> 在B链上释放B币。 而这里,除了涉及到需要从预言机读取汇率的问题,最令人头疼的就是区块链对于交易上链的时间没有保证这件事了 ——

由于区块链对于交易上链的时间其实是没有保证的,而且是币价越波动交易越容易堵塞。于是,虽然说从技术上通过哈希锁定+消息跨链来实现“在A链上锁定A币 ——> 在B链上释放B币”是可行的,但是从实际当中完全行不通,因为这个过程时间是不定的。

于是,比如现在A币可以换10个B币,然后你发起来跨链,结果B币暴跌,而因此B链出现了堵塞,直到过了4个小时,A币只能换5个B币了。这个时候你肯定想的是:我不换了,把A币还给我。然而,跨链的这个过程是无法中途撤销的,于是,你只能眼睁睁地看着你的钱包缩水了一半。这样的资产跨链技术显然是不能令人满意的。

这个问题其实困扰了大家很久,直到DEX和类似于wBTC这种货币的出现这个问题才迎刃而解。方法其实和我们在DEX里介绍wBTC的原理是一致的——就是不直接兑换,而是在另一条链上发行这个币种的复制。这一来前面的问题也迎刃而解 —— 即便是A币的锁定交易出了问题,也只是导致复制出来的xA币价下跌,而不会影响到B的币价。至于汇率的问题,之前主要的担心是跨链这个过程的时间无法保证,因此担心这个过程中的币价波动。而现在如果A和xA是一比一兑换的,那么跨链的速度问题就没那么值得担心了。

有人可能会觉得——这个法子看起来很简单啊,为什么之前没人想到呢?很简单,因为之前DEX还不普及,你把A币跨成xA币并不是真的资产跨链。但现在,如果B链上有能够把xA和B币进行兑换的DEX,那么这种方案很显然是目前看来最合逻辑的跨链方案。

本期文章,我们讨论了 「理论上的跨链」、「现实中的跨链」和「资产跨链」,下一篇我们再接着仔细聊聊 「跨链的四种方法」,关注点赞,咱们下期见!

加入Colacoder,和区块链资深研究者和开发人员,一起用通俗的语言,聊一聊圈内热点话题背后的技术和逻辑,欢迎投稿!

点赞 11
收藏 7
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

2 条评论

请先 登录 后评论
maxdeath
maxdeath
代尔夫特理工大学 (TU Delft) · 区块链博士后 & 代尔夫特理工大学 (TU Delft) · 信息论博士