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