CoinEx Chain开发团队:跨链的若干问题及其通俗解答

332 阅读9分钟

一、跨链解决的是信息传输问题吗?

我们总是把“跨链”和“通讯”连在一起说,有人也把跨链的协议和TCP/IP这类通讯的协议相提并论。那么跨链解决的,果真是信息传输问题吗?其实并不是。

我们在物联网上通过TCP/IP协议通讯时,对方没有传输信息给你时,你并不知道即将传输给你的信息是什么。然而对于公链而言,所有信息都是公开的,A链传给B链的信息,在到达B链之前,运行A链的节点的人,都已经了解了。任何人可以把Ta在A链上观察到的数据,上传到B链上,即所谓的信息存证。所以信息传输,并不是一个需要解决的问题。

跨链,所要解决的是两个问题,信任和共识:

  1. 信任:上传到B链上的跨链数据,的确是由A链发出的,而不是上传者杜撰的
  2. 共识:从A链传到B链上的数据,已经在A链上完全达成共识,不会被回滚了

二、两条链之间的跨链,仅仅是经济和技术问题吗?

跨链首先是经济问题,如果没啥应用需求,自然没有必要跨链。其次是技术问题,代码没有实现,自然也做不到跨链。

在解决了这两个问题之后,两条链要实现跨链,必须解决社区互信的问题。一旦A、B两条链之间有了跨链的通道,可以互相交换事实和Token,那么一个显然的事实是:

  1. 对A链而言,来自B链的信息究竟有多安全,其上限取决于B链本身的安全性:如果B链发生了深度重组(PoW的情形),或者Validator大范围作恶(PoS的情形),那么来自B链的信息就可能是错误的
  2. 如果B链上有安全漏洞,让某个恶意用户可以任意占有他人的Token,那么从A链转到B链上的Token,就会暴漏在风险之下。

所以,如果A链的社区和B链的社区,无法信任对方可以安全地运行一条区块链,那么它们相互之间的跨链就无从谈起,开发者也不会有动力去开发两条链间的跨链机制

这里引出一个有趣的问题:是否存在100%安全的跨链协议呢?并不存在。A链和B链的安全性,决定了它们之间的跨链应用的安全性的上限,跨链协议能做到只是不要引入新的安全漏洞,也就是说,不要拉低下限。

三、目前最常用最成熟的跨链机制是什么?

目前最常用最成熟的跨链机制,是网关。具体而言,是由某个人、某个机构或者某个集体,在A链上控制一个账户Alice,在B链上控制一个账户Bob,你A链上把Token转给Alice,Ta就在B链上用Bob账户转对应的Token给你。

这一机制最著名的应用,是USDT。Tether公司在不同区块链上都运作着USDT,不同链上的USDT内在价值都一致,都可以在它那里进行兑换。

其它的例子包括Binance在Binance Chain上发行的BTC.B,以及CoinEx在CoinEx Chain上发行的BTC,这些都是由单一公司作为网关的跨链Token。

四、这种网关机制是不是太过于中心化了

是的,有过分中心化的嫌疑。例如USDT可能会暴雷,交易所可能会携币跑路,没有其他力量来制衡。

一个改进的方法就是,由尽可能多的、有公信力的参与者来共同运营一个网关。典型的例子包括:RSK、Liquid这种比特币的侧链;比原运营的ByStack侧链。这些侧链,都有很多家交易所和矿池来共同运营,只要作恶者的数量不超过1/3,就是足够安全的。

为了实现多个参与者来共同控制一个账户,有两类技术手段:一是借助链上原本就有的多签机制,这要求参与者的数量不超过某个上限;二是直接使用阈值签名的技术,不管多少参与者,在链上均表现为单签,这一技术上,币安和比原都有很多贡献。

五、IBC协议相对于网关的优势在哪里?

Cosmos和Polkadot被称为跨链双雄,主打去中心化的IBC协议。是不是采纳了这种IBC协议之后,就一定比上述的网关机制更加安全和“去中心化”呢?

不一定。比如,一条由众多知名交易所和矿池共同运营的侧链,它的去中心化和安全性是很好的;而由不知名的一两个匿名Validator运行的两条区块链之间的跨链,就算用了IBC协议,它的去中心化和安全性也是很差的。就PoS链而言,Validator集体的信誉决定了安全的上限,它们不可信,技术上用什么协议也没用的。

