跨链方案也存在着三难问题:去信任化、可扩展性和可通用性。
流动性的本质是价值交换。近年来,以太坊的市场占有率逐渐下降,越来越多的公链被广泛地使用。当一个新的公链/L2生态形成的时候,用户产生了将资产从原来的生态迁移到新的生态,以及跨链信息传递的需求,我将这些跨链行为称为横向流动性。
横向流动性需求的产生就是人们希望可以在不同的区块链之间做原本在同一个区块链中可以完成的事情。那么阻止人们这么做的原因就是横向流动性的阻碍,区块链的价值就在于其防篡改、去信任化的特性,而这些来自于去中心化的共识,使得每一笔交易都是可信的,从而杜绝了。而跨链的核心就在于共识能够达成和传递,这是区块链的基础价值体现。
共识的达成和传递要求一个区块链能够可靠地访问另一个区块链的状态。由于每一个区块链都有自己的规则、治理机制、原生资产和数据格式,区块链之间的信息传递和资产迁移不是天然无障碍的。因此,我们需要一套系统以支撑在两个或多个区块链之间进行价值传输,这些价值包括资产、合约调用、证明或状态信息。
这个系统我们常常称之为「桥」,桥依赖以下几个组成部分以实现区块链之间的状态访问:
状态监控:通常有一个角色,如Oracle、Validator或Relayer,负责监控源链上的状态;
信息传递/转发:在该角色接收到一个事件后,它需要将信息从源链传输到目的链;
状态共识:在一些模型中,监控源链的角色之间需要达成共识,以便将该信息传递给目的链;
信息签名:角色需要对发送到目的链的信息进行加密签名,可以是单独签名,也可以是作为阈值签名方案的一部分;
可以得知,跨链迁移的可靠性完全取决于以上几个环节是如何协作的。它们需要一个验证人来保证各个环节没有问题,这个验证人的选择是桥工作方式的主要区别:有的桥使用受信任的系统,有的桥则使用去信任化的系统。
受信任的桥
这样的桥需要用户信任第三方机构,并且允许第三方机构持有他们的资金,这类桥最为常见的是中心化交易所的桥,如币安桥。
这类桥梁的优点非常明显:
简单易用;
成本低廉,大多数交易所只收取转账Gas,没有链上计算的费用;
但它们的缺点也比较明显:
无控制权:在价值传输的过程当中,用户必须放弃对其资产的控制权;
功能有限:主要体现在两方面,首先这种桥都只是用来传递资产,无法进行合约调用、证明或状态信息传递,其次只能够用来传递CEX上市的Token;
许可与信任风险:用户需要KYC才能够使用这类桥,而且需要完全信任该桥的开发商,且需要冒着开发商随时会中断资产桥接的风险,如Binancesuspendsdogecoinwithdrawals
去信任化的桥
一切都是关于信任,去信任化意味着用户不用担心自己的资产被第三方控制,也意味着此类桥可以成为公共产品。
那么什么是去信任化呢?JohnAdler和MikerahQuintyne-Collins在其研究论文中解释为,「当且仅当其状态既有效又安全时,区块链系统才是去信任的。」
这里有几个关键词,状态、有效和安全:
状态:可以理解为「谁」在「任何时间」「拥有什么」,这一切由区块链记录;
有效:这意味着用户在有限的时间内能够改变资金的状态;
安全:这意味着用户的资金不会被盗取、永远冻结,只有拥有者才能够改变资金的状态;
需要注意,去信任化不是意味着完全无需信任,而是将信任最小化,这一点在任何公链上也是如此。一个完全无需信任的跨链交易是,区块链A上的Alice直接向她在区块链B上的钱包地址发送1000USDC,然后Alice在区块链B上的钱包地址直接完成接收,就像现实世界我将钞票从一个钱包放入另一个钱包一样。这个过程完全无需信任,因为没有任何第三方参与,但这是不可能的,因为不同区块链直接无法直接访问和修改对方状态。
因此,去信任化是一个程度,不同机制的去信任化的程度是不一样的。如果说上面完全无需信任的例子信任成本是0,那么受信任的桥其信任成本则为1。去信任化的桥,其信任成本就介于0和1之间,用数学表示就是(0,1)。
当谈到去信任化桥的时候,我们需要弄清楚的第一个问题是,「系统的验证人是谁?」,不同的设计机制给出了不同的答案:
外部验证:外部验证器不属于相关区块链中的任何一条,由桥引入,有自己独特的信任假设。依赖于外部验证者或联盟,安全性取决于外部验证者/联盟的安全和不同的抵押机制,如Thorchain,Anyswap,Biconomy,Celer,Synapse,PolyNetwork等等;
乐观验证:乐观验证依赖于外部验证者,但通过使用诚实的观察者来监控操作并报告欺诈行为作为验证。其安全性取决于乐观机制,由于攻击者在攻击的时候不知道欺诈行为是否会被发现,这使得攻击者永远无法确信自己能够成功窃取资金,从而极大地增加了攻击系统的经济成本,如Nomad;
本地验证:相关区块链的底层两个验证器互相验证对方。依赖于流动性网络,原子交换过程可以有效地让每条链上的验证者无法串通和窃取资金,然而流动性网络缺乏跨链消息传递能力,会依赖于乐观或者外部验证桥梁以加强桥的功能,从而降低安全性,如Connext,Hop和其他原子交换系统;
原生验证:相关区块链的底层所有验证者都负责验证系统。有的原生验证依赖于轻客户端和中继者,中继是由oracle或者节点中继器负责,中继者将源链的信息传送给目标链的轻客户端,原生验证节点将会验证该信息的正确性并触发相应的智能合约,因此安全性取决于中继者,如Stargate,CosmosIBC,NearRainbowBridge等等;有的原生验证依赖于ZKP,安全性取决于相关区块链,如Starkgate等汇总桥。
桥的信任频谱,来源:Li.Fi
从上面可知,从去信任化程度上来说,原生验证>本地验证>乐观验证>外部验证。
原生验证与本地验证的比较
原生验证和本地验证由于依赖于相关区块链自身的验证者,原本它们去信任化的程度是一样的。但本地验证由于使用原子交换的方式,不能支持链间的通用数据传递,所以往往会引入一些其他信任假设以支持更多功能,如Hop是本地验证,但引入了一个快速的任意信息桥以实现对OptimisticRollup资金的快速桥接。如果给定目标链没有AMB的存在,该协议甚至还需要依赖一个外部验证的桥。因此,去信任化程度原生验证>本地验证。
原子交换的特点是在一个状态更新里面实现交换操作,一般包括哈希时间锁和有条件转让等方式。
跨层的原子交换:第一层跨层到第二层由于是同一套账本下进行记账,其天然连接的性质使得他们可以轻松地进行有条件转让。有条件转让即操作的第一段由第二段触发,这是一种原子交换方式,比哈希锁更直接。
此外还有第二层之间的跨层。有些人会将第二层跨层与跨链区分来看,实际上他们的区别少之又少。第二层跨层与跨链的唯一区别就是它们之前通过第一层网络进行连接了起来,这允许它们通过有条件转让的方式进行通信。但这种方式费用实在是太高了,每次跨层都需要经过第一层网络,而且还存在速度慢和拥堵问题。因此,第二层跨层往往会视为没有连接的不同区块链进行看待。
乐观验证与外部验证的比较
乐观验证与外部验证本质上都有一组第三方节点进行验证。除了技术细节上的诸多差异,其核心区别在于其加密经济学:
外部验证跨链桥利用了诚实多数假设;
乐观验证使用观察者+欺诈证明模式,即一个诚实者的验证者假设;
因此从去信任化角度,乐观验证所需要的信任成本大大低于外部验证。
而在外部验证当中,有两种主要的经济模式:
罚没型:恶意活动发生后,节点抵押品会被罚没,但系统不保证补偿用户损失,如PolygonPoS桥;
削减型:恶意活动发生后,节点抵押品会被削减,削减的抵押品用于补偿用户损失,如Axelar;
从这个角度来看,削减型的外部验证桥,能够相对将信任程度更小化。
去信任化桥的性能
不同的验证机制也带来不同的安全性、速度、连接性、资本效率和状态性相关,这几个因素通常会用来评估桥的设计。
安全性:信任和有效假设、对恶意行为者的容忍度、用户资金的安全性和反身性;
速度:完成交易的延迟,以及最终性保证。通常在速度和安全性之间进行权衡;
连接性:为用户和开发人员选择目标链,以及集成附加目标链的不同难度级别。连接性好即对公链的兼容程度很高,不容易受不同公链共识算法和数据结构差异的限制;
资本效率:围绕确保系统安全所需的资本和转移资产的交易成本的经济学;
状态性:转移特定资产、更复杂状态和/或执行跨链合约调用的能力;
不同的验证方式具有不同的取舍,各有优劣。虽然将各个维度简单相加计算总分进行比较的方式有一些缺点,但姑且如此粗略的看起来,总分ZKP>LightClients&Relayers>LiquidityNetworks=Optimistic>ExternalValidators&Federations。
不同验证机制桥的性能,来源:ZonffPartners
外部验证在状态性和连接性方面表现出色,因为它们可以触发事务、存储数据并允许在任意数量的目标链上与该数据进行交互。通常这样的第三方节点都需要质押机制来保障安全性,因此这类桥的资本效率是最低的。从安全性来说,由于外部验证桥有很多类型,不同的外部验证联盟也具有不同的共识算法安全,因此其安全性不能一概而论,但由于信任假设和第三方机制,一旦桥被攻破,用户可能会损失全部资金,而且会波及所有与该桥相关的应用,其安全性综合来说是最低的。
乐观验证,在状态性和连接性方面表现出色,其理由与外部验证一样。但由于乐观验证的机制,其资本效率要高于外部验证但低于无需加密经济机制保障的桥设计。由于验证窗口期的存在,其速度也是最低的。从安全性来说,攻击具有n个验证者的Optimistic跨链桥的成本,等于破坏或黑掉n个验证者的成本。而相对于外部验证,攻击具有n个验证者的外部验证跨链桥的成本,等于破坏或黑掉m个验证者的成本,这里m<n。此外,在乐观验证机制下,即使n个验证者被黑攻击者也不能保证窃取资金,只要有一个诚实的观察者「抓住欺诈」并撤销攻击者对资金的访问权限即可。因此乐观验证的安全性总体来说大于外部验证者,但小于攻击者根本无法窃取资金的本地验证和原生验证机制。
本地验证在安全性和速度方面表现出色,因为使用哈希时间锁的原子交换机制使得资金不可能被窃取,无需达成通用共识的本地验证也大大提高了速度。它们也比保税/保险的外部验证者更具资本效率,因为资本效率与交易流量/交易量而非安全性相关。但由于本地验证的系统不能支持链间的通用数据传递,其状态性较差,这导致其往往需要引入其他技术支持才能实现更多功能,如Hop引入任意信息桥,Connext与Nomad合作等。
原生验证在安全性、资本效率和状态性方面表现都非常出色,因为它依赖于底层的信任和/或域的共识机制来运作,区块头中继系统可以传递任何类型的数据,且无需任何质押。同样地,它也必须为每种类型的域进行定制。以太坊的生态系统是高度异质的:ZK/OptimisticRollup、侧链以及运行大量共识算法的基础链,如ETH-PoW、Nakamoto-PoW、Tendermint-PoS、Snowball-PoS、PoA,以及其他许多算法。这些领域中的每一个都需要一个独特的策略来实现原生验证的互操作性系统。从连接性上来说,使用ZKP的原生验证系统则更加差一点,因为不是每一个共识模型都能够在零知识的情况下证明。从速度上来说,ZKP跨链桥有很好的低延迟属性,也可能比常规的区块头中继系统要便宜得多,因为证明共识不需要在链上发生。
此外,LayerZero属于原生验证,其创新即使微小但也非常的重要,引入预言机以实现区块头按需流式传输,同时由于在预言机的基础上加上独立的中继系统,保证安全性。
状态性:通用消息传递
通用消息传递就是可以在不同区块链上调用任意合约。那为什么本地验证网络的跨链方式不支持通用消息传递?
其实本地验证的系统有可能实现跨域合约的调用,但前提是被调用的函数有某种形式的逻辑所有者。例如,可以去受信任化地跨链调用Uniswap的swap功能,因为任何拥有可交换代币的人都可以调用swap功能。然而,本地验证中不可能跨链去信任化地锁定和铸造NFT——这是因为目的链上的mint函数的逻辑所有者应该是源链上的lock合约。
直观地说,本地验证的消息,是通过单点相互验证的方式从链上的一个合约发送到另一个链上的相同合约进行函数调用,在一个原子交换过程内完成交易,状态更改,因此存在调用的逻辑问题;而其他验证方式的消息,通过多点验证的方式将已更改状态进行传递,不存在调用的逻辑问题。
连接性:状态验证与共识达成
前文已经谈到,是由于不同的链的不同共识算法将连接性破坏。
这一点如何理解呢?
拿转账举例子,简要的说,当一个转账发生的时候,此时会生成一个凭证,另一条链通过验证改凭证得知这比转账为真,才能够发起下一步动作。这个凭证生成的过程就是共识算法发挥作用的过程,另一条链需要理解该凭证就需要模拟该凭证生成的方式,这时不同的共识算法就会造成阻碍。这一点上,ZKP的逻辑又稍有不同,虽然ZKP的生成算法可以采用同一种,但有些的共识模型很难通过零知识的方式进行证明。
关于横向流动性的一点思考
横向流动性指的就是跨链的互操作,以支持消息传递和资产转移。目前来说,还没有一个方案可以解决横向流动性的三难问题:去信任化、可扩展性和可通用性。Connext提出的NXTP借鉴的以太坊第二层的思路,尝试构建一个互操作网络「第二层」来解决这个问题,我觉得这个解决方案能否有效依然有待考察。
以太坊的可扩展性三难问题中,起到榫卯结构连接点作用的是验证,因此可以将其以验证为榫卯拆解为执行、共识和数据可用性,从而发展为模块化区块链。
最近有声音在提起模块化跨链桥,其尝试将不同的跨链方案进行组合,用同一个接口封装,这并没有改变封装下面运行逻辑的本质,该有的问题依然存在。我们需要找到跨链问题当中的榫卯结构,才能够把一个复杂问题干净利落地拆解下来,而不会破坏原本的零件。验证作为跨链的榫卯结构是行得通的,因为跨链本质上就是跨账本记账,非常核心的一点是验证,但由于不同区块链的共识机制和数据结构差异,另一个更核心的一点在于跨链消息识别,因为验证的前提是需要识别这些数据信息。
那么如何去思考跨链消息识别作为跨链的榫卯结构呢?上文提到的,
外部验证,通过在不同链上部署自己的智能合约将跨链消息在外部验证联盟中消化,因此我们要相信这个外部验证联盟,无法达到去信任化;
本地验证,消息传递作为一个逻辑结构的形式写在合约当中,这直接导致了它较低的连接性和极低的状态性,它只能传递一个交换逻辑,而无法传递通用的账本变更类的消息,无法达到可通用性;
原生验证,消息以原来的数据结构直接进行传递,到达目标区块链,再将以原区块链数据结构存储的数据进行解构、计算和验证。这要求中间有代码化的介质能够将两个区块链的数据结构进行理解和转译。不同的共识算法给这项工作带来了不少挑战,即使是作为验证「万金油」的ZKP也在这里遇到转译的问题,因此原生验证很难做到可扩展性;
目前我能想到的解决路径大概有两条:
一是支持通用共识算法的ZKP算法出现;
二是通过非中间共识的方式搭建一个消息识别中间件。
来源:ForesightNews
撰文:LewisLiao,ZonffPartners高级投资经理
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。