2021年10月28日

专访 Cdot 刘毅:中继跨链是无需信赖的抱负跨链方法,但难以实现

专访 Cdot 刘毅:中继跨链是无需信赖的抱负跨链方法,但难以实现

Cdot 创始人刘毅共享跨链技能原理及完结难点。…比特币,以太坊,跨链,Cosmos,Polkadot,Cdot,Flow 比特币 以太坊 跨链 Cosmos Polkadot Cdot Flow机械钟 图标 Logo机械钟区块链作者,团队,专栏,大众号,头条· ·阅览约 13 分钟

Cdot 创始人刘毅共享跨链技能原理及完结难点。

原文标题:《一文详解跨链的技能点及难点:从完美跨链谈起》
受访者:刘毅,Cdot 创始人
采访与撰文:李画

关于跨链需求知道的第一件作业是,咱们永久没有办法把一条链上的财物真实的搬运到另一条链上,以比特币为例,2100 万枚比特币,悉数都会且只会呆在某个承认的比特币地址中,而不会去其他任何地方。

专访 Cdot 刘毅:中继跨链是无需信赖的抱负跨链办法,但难以完结

那用跨链完结的财物搬运是在做什么?它是在一条链上承认财物,在另一条链上发行该财物的等值替代品。(注:哈希承认不属于该办法)

以比特币和以太坊之间的跨链为例,它需求你把比特币转入某个地址,承认这部分比特币,然后在以太坊上发行比特币替代品,并转入你在以太坊上的地址;换回的时分,需求你调用智能合约毁掉比特币替代品,然后在比特币网络上把承认的比特币开释给你。

不难发现,这其间仅有的难点就在于音讯的互通。

也便是说,当你在比特币网络把比特币承认后,只需以太坊能知道这件事,就可以在以太坊上铸币给你;当你在以太坊把替代品毁掉后,只需比特币网络能知道这件事,就可以在比特币网络上开释币给你。

那么音讯的互通难在哪里?我采访了 Cdot 的创始人刘毅,刘毅以为多链是一种更具生命力的体系,因而他和他的团队致力于链与链之间的联通。Cdot 现已为以太坊和 Flow 建立了跨链桥,也正在进行 Cosmos 与 Polkadot、Cosmos 与以太坊的跨链研制。

完美跨链为何难以完结

问:先问一个「大」问题,你是怎样看待跨链的重要性的?

刘毅:公链技能发展面对的首要问题是怎样打破功用和本钱瓶颈,一同不过度献身链上使用的可组合性。现在看有三个处理计划:分片、Layer 2、多链(跨链)。Polkadot、Cosmos、Ava,还有包含 Cdot 在内的很多团队,做得便是多链这个方向。

也便是说,假如可以用 Substrate /Cosmos SDK 为每个加密协议开宣布专用的链,又可以经过跨链,让这个加密协议可以跟其他加密协议互操作,那么公链的功用和本钱问题就可以得到处理。

问:回归今日的技能主题,跨链时两条链音讯的互通难在哪里?

刘毅:可以从 Vitalik 在 2016 年写的一篇叫《Chain Interoperability》的文章谈起,他把跨链技能分成了三类,哈希时刻锁、见证人、中继,我觉得基本上可以沿袭。

见证人和中继都是链下进程,它们担任把音讯转来转去 :它看到 A 链上产生了一件事,就告知 B 链(注:担任两条链音讯的互通)。

那它俩的差异是什么?当我在方针链上收到一个音讯后,假如是见证人跨链,我验证的是这条音讯来自于见证人,假如我信赖见证人,我就信赖这个音讯,就履行该履行的操作。

假如是中继跨链,我验证的不是这条音讯来自于哪个中继,我验证的是这条音讯是不是来自于源链,假如是,就履行该履行的操作。

也便是说,见证人可以看做是需求被信赖的中继,中继可以看做是无需被信赖的见证人。这便是两者的中心差异,中继明显比见证人更契合 trustless 的准则。

中继是无法做恶的,假如一个中继提交的信息不是来自于源链,方针链验证之后会把它辨认出来。可是见证人是可以做恶的,它可以造出一个音讯发给方针链,方针链验证它是来自于自己信赖的见证人后,就会履行这个操作。

这样看来,好像咱们都应该用中继去做跨链产品,但为什么还存在见证人办法?由于中继跨链的要求比较高。

