受访人:p0n1,安比实验室研究员;王东,路印协议创始人;刘毅,Cdot 创始人;John,Poly Network 创始成员

跨layer、跨链、不同跨layer的办法、不同跨链的办法,看上去纷乱芜杂令人利诱,但它们背后的逻辑是简略的,本文对各种跨layer与跨链办法做了简要总结,希望能让「跨」这件事看上去清晰些。

这篇文章更像一个索引,围绕下图打开,每种办法的详细完成假如以前文章讨论过,便只做关键内容的引证,假如你对此了解便可跳过;假如未讨论过,便会详细打开。

一文理清跨layer与跨链方式

01 跨layer

Layer 2与侧链(包含其他公链)是两种不同的主体,跨Layer与跨链是两件截然不同的工作。以比方来做说明:

古希腊的神庙用麦子为公民记账,假定「主神庙」太忙记不过来,便让其他神庙帮它记,这些神庙记账后需求定时报告给主神庙知道,而不论公民的账被记在哪个神庙,也不论这些神庙是否产生变故,公民想取出财物时总能拿到属于他的麦子,这是跨Layer。

假定有另一片大陆,一个聪明人为两地的商人供给一项服务,使大家在古希腊账本上的财物能跨到这片大陆的账本上运用,某个人把财物跨过来后,这片大陆为他记账时是不会把账目信息报告给主神庙知道的;此外,这片大陆是不产麦子的,它的记账单位也不是麦子,假如这个人想在这片大陆取出财物,他拿到的不是麦子,这是跨链。他能拿到什么取决于不同的跨链办法。

跳出比方来说便是:Layer 2为子账本,跨Layer 是一套账本系统下详细的记账当地产生了改变,Layer 2和Layer 1的记账单位相同,Layer 2记的账需求奉告Layer 1;链是不同的账本,跨链是从一套账本系统到另一套账本系统,侧链和主链的记账单位不同,侧链记的账不会奉告主链。

Rollup

在区分Layer 2与跨链后,来看Layer 2。Rollup 是最干流也最有发展潜力的Layer 2,目前阶段好像只需求重视它。Rollup 是什么

“Rollup 指先在链下进行复杂的核算和状况保护,再将与状况更改相关的数据经过合约调用的办法,运用更便宜的CALLDATA 在链上保存。

任何人都能根据链上保存的数据康复出全局的状况,从而消除因数据可用性问题带来的安全危险。Rollup将大量买卖卷起/汇总成为一个买卖,在保证数据可用性的前提下提高 TPS。”

浅显来讲便是:Rollup 负责处理详细的记账事宜,但它的账是怎么记得是要报告并记录在以太坊上的,这会使以太坊承认Rollup 记的账。详细而言,Rollup 以如下办法作业(以ZK Rollup 为例):

“有一个技能的东西叫Merkle Tree,它是把不同的数据一层一层的哈希,最终变成一个简略的哈希值,这个值就叫树的根。这个根实际上能代表树里边悉数的状况,虽然不知道详细的状况是什么。

这棵树自身是要能够在某个当地找到的,假如没有这棵树,只要根,那这个账户也是不安全的。ZK Rollup 便是在Layer 2 保护这样一棵树。它最开端的时分十分简略,里边什么都没有,然后当你买卖或付出时,就会改这棵树里边的数据,这个改动自身是要放到以太坊上去的,作为一个数据存到以太坊上。(注:并不是把这棵树放在以太坊上,这棵树在Layer 2,但要把对这棵树的改动的数据放在以太坊上)

因而,你能够经过以太坊把这棵树在任何一个时间点的历史状况悉数康复出来,康复出来之后,你能够经过树根来验证你康复的数据是不是对的。任何一个用户都能够把从叶子节点到根的一串数据拿过来,这一串的数据叫默克尔证明。

把这个证明扔到以太坊的路印协议的智能合约里,合约就会算这个默克尔证明能不能证明你的确是在这棵树里边,假如能证明你在这棵树里,就会把这棵树里标记的你有多少钱从以太坊的智能合约里解锁出来,直接转到你的以太坊账号里。这便是在最不理想的情况下提现的办法。”

——王东,《专访王东:关于路印新版本的悉数》

Rollup 完成扩容的原理如下(以ZK Rollup 为例):

“为什么ZK Rollup 能够扩容,能够变得那么快、那么省钱,与对这棵Merkle Tree 的更新涉及到的一些核算相关。