IBC协议,相对于网关的优势在于,它在技术上实现了和起始链等同的安全性。所谓信誉,在技术上不可度量,在人心中会各有各的看法。而使用IBC协议之后,我们可以从技术上确信:

  1. 从A链发给B链的跨链消息,其真实性由A链的全部Validator背书
  2. 同时,只要A链的共识没有被破坏,上述的跨链消息就没有被破坏

使用网关的话,在某些时候的确可以声称,跨链网关的运营者更有信誉,因此网关比起始链的安全性还要好。这样的声称,会得到一部分人的认同,但未必能得到所有人的认同:网关的运营者是否比链的节点们更加可信,是无法客观评估的。

做到安全性和起始链等同,是在技术上能够达到的目标。而且,这个目标是否达到了,是能够客观评估的。

六、IBC和网关是截然不同的两种跨链机制吗?

表面上看起来,IBC比网关复杂很多,但换个角度看,它们本质上是相同的:IBC,其实就是一个由起始链所有节点共同运营的一个网关。起码在PoS链的场景下,可以如此认为。

假设在B链上设计了这样一种网关多签账户,这个多签账户里面的参与者(即各个公私钥对)可动态增减,在任的参与者的Voting Power可动态修改;同时,利用A链上的区块头,即可实现这里的增减和修改,以保证A链的Validator集合始终能够控制这个多签账户。这时,A链的Validator集合就可以非常方便地在B链上利用这个多签账户来签署交易了。

传统的网关,一旦参与者确定,就无法轻易更改,而且阈值签名,也无法实现用实数表示的Voting Power。但使用智能合约的话,的确可以实现上述的这种多签账户。这种网关多签账户,其功能的确像是网关,但是它又像IBC一样可以实现和起始链等同的安全性。

七、用ADS来实现World State,对跨链为何如此重要?

用ADS(Authenticated Data Structure)来实现World State,其初衷并不是为了跨链,而是为了实现状态查询的“去信任化(Truestless)”。要想查询链上的状态,最安全的方式是自己运营一个全节点,这样谁也骗不了你;但如果依赖别人运营的全节点来查询,如何避免Ta作恶来骗你呢?只需跑一个轻节点来验证区块头是正确的,其他所有信息都可以用区块头中的Merkle Root来验证。

轻节点是什么?对于PoS链而言,它利用区块头来同步Validator集合,同上面描述的网关多签账户的功能是一样的。

ADS并不是为了跨链而开发,但它的确可以简化跨链的步骤。

前文说到,只要有了“网关多签账户”,Validators就可以一起签署跨链消息了。我们知道,Valiators原本就有一个任务是签署区块头。有了ADS之后,签署跨链消息的任务,同签署区块头的任务合二为一,这样就减少了一个步骤。

跨链的消息都是由于链上交易而产生的,并且是World State的一部分。用了ADS之后,Validators只要签署了区块头,就相当于签署了整个World State,当然也就相当于签署了链上交易。

八、没有使用ADS的链之间,也可以实现跨链吗?

像EOS、EOSforce、Fibos这类EOS系的公链,它们都没有用ADS来实现World State,它们之间可以实现IBC风格的跨链吗?

其实也是可以的,只不过做不到“签署跨链消息的任务,同签署区块头的任务合二为一”。让Validators除了签署区块头之外,再专门签署一下跨链消息即可。对跨链消息的签署,可以在链上发交易进行,而且一次签署一批消息,这样开发起来也不是很难。

值得注意的是:Validators在签署区块头的时候,如果作恶(双签、不在线)就会受到惩罚;但是跨链交易被另外签署的话,就没有这些制约了。因此“另外签署”不是好主意,最好还是把对跨链交易的签名,也放在区块头里面。

*本文由CoinEx Chain开发团队撰写。CoinEx Chain是全球首条基于Tendermint共识协议和Cosmos SDK开发的DEX专用公链,借助IBC来实现DEX公链、智能合约链、隐私链三条链合一的方式去解决可扩展性(Scalability)、去中心化(Decentralization)、安全性(security)区块链不可能三角的问题,能够高性能的支持数字资产的交易以及基于智能合约的Defi应用。