它的要求究竟是什么?假定咱们是两条链,你上面产生了一个事情,由一个中继发给了我,我要验证这个信息来自于你这条链,对吧?

怎样验证呢?我的链上需求有你的链的轻客户端。可以粗略地了解为相似于比特币 SPV 的机制,但产生在链上,而不是在手机钱包里,即你的一切区块头我这儿都要有。

这个时分,当一条音讯过来,中继不光要把音讯给我,还要把音讯的证明给我,这个证明是一个 Merkle Proof,它告知我这个事情或这笔买卖是产生在你这条链上的哪个区块(高度)。

我拿到 Merkle Proof 后,由于有你一切的区块头,就可以把对应高度的区块头拿出来,用 Merkle Proof 验证这个买卖或许这个事情是否存在。假如存在性得到证明,我就承认了这个音讯的确是源自于你这条链的。

然后,当我这条链生成一个事情或许产生一笔买卖后,中继也发给你,你也有我悉数的区块头,也可以验证这个音讯是否来自于我。这是一个完美的跨链,对吧?

可为什么咱们不去完结完美的中继跨链呢?由于有些链是没有办法完结其他链的轻客户端的。比方比特币,它上面完结不了任何一个链的轻客户端。

以太坊上能不能完结其他链的轻客户端呢?要看完结的难度。以太坊需求用智能合约完结轻客户端,但智能合约是有 gas 约束的,所以轻客户端验证的核算量是要可以包容到 Gas Limit 以内的。

问:可不可以这么以为,假如一个链不具备完结别的一个链的轻客户端的条件,它就永久无法以中继的办法与另一个链跨链?

刘毅:它就只能用见证人的办法跨链,但可以混合,一个方向上用见证人,别的一个方向上用中继。

比方我开发一条链,比特币必定完结不了我的轻客户端,但我可以完结比特币的轻客户端,那么比特币到我这个方向可以用中继,我到比特币这个方向就只能用见证人。

专访 Cdot 刘毅:中继跨链是无需信赖的抱负跨链办法,但难以完结

问:以太坊的情况怎样?比方要完结以太坊与 Cosmos 的中继跨链。

刘毅:以太坊是一个杂乱的问题,它有条件完结一些轻客户端,但就像上边说的,最首要的约束是 Gas Limit。

比方一个 Tendermint (Cosmos 选用的一致协议)的链,中继跨链需求验证它的区块头,它的区块头是一切验证者的签名,这些签名用的是 BLS 签名算法,验证区块头就要验证这些 BLS 签名,可是,以太坊上没有预编译 BLS 签名。

智能合约可以直接调用预编译加密算法,比方调 ECRecover 办法,用它验证 ECDSA 签名只需求 3000 gas,仍是比较低的;但验证没有预编译的 BLS 签名,就得把整个的签名验证算法 Solidity 完结,不是底层支撑的,这个太贵了。

验证一个 BLS 签名,最优好像是二十几万 gas,假如 Tendermint 上有 100 个验证人,那每个区块或许就有 100 个签名,验证 100 个 BLS 签名,gas 必定会超,不或许做到。

不过本年 Vitalik 写的道路图上,以太坊 1.x 会添加 BLS 签名预编译合约,相当于在客户端底层完结 BLS 验证,那么一个函数调用就可以验证签名。

假定和 ECDSA 相同,也是 3000 gas,那验证 100 个 BLS 签名是三十万 gas,这就有或许在智能合约里完结。

有了 BLS 预编译后,理论上就可以在以太坊上完结 Tendermint 的轻客户端,那么以太坊和 Cosmos 就可以完结双向的中继跨过。所以说和 Cosmos 中继跨链的话,比特币必定不可,以太坊是现在不可,未来或许行。

问:即便都是选用 Cosmos 的 IBC 规范开发的链,也不是天然就能跨链?

刘毅:对,两条链即便都完结了 IBC,要中继跨链的话还要完结对方链的轻客户端。

跨链音讯怎样在链间传递

问:轻客户端用于跨链音讯的验证,但跨链音讯自身是怎样在两条链间传递的?

刘毅:跨链桥很形象,它有两个桥墩和一个桥梁。两个桥墩便是两套智能合约(有些链或许叫模块),一个运转在 A 链,一个运转在 B 链;中心是桥梁,桥梁是链下进程,担任监控两头这两套智能合约的事情。