比方一个人的账户状况改了,那要怎样改Merkle Tree 的根?需求一层一层的去算,算到那个根。所以一笔买卖或许要改大约4、5个叶子节点,一笔转账大概要改3个叶子节点,这些改动是十分多的。

但现在,这些改动跟以太坊没有联系,它不必去做这些改动进程的核算,核算都是在Merkle Tree 上面,在中继里边做的,以太坊上只要把零常识证明验证一下就行了,或许就花费10万gas 仍是多少gas,大概是这样。

比方说做1000笔买卖,改动或许是大约4000个叶子节点,或许要算几万次哈希算出一个根,但这些数据都在Layer 2,最终扔到以太坊上的数据其实便是三种:第一个是对各个叶子怎样改的;第二个是对根怎样改的;第三个是一个证明来证明前两者的一致性。

零常识证明做什么呢?零常识证明便是验证改这棵树里边这么多数据的时分,这个根的核算跟各种改动是能够匹配得上的。零常识证明只是做了这么一件事,便是证明数据的一致性。它对应的也不是每一笔买卖怎样去证明,而是说一大堆买卖打成一个包/块,怎么去证明这个包,它是一个批处理的进程。“

——王东,《专访王东:关于路印新版本的悉数》

浅显来讲便是:Rollup 帮主链干活,那么干活的人多了,能一起干的活也就多了。

ZK Rollup 与Optimistic Rollup

在理解Rollup 后,来看ZK Rollup 与Optimistic Rollup,两者的中心差异如下

ZK Rollup 计划的关键在于ZK,它的每一次的状况改变都需求供给零常识证明,并由主链上的合约进行验证,只要验证经过才干更改状况。即,ZK Rollup 的状况改变严格依赖于密码学证明。

Optimistic Rollup 计划中,每次状况改变无需严格验证,它是先达观地假定每次改变都是正确的,然后在必定时限内能够对某次改变进行应战,假如应战成功就证明之前的提交有问题,会惩罚提交者并将状况回滚。即,Optimistic Rollup 的状况改变依赖于经济激励和博弈。

——p0n1,《时髦风趣且有用:这12个以太坊新事物你不能错失》

ZK Rollup 的杰出问题在于对可编程性的完成上,这是因零常识证明而起,假如你对此感兴趣能够看《彻底读懂零常识证明及其完成办法:解析zk-SNARK》一文,它介绍了怎么完成零常识证明,从中能了解它为何难以完成可编程性。不过,zkSync(Matter Labs)的VM 及相关规划能够让可编程性落地,值得等待。

Optimistic Rollup 最被重视的问题好像是当资金从Layer 2回来时,由于应战期带来的延时问题,但能够有中间商供给垫付服务曲线救国,所以这一点或许不会成为困扰。

以上是关于跨layer 的悉数,它是在子账本记账,记的账要成批的报告给以太坊知道;ZK Rollup 用密码学的办法根绝假账,Optimistic Rollup 用监督举报的办法避免假账。

02 跨链

跨链是从一套账本系统到另一套账本系统,不论参加方是哪两条链,也不论以何种办法跨链,当跨链产生时,都需求一个第三者在两条链之间传话,否则两条链都不会知道对方链产生了什么,跨链也就无从谈起。

一个完好的跨链进程如下(以确定+铸造办法为例):

“跨链桥很形象,它有两个桥墩和一个桥梁。两个桥墩便是两套智能合约,一个运行在A链,一个运行在B链;中间是桥梁,桥梁是链下进程,负责监控两边这两套智能合约的工作。

假定现在有一个ERC20 的代币,比方说是UNI,它发行在以太坊上,我们想把它跨到PlatON上去。那么以太坊这边要有一个智能合约,比方叫Vault 合约,它是跨链桥的一个桥墩;跨链的用户要发给Vault 合约Lock 办法,把要确定的币种和数量作为参数传进去,然后还要供给一个PlatON 的地址,说我锁500个UNI 是为了在这个地址上铸造出500个UNI 的替代品。

这个时分,Vault 合约就会去调用UNI 合约做UNI 的搬运,把UNI 从用户地址转到Vault 合约的地址上,也便是把UNI 锁住。锁完之后,Vault 合约就会发一个工作,比方叫AssetLock 工作。

链下进程是经过RPC 接口连在以太坊节点上的,它会订阅Vault 合约的AssetLock 工作,这个工作只要一呈现在日志里,链下进程就得到这个工作了,这个工作里包含相关参数,比方确定的是哪个币,锁了多少,另一条链上的受益人是谁。链下进程也有一个衔接PlatON 的RPC接口,它会提交一笔买卖到PlatON,假定这笔买卖叫Mint。

PlatON 上也会有一个合约,比方叫Control 合约,它是跨链桥的另一个桥墩;Control 合约事先会创建一个类似ERC20 的合约,比方叫EUNI。Control 合约收到Mint 恳求后,验证这个恳求的确来自于见证人,就会调用EUNI 合约的Mint 办法,告知它给某个地址铸造500 个EUNI 代币;EUNI 铸造出来后,就会放在用户之前供给的地址上,用户就能够用了。

假定用户把EUNI 转给了其他一个用户,新用户想要以太坊上的UNI,那他要做的操作是调用Control 合约的Redeem 办法,烧掉比方说100 个EUNI,并开释一个工作叫AssetBurn。

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

——刘毅,《一文详解跨链的技能点及难点:从完美跨链谈起》

简略而言,跨链是先在A链上做一个操作,然后由一个传话的人把这个音讯告知B链,之后B链做一个对应的操作。从中也可见侧链与Layer 2办法的不同,侧链只在跨链产生时与主链通音讯,而Layer 2定时要与Layer 1通音讯。

虽然跨链说的是把财物从A链跨到B链,但B链是没有真正的A链财物的(没有麦子),比方,比特币链之外的任何链上都不会有真正的BTC,以太坊之外的任何链上都不会有真正的ETH。用户在B链上收到的是什么取决于不同的跨链完成办法。

确定+铸造

确定+铸造办法这样作业:在A链确定财物,在B链铸造出对应的财物;在B链毁掉铸造出的财物,在A链解锁对应的财物。

用户在B链收到的,是他运用的跨链协议铸造出来的财物,比方运用Ren 跨链协议,收到的便是renBTC,它类似于BTC 的某种等值兑换券。只要跨链协议和B链不出问题,这种兑换券便不会有问题。

确定+解锁

假如有一种代币叫test,其发行方在A链和B链都发行了代币,那针对这种代币就能够运用确定+解锁办法:在A链确定财物,在B链开释等额财物;在B链确定财物,在A链开释等额财物。

在这种情况下,用户在B链收到的不是类似于兑换券的「假」财物,而是「真」财物。用户不必忧虑跨链桥出问题,由于不再需求依赖跨链桥把财物跨回源链完成,确定+解锁办法对跨链桥的运用能够是单方向、一次性的。(文中的真、假并无褒贬意,只为清晰区分不同的跨链办法)

这种跨链办法安全、妥当,但只适用于在多条链上都做了发行的token,且需求发行方与跨链协议协作。它或许是最优挑选,但独自运用时是不具有普适性的。

跨链池:兑换

兑换的办法需求引进跨链池这个新主体。跨链池既不坐落源链,也不坐落方针链,它坐落供给跨链服务的协议的链上,其作业办法如下图所示(以Poly Network为例):

一文理清跨layer与跨链方式

用户的USDT 从以太坊跨链到BSC 的进程如下:先在以太坊上确定USDT,然后在Poly 上开释PUSDT,之后在跨链池中把PUSDT 兑换为PBUSD,接着在Poly 上确定PBUSD,最终在BSC 上开释BUSD。

这个进程看上去比较复杂,有两次跨链操作加一次买卖操作,不过对跨链用户而言该进程是无感的,他放入以太坊上的USDT,得到BSC 上的BUSD。在兑换办法下,用户在方针链收到的是「真」财物,因而也不必忧虑跨链桥出问题。

这种跨链办法之所以被创造并开端变得流行,是由于它能带来两个好处:

1.随意跨token。用户能够在以太坊上放入恣意token,获得BSC 上他希望的恣意token。在下图的比方中,用户放入ETH,获得BNB。

一文理清跨layer与跨链方式

比较对应币种的跨链,该跨链进程需求多一次的买卖操作,此买卖并不是产生在跨链协议的买卖池里,而是产生在源链或方针链原本的买卖协议中,跨链协议在此处分别供给源链和方针链的DEX 聚合器功能,为用户寻觅源链或方针链上最好的买卖价格

至于买卖是产生在源链仍是方针链,取决于哪种跨链路径上的价格更好,比方该跨链进程也能够是:ETH-PETH-PBETH-BETH-(BETH:BNB)-BNB。