问:比方我在以太坊上把一只加密猫锁进了智能合约,链下进程监听到这个事情很简略,但它怎样告知 Flow 上的智能合约我锁了一只猫?

刘毅:链下进程便是给 Flow 发一笔买卖,说以太坊这边锁了一只猫,你那儿要铸造出一只猫。它是一个程序,经过 RPC (远程进程调用)接口,一边连以太坊的节点,另一边连 Flow 的节点。

问:能完好描绘一个详细的跨链进程吗?

刘毅:假定现在有一个 ERC20 的代币,比方说是 UNI,它发行在以太坊上,咱们想把它跨到 PlatON 上面去。

那么以太坊这边要有一个智能合约,比方叫 Vault 合约,它是跨链桥的一个桥墩;跨链的用户要做两笔买卖,第一笔买卖是调用 UNI 合约的 Approve 办法,答应 Vault 合约转走多少用户的 UNI。

第二笔买卖是发给 Vault 合约的 Lock 办法,把要承认的币种(本例是 UNI)和数量(比方 500 个) 作为参数传进去,然后还要供给一个 PlatON 的地址,说我锁 500 个是为了在这个地址上铸造出 500 个 UNI 的替代品。

这个时分,Vault 合约就会去调用 UNI 合约做 UNI 的搬运,由于 Vault 合约现已被 Approve 了,就可以把 UNI 从用户地址转到 Vault 合约的地址上,也便是把 UNI 锁住。

锁完之后,Vault 合约就会发一个事情,比方叫 AssetLock 事情;链下进程是经过 RPC 接口连在以太坊节点上的,它会订阅 Vault 合约的 AssetLock 事情,这个事情只需一出现在日志里,链下进程就得到这个事情了。

这个事情里包含相关参数,比方承认的是哪个币,锁了多少,另一条链上的受益人是谁;链下进程会等候比方说 100 个块的承认,不可逆转;然后,链下进程也有一个衔接 PlatON 的 RPC 接口,它会提交一笔买卖到 PlatON,假定这笔买卖叫 Mint。

PlatON 上也会有一个合约,比方叫 Control 合约,它是跨链桥的另一个桥墩;Control 合约事先会创立一个相似 ERC20 的合约,比方叫 EUNI,Control 合约是这个合约的 owner,也便是说它有权利操控 EUNI 合约的代币供给。

Control 合约收到 Mint 恳求后,验证这个恳求的确来自于见证人,就会调用 EUNI 合约的 Mint 办法,告知它给某个地址铸造 500 个 EUNI 代币;EUNI 铸造出来后,就会放在用户之前供给的地址上,用户就可以用了。

这个时分,假定用户把 EUNI 转给了别的一个用户,新用户想要以太坊上的 UNI,那他要做的操作是先 Approve,然后调用 Control 合约的 Redeem 办法,烧掉比方说 100 个 EUNI,并开释一个事情叫 AssetBurn。

链下进程监控到 Control 合约的 AssetBurn 事情,就会给以太坊 Vault 合约发一个买卖恳求,调用 Release 接口,以太坊验证这个买卖是来自于见证人后,就会把 UNI 从 Vault 合约的地址上搬运到指定的用户地址上,用户就得到了原始的 UNI。这便是一个完好的跨链进程。

问:可以抛开「链下进程」这个人物完结跨链吗?比方一条链直接去监听另一条链,然后完结相关的跨链操作?

刘毅:这是做不到的,由于链都不能自动主张操作,链的逻辑都是被迫的。

仅有的破例是 Substrate (Polkadot 开发结构),它上边有 off-chain worker 这个机制,可以用一个链下作业机主张恳求。其他的,比方以太坊智能合约,是不能自己自动主张干什么事的,它只需被调用。

问:可不可以这么了解,不管是中继跨链仍是见证人跨链,都需求链下进程来传递音讯,所不同的是,中继跨链经过轻客户端验证音讯,见证人跨链信赖见证人供给的音讯?

刘毅:这样了解基本上没有问题。中继跨链依靠链下进程的可用性,但不依靠它的忠实。

见证人怎样更值得信赖

问:好像经过链下进程传递音讯不难,难的是验证音讯或许信赖音讯?

刘毅:对,由于两条链都有 RPC 接口,并且都有 SDK (软件开发工具包),是可以拜访的,所以不难。