更进一步,假定用户想把ETH 换为USDT,此时BSC 上的买卖价格好于以太坊,那么一种或许的买卖路径是:ETH-PETH-PBETH-BETH-(BETH:BUSD)-BUSD-PBUSD-PUSDT-USDT。有一些协议称打通不同链的流动性,我想很大程度上便是指这件工作,这种跨链架构能够经过买卖路径的挑选,给用户供给多条链上最好的买卖价格

2.随意跨链。确定+解锁办法是两条链的直连:跨链协议在以太坊与BSC 之间建了一条跨链桥,在以太坊与Polygon 之间建了一条跨链桥,这时分假如想完成BSC 与Polygon 之间的跨链,就需求在BSC 与Polygon 之间再新建一条跨链桥。

兑换办法经过跨链池把多条链衔接起来,可完成该架构中恣意两条链之间的跨链:跨链协议接入了以太坊和BSC,这时分假如它接入Polygon,就能够供给Polygon 与以太坊、Polygon 与BSC 间的跨链,无需再逐个建桥。其结构如下图所示:

一文理清跨layer与跨链方式

「跨链池:兑换」办法或许会催生一个或多个跨链底层协议:各个想要在自己运用中供给跨链功能的协议,只需接入这些跨链协议即可支持跨链;而另一方面,「跨链池:兑换」也是运用自己做链的办法,已有一些DeFi 运用声明将要做链,它们的链并不是像公链相同支持各种运用的链,而很大或许是上文所述的这样一条保护它自己的多链的流动性池的链。

要注意的是,兑换办法与确定+铸造办法并不一种取代对方的联系,它们解决不同的问题。兑换办法的跨链是基于两条链上已经存在的财物的,它不能把方针链上没有的财物从源链「带」曩昔,当需求在方针链铸造源链财物时,需求运用确定+铸造的办法。

跨链的其他分类维度

跨链需求第三者在两条链之间传话,上述3种跨链办法都不破例。这个传话的第三者能够是答应式的,比方由跨链协议组建的联盟;也能够对错答应式的,比方由无需答应进入的节点。因而便有3×2=6 种跨链办法。

跨链还能够分为见证人跨链和中继跨链,它们的差异是:

“当方针链收到一个音讯后,假如是见证人跨链,验证的是这条音讯来自于见证人,假如信任见证人,就履行该履行的操作;假如是中继跨链,验证的不是这条音讯来自于哪个中继,验证的是这条音讯是不是来自于源链,假如是,就履行该履行的操作。

也便是说,见证人能够看做是需求被信任的中继,中继能够看做是无需被信任的见证人。这便是两者的中心差异,中继显然比见证人更符合trustless 的准则。”

——刘毅,《一文详解跨链的技能点及难点:从完美跨链谈起》

中继跨链优于见证人跨链,在这种办法中,负责传话的第三者是无法作恶的,但该办法需求两条链上互有对方链的轻客户端,而有些链是没有办法完成其他链的轻客户端的,比方比特币。

因而这种分类办法不会带来6×2=12 种跨链办法,而是:假如有条件完成中继跨链,跨链协议都会去完成它或许以完成它为方针;假如没有条件完成中继跨链,也只能以见证人的办法跨链。

以上是关于跨链的悉数。跨链是跨到另一个账本记账,有3种不同的跨链办法,不同的办法决议了当跨到方针链后你拥有的是什么,也决议了对跨链桥的不同的依赖程度。

结束语:

提到跨链,我们还会谈论波卡与Cosmos。但实际上波卡并不是为跨链服务的,它是一个以链为单位的结构体,它的跨链是指这个结构体内部的链与链的交互;Cosmos 则是为跨链服务的,它做的是链之间的通讯规范,采用其规范的链易于完成跨链,但前提是要采用其规范。

最终想要表达的是,虽然现在有一批发展中的公链,但其间的绝大部分与以太坊是相似的,真希望未来能呈现一些与以太坊不太相同的公链,不是在性能上的不相同,而是在能做的工作上的不相同。

视野开拓

这意味着,尽管这些规则最终会有助益于特定的(虽然在大多数情况下是未知的)目的,但是,也只有当人们把它们当成终极价值而不是手段----也就是把它们真正当成人人共有的唯一价值且不同于个人特定目的的时候,它们才能做到这一点。这就是“目的并不能够证明手段为正当”这项原则的含义之所在,也就是诸如fiat justitia ,peeat mudus(即使世界毁灭,也要行使正义)这样的格言的含义之所在。-《法律、立法与自由(第二、三卷)》

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注