并且特定意图的跨链,不需求界说一个可扩展的协议,只需自己够用就好:界说是什么事情,抽取什么参数,提交什么参数给谁,就行了。

问:验证音讯是技能问题,要么能验证要么不能验证,但信赖音讯的话,好像就有不同的模型,反映在见证人跨链上便是它可以有不同的完结办法 ,需求信赖的音讯可以来自中心化的见证人,也可以来自去中心化的见证人?

刘毅:其实便是一个安全性问题。而安满是一个没有极限的东西,也没有肯定,安全通常是一个渐进的进程。

比方一开始,没什么财物时,可以用单见证人,连 KMS (密钥办理服务)都不必;有了财物后就要用 KMS;财物多了,需求多个见证人,为了省 gas,就要做链下签名聚合;财物更多了,就要用到 MPC (安全多方核算)。

然后再多财物,就要对参加 MPC 的多方进行随机分组调度,例如 RenVM。这样就跟做一条公链的难度和实践都差不多,但它也就完结了去中心化的见证人。

问:可以更详细地描绘一下吗?

刘毅:比方一边是以太坊,一边是 Flow,咱们可以开发一个见证人的节点,把两头连起来。

但这一个见证人的安全性和可用性是比较低的,假如黑客攻破了见证人的服务器,拿到见证人的私钥,就可以把一切锁在以太坊上面的 ETH 或许 ERC20 偷走。

还有一个危险便是可用性,假如见证人服务器宕机了,那在一条链上承认财物后,另一条链上是铸造不出来的,由于音讯传不过去。

假如承载的跨链财物不多,一个见证人是可以承受的,也有一些办法处理单见证人的安全问题和宕机问题。但假如想进一步进步,怎样做?可以包含 3 个见证人。

假定一边是比特币,一边是以太坊,比特币网络上有一个 2/3 的多签钱包,用户发买卖把比特币锁进去,3 个见证人看到后,就给以太坊发音讯,以太坊承认音讯来自于见证人后,就在以太坊上铸造代币。

兑回的时分,用户在以太坊发买卖要求换回比特币,3 个见证人看到后,就去比特币网络发多签:一个见证人发一笔买卖,说要开释,另一个见证人也发一笔买卖,说要开释,2/3 钱包看到够两个签名了,就开释比特币给用户。

2/3 比一个见证人要好一点,但 3 个私钥持有人中只需有 2 人勾结,就能把比特币悉数拿走,所以其去中心化程度是不行的。

那么更好的计划是 MPC/TSS (安全多方核算 / 门限签名)支撑下的见证人链。方才说见证人需求被信赖,但假如把见证人做成一条链,它是不是也可以完结 trustless ?

信赖调集扩展了,除了要信赖源链、方针链,中心还有一个见证人,但这个见证人不是中心化的,它是一条链,有自己的经济安全性,只需信赖见证人链的验证者(validator)调集全体不会作恶,那整个进程仍是 trustless 的。

见证人链可以把很多的见证人节点随机分组,每个组都会比方说有一个比特币地址,一段时刻之后再把这些节点从头分组,这样的话,节点假如想勾结起来偷走比特币是不太简略的。

这其间门限签名的作用是,比方一个分组里有 21 个节点,每个节点拿一片私钥,假如设置为 15/21,那这 21 个节点里需求有 15 个节点签名,然后构成一个 ECDSA 的签名,再经过一笔买卖把钱包解锁。

明显这种办法的安全性更高,也更牢靠(可以忍受 6 个节点不在线,或许成心不参加签名),并且更经济,由于解锁比特币只需求发一次买卖。

在聚合门限签名的进程中,需求用到 MPC,由于不能把节点的私钥放到一同去签名,需求咱们别离做核算。所所以门限签名加 MPC 的一个机制,这样可以构成一个见证人链。

问:MPC/TSS 通常被用于比特币与以太坊之间的跨链,可不可以把它方便地移植到别的两条链之间做跨链?

刘毅:可以,但不必定很简略。它的门限签名和 MPC 是针对 ECDSA 签名的,这套机制在 ECDSA 的链之间做财物跨链是简略的。假如它的门限签名和 MPC 支撑其他签名算法,这套机制则是可以扩展到其他链的。

专访 Cdot 刘毅:中继跨链是无需信赖的抱负跨链办法,但难以完结

问:咱们对中继跨链和见证人跨链有了必定的了解,那么哈希时刻锁是怎样的一种跨链机制?

刘毅:我给哈希时刻锁这种办法起了一个新的姓名,叫外部和谐。

外部和谐是指在跨链的全进程中,两条链是互不知道对方的,A 链不知道 B 链上产生了什么,B 链不知道 A 链上产生了什么(注:在中继跨链和见证人跨链中,两条链是相互知道的)。

比方哈希时刻锁,咱们是先在 A 上面做一个买卖,拿到哈希之后,再把这个哈希提交给 B,这是两个用户钱包在做和谐的跨链,两条链自身是不知道对方链的。

为什么要把哈希时刻锁扩展成叫外部和谐呢?由于除了哈希时刻锁外,还有很多的非哈希时刻锁的外部和谐式跨链。

这其间最大的一个使用便是中心化的买卖所,我把比特币存进去,换成以太坊提出来,这便是一个 web 使用做和谐的跨链。

外部和谐的跨链在联盟链范畴用得也十分多,联盟链厂商,例如 Hyperledger Cactus,便是专门做外部和谐的中心件,它可以跨两个链。用户把一个买卖提交到中心件上,中心件就知道先在 A 链上边做一个操作,再在 B 链上做一个操作,A 链和 B 链相互之间是不知情的。

所以不管是由钱包做和谐,仍是由使用做和谐,仍是由中心件做和谐,这一类跨链的特色便是两个链实践上是互不知情的,是有外部实体在做和谐。

为什么咱们在公链或许加密协议范畴很少提外部和谐?由于 web 使用或许中心件必定是由中心化实体运转的,不或许做到去中心化。

但钱包做外部实体和谐的跨链可以以为是 trustless 的,由于用户和钱包是合体的,咱们做任何操作都必须信赖钱包,也便是说它没有扩展信赖调集。这便是为什么把哈希时刻锁当成一种 trustless 的跨链。

但哈希时刻锁一个是功用受限,它能做的便是财物的交换,别的它也有事务上的问题。跨链的 atomic swap 在 2015 年就完结了,到现在 5 年时刻过去了,没有构成什么事务。

完毕语

让咱们以一个小小的总结完毕这篇文章吧。好像可以把如今盛行的跨链办法分为三大类:

第一类:中心化的跨链(类外部和谐)。它是由一个中心化的第三方在一条链上典当财物,在另一条链上发行财物,财物的跨链实践上是在该第三方典当和发行财物时产生,在此进程中,两条链之间并未互通音讯。

用户在进行跨链操作时,并不是一个锁币、铸币的进程,而是更接近于把 A 链上的财物兑换为 B 链上的、由第三方发行的另一种财物。

中心化的跨链完结起来最为简略,但它依靠于一个较强的中心化的信赖;此类跨链项目包含买卖所供给的跨链财物等等。

第二类:见证人跨链。经过链下进程传递音讯,在一条链上承认或解锁财物,在另一条链上铸造或毁掉财物;两条链都需求信赖见证人传递的音讯为真。

见证人可以是一个或多个见证人节点,也可以是一条见证人节点组成的链,后者尽管需求信赖见证人,但可以以为它是去中心化的,由于它不需求信赖某个或某些中心化的第三方。

见证人跨链完结起来可以简略,也可以杂乱,取决于见证人的构成;此类跨链项目包含 RenVM、tBTC 等等。

第三类:中继跨链。经过链下进程传递音讯,在一条链上承认或解锁财物,在另一条链上铸造或毁掉财物;两条链上有对方链的轻客户端,经过轻客户端验证链下进程传递的音讯是否为真。

中继跨链是无需信赖的抱负跨链办法,但由于其完结难度,现在还难以见到;在 Cosmos 的 IBC 跨链 1.0 上线之后,可以在两条 Cosmos 链之间完结中继跨链。

Cdot 也正在 ICF 基金会(Cosmos 生态基金)的赞助下开发 Substrate IBC,经过它可以使 Substrate 开发的使用链和支撑 IBC 的链完结中继跨链,Substrate IBC 期望成为多链国际的重要根底组件。

免责声明:作为区块链信息渠道,本站所发布文章仅代表作者个人观点,与链闻 ChainNews 态度无关。文章内的信息、定见等均仅供参考,并非作为或被视为实践出资主张。

[标签:作者]