许多人抱怨最优秀的加密工程师过度关注向终端用户提供更多的区块空间。这种批评是有道理的;相对于需求,为终端用户提供的L2解决方案太多了。
然而,我拒绝接受没有任何有用的加密应用程序存在的观点。
去中心化金融为个人提供了自我保管数字资产的能力,使他们能够绕过苛刻的服务提供商,并使用他们的数字资产购买在真实的世界中有价值的东西。自我保管数据的承诺也为那些越来越担心信任FAANG(美国市场上五大最受欢迎和表现最佳的科技股的首字母缩写)垄断以保持其数据安全的个人提供了一个乌托邦式的替代方案。
我认为,真正的问题不是缺乏有用的加密应用,而是终端用户试图访问这些应用时的摩擦。终端用户在与加密应用交互时应该能体验到以下情况:
速度:应用应感觉像web2应用那样快
成本:不同于web2,所有web3互动必须产生一些成本,但“每次点击”的成本应该微不足道
抗审查性(“无需许可”):任何拥有钱包的人都应该能够与应用交互,只要他们能承担费用
安全性:点击应该完成用户期望的操作,不应撤销,所有 web3 更新都应该是永久性的
这些是“可用”加密应用的属性。
我们已经试图构建可用的加密很长时间了
今天的模块化区块链解决方案为消费者提供了所有这些属性,但它们并不都在同一地点提供。
2020年,区块链是单体的,为终端用户提供三个属性中的两个:速度、成本或安全性。然后我们设想了一个以 rollup升级为中心的或模块化的未来,能够同时解锁所有这三个属性。
今天,我们已经为这种以rollup升级为中心的基础设施奠定了基础。L2提供了便宜且快速的区块空间,而大多数L2提供无需许可的区块空间。相反,L1提供了抗WW3的安全区块空间。这些L2通过规范的消息路径安全地连接到L1,为模块化且互操作的网络奠定了基础。在过去的四年中,我们已经建立了支持有用加密应用的区块链之间的光纤。但为什么模块化区块链如此不可用?
模块化区块链网络的必然性在于资本资产将会聚集在最安全的层上,而用户点击将会聚集在更快更便宜的层上。
模块化的区块链拓扑结构鼓励将安全的区块空间提供在与便宜和快速的区块空间不同的层上。用户自然会倾向于将他们的价值存储在最安全的网络上,但他们会要求与便宜和快速的网络频繁交互。按设计,L2和L1之间的规范路径是缓慢和/或昂贵的。这些现象解释了为什么用户必须穿越这些规范路径,使用L1资产支付L2交互的费用。这导致了“无法使用”的加密用户体验。
链抽象的目标是减少用户发送价值穿越这些协议路径的摩擦。链抽象者假设用户更倾向于将其所需的最终状态指定给dapp作为“意图”,而dapp有责任实现他们的意图。用户不应该为了访问低费用和低延迟而妥协安全资产的保管。
因此,链抽象在于用户能够安全、廉价和快速地跨网络传输价值。今天的一种常见用户流程是,一个在“安全”链上(如以太坊)拥有USDC余额的用户想要在新链(如Blast或Base)上铸造一个NFT或交换新代币。以尽可能少的步骤执行这一操作的方法是顺序执行桥接→交换→铸造一系列交易(或交换→桥接→铸造)。
在这个例子中,用户的意图是使用他们在安全链上的USDC在另一个链上铸造一个NFT。只要他们收到NFT并且他们的USDC余额被扣除在他们选择的存管位置,用户就会满意。
基于意图的架构是构建链抽象的唯一途径
链抽象依赖于跨链价值转移,但通过规范消息路径发送价值要么昂贵要么缓慢。“快速桥”为用户提供了跨网络发送价值的廉价和快速替代方案,但它们引入了新的信任假设。消息传递是构建快速桥接的最直观方法,因为它是基于TCP/IP架构建模的;它依赖于一个桥接协议作为TCP路由器连接两个链。
ResearchGate的TCP/IP图表
通过消息传递进行价值转移涉及桥协议在原始链和目标链上的合约之间发送消息。这个消息是由用户交易在原始侧触发的,并且一旦消息的“有效性”得到验证,就会被中继到目标侧。
只有在发起消息的原始链事务已经完成之后,即该交易已经永久地包含在原始链的规范区块链中后,消息才能被验证。这种验证可以通过有效性证明来完成,证明交易已被包含在原始链的共识中,也可以是一个乐观的提议,或者在原始侧累积了一定数量的见证签名后。一旦消息被中继到目标链上的桥接合约,代币就会释放给用户。
这种架构存在几个根本问题:
验证机制必须等待完全确定性后才能将消息发送到目标链协议合约。对于具有乐观确定期的L2,这可能需要长达七天的时间。
每个桥接事务只发送一个跨链消息,或者将消息批量处理在一起,但只有在批处理中的最后一个消息完成后才能发送该批处理。
桥接在获取外部流动性方面能力有限,以给用户提供价格改进,因为它必须声明用户意图的履行路径。
基于消息传递的快速桥接根据验证机制的不同,将会出现不安全、缓慢或昂贵的情况。意图市场是一种快速桥接的替代架构,它源于一个关键的见解:
价值是可替代的,对于接收者来说,只要能收到资金,如何转移价值并不重要
桥接可以将价值转移外包给一个复杂的代理以提高速度和降低成本吗?流动性在链上和链下是动态的,如果桥接机制能够在桥接转移时灵活选择最佳执行路径,则可以实现价格改进。
意图机制允许用户指定其价值转移交易可以执行的精确条件或契约。
最简化的意图是从链A支付X代币以在链B上收到Y代币的订单。
桥接协议不需要为了满足用户的跨域意图而在域之间发送消息。相反,协议将价值转移外包给从无许可求解器网络中选择的代理,个体求解器将在稍后从桥接协议那里寻求偿还。相比之下,基于消息传递的机制精确地指定了它们的交易应该如何执行,并且不需要依赖代理的可用性。
意图结算协议
基于意图的桥接协议可以更精确地标记为意图结算协议,它们负责确保求解器不违反用户指定的条件。意图结算协议为求解器提供了保障,确保他们在履行用户意图时能够得到偿还和奖励。为此,意图结算协议需要向Oracle申诉,以验证意图履行的真实性。预言机的安全性可以基于乐观挑战期、见证阈值或基于ZK有效性证明等。
由于单个求解器可承担最终风险并确定最佳执行路径,因此意图结算协议可提供快速、低成本的价值转移
消息传递桥只能在原始链达到最终性时才能进行通信。如今,乐观 Rollup 上的最终性时间为七天,而 ZK Rollup 上为一小时。尽管随着 ZK 轻客户端技术的广泛采用和共享排序器预确认技术的进步,这些最终性时间应该会下降,但对于所有区块链来说,最终性时间永远不太可能对用户来说感觉“即时”,这表明了对快速桥接解决方案的持续需求。在不承担最终性风险的情况下,即使桥想要在中继路径中添加一个额外的受信任代理来担保由于链重新组织而造成的损失,也无法将消息传递速度提高到最终性期间之前。
基于意图的架构提供的加速是因为异构求解器网络中的单个求解器可以承担比消息传递协议更多的最终性风险,并在链重组风险完全消失之前满足用户的意图。求解器随后会向用户收取他们在交换更快时间所承担的最终性风险。
将跨链意图履行外包给代理也会平均改善用户的价格。在基于意图的桥接中,为了实现用户在目标链上的订单,前端的求解器将在验证他们的履行后由系统返还。这些意图结算可以一起批量处理以分摊成本。与用户不同,填充器不要求即时偿还,并将相应地向用户收取资金前置费用。批量结算并不是基于意图的架构的唯一特点,但是该架构与批量结算更为协同,因为它将偿还步骤与意图实现步骤分开。
价格改进的更大来源来自这样的直觉,即价值是可替代的,及时找到最佳路径通常会优于价值转移,然而,有些路径在成本上是无法及时击败的,比如在 CCTP 上传输 USDC 时。
消息传递桥必须编码它们将如何向用户传输价值。有些选择以预定的兑换率从流动性池中发送代币,而其他人则向需要随后交换所需的规范代币资产的收件人铸造代表性代币。
在履行用户意图时,代理可以从链上和链下的流动性场所组合获取流动性。竞争性求解器网络理论上为用户提供了无限的流动性来源(但即使这些流动性来源也可能在高波动性链上事件期间的一方向趋势中迅速耗尽,如热门 NFT 铸造、空投和rug pull事件)。
将跨链订单作为意图提交后,求解器可将订单生成的 MEV 内化为价格改进。
基于意图的体系结构从根本上设计为安全的
基于意图的桥接之所以能够安全构建,是因为它们将用户的紧急需求与结算网络的复杂需求分开。求解器可以等待偿还,不像用户,他们将根据结算协议使他们等待偿还的时间向用户收费。因此,意图结算可以使用非常健壮的机制进行验证,而不受严格的时间限制。从安全的角度来看,这是更可取的,因为验证意图实现在直觉上是复杂的。
作为生产中意图验证的示例,Across 在经过 90 分钟的乐观挑战期之后批量验证并偿还填充器。当然,结算网络应该努力尽快偿还填充器,以减少最终用户的费用。对乐观挑战机制的改进将是一种 ZK 有效性证明机制,这将要求将意图验证逻辑编码到一个 ZK 电路中。在我看来,验证证明机制将取代乐观挑战机制并使意图结算网络能够更快地偿还用户是不可避免的。
那么,链抽象是如何从基于意图的架构中产生的呢?
回想一下,链抽象需要快速和廉价的跨链价值转移。它也不应该要求用户在存储其资产的网络上提交链上交易。
如果包含Permit2或EIP 3074签名,用户的意图不需要由用户在链上提交。这对于消息传递和基于意图的桥接都是正确的。这两种架构都可以利用 Permit2 模式,允许用户在原始链钱包上离线签名他们愿意支付的代币数量。
基于意图的市场最能支持链抽象,因为它们提供了廉价和快速的跨链价值转移。想象一下,用户可以请求一个求解器为他们提供报价,以用他们在 Optimism 上的 USDC 作为支付进入 Arbitrum 的 WETH 抵押头寸。用户可以将此意图发送到一个 RFQ 拍卖,求解器可以对其进行竞标。拍卖的获胜者随后可以接收用户的签名意图,其中包含一份允许在 Optimism 上花费他们的 USDC、在 Arbitrum 上获得的 WETH 数量以及用于将此 WETH 存入 Arbitrum 抵押头寸的 calldata。求解器随后可以在 Optimism 上提交此交易(代表用户)以启动跨链意图,并从用户的 Optimism 钱包中提取 USDC。最后,求解器可以通过向用户发送 WETH 并将 calldata 转发到用户入链抵押头寸的方式来填充用户的意图。
构建链抽象基础设施意味着使用户流程感觉即时和廉价,而无需他们提交链上交易。让我们通过讨论更广泛采用意图的障碍来结束本文。
为了从基于意图的链抽象中实现最佳的用户体验,我们需要一个有竞争力的求解器网络
意图为基础的链抽象实现最佳用户体验的关键在于建立一个竞争激烈的求解者网络。连接意图的桥接取决于求解者网络效应,以表现得比消息传递变体更好。这是意图与消息传递架构之间的核心权衡。现实情况是,并非所有产生意图的应用都需要访问一组完全竞争的求解者,并且有些可能更倾向于将它们的意图路由到寡头垄断求解者网络。然而,目前的求解者网络状态尚不成熟,远未达到意图市场依赖的求解者网络活跃性假设的程度。
我们不希望每个 DApp 都将意图路由到孤立的求解者网络。最佳用户体验的情况是许多 DApp 与相同的求解者池进行通信,并且所有 DApp 都有自由更改它们发送意图的求解者池。
如何引导求解器网络?
我们必须将求解者用户体验作为首要任务。
运行意图求解器是复杂的,需要对构建高性能软件以及管理跨链库存风险具有专业知识。自然而然地,将有少数方对支付运行此代码的启动成本感兴趣。在最佳情况下,为一个 DApp 编写的求解器,如 UniswapX 求解器,可以被重复使用以解决其他产生意图的 DApp,如 Across 和 CowSwap。
我们真的需要提高所有基于意图的 DApp 的求解者网络的总资本效率。这将需要解决运行求解者的障碍。
为此,我们需要产生意图的 DApp 对任何求解者可见,并确保所有求解者都可以访问多个差异化和竞争激烈的意图结算网络。这将使求解者有信心,他们可以选择将他们的意图履行路由到他们信任的结算网络。结算网络之间的竞争还将降低求解者的成本。
意图结算网络的价值主张是为求解者提供安全性以及可能影响求解者填充意图的其他功能。
求解者对意图结算网络的选择将影响他们向用户提供费用和执行时间保证的能力。一些结算网络可能会提供求解者专属期,这将支持链下拍卖的发展,求解者和用户可以在其中协商并承诺中继费用。(此外,这些意图拍卖可能还提供经济上担保的预确认,进一步增强用户体验。要了解通过拍卖和预确认进行意图发现的用户流程.
一些结算网络可能提供意图到期(即在达到某个履行期限后将价值发送回用户),意图支持(即结算网络使用自己的资产负债表来履行用户的意图,如果没有求解者履行),或灵活的偿还链(即允许求解者选择其所选择的链进行偿还)。
最终,结算网络将激烈竞争,以便快速、廉价地偿还求解者,而不会在安全性上妥协。反过来,求解者将将他们的订单流发送到允许他们向用户提供最便宜费用的结算网络,以便赢得 DApp 的订单流。结算和求解者网络的竞争取决于意图供应链中的所有各方协调使用相同的语言,竞争将导致跨链价值转移的最佳用户体验。
显然,我们需要一个跨链意图标准
如果求解者可以假设意图将共享共同元素,那么他们可以重复使用他们的代码来解决不同 DApp 发起的意图,从而降低他们的设置成本。如果不同的 DApp 创建符合相同标准的意图,那么它们可以将它们的意图全部路由到相同的求解者池。这将有助于通过让它们能够直接将其跨链意图插入到现有成熟求解者池中,为下一代 DApp 提供接入,而无需单独接入求解者,并且将获得便宜、快速、安全和无许可的价值转移。
如果符合标准,第三方跟踪软件也将更容易地跟踪任何新 DApp 的意图状态。
这个意图标准应该允许意图主体或求解者指定他们希望在哪个结算网络上结算他们的意图。
我设想竞争的结算协议(如 SUAVE、Across、Anoma 和 Khalani)为求解者提供了不同的特性。根据哪个结算网络正在偿还求解者,求解者可以向意图所有者提供不同的价格和时间保证。DApp 和求解者可以同意将用户的意图路由到他们信任的结算网络,以避免审查、维护数据隐私,并且还足够安全以便求解者信任其偿还。
通过将结算网络的选择写入意图订单本身,求解者可以将这种确定性融入到他们向用户展示的报价中。求解者和用户可以在提交意图上链之前消除桥梁定价的前期不确定性,从而降低成本。
与 Uniswap 合作,并根据 CAKE 工作组的反馈,Across 和我提出了以下跨链意图标准,将求解者用户体验放在首位
该标准旨在简化解算器的工作。它所做的一个有主见的选择是,用 nonce 和 initiateDeadline 原生支持 Permit2/EIP3074,并为填单者提供了一些保证,如他们将从结算网络获得的退款金额,以及他们可以跟踪的用户意图格式。此外,标准中还定义了一个启动函数,该函数允许填充者(将订单带入链上的人)在链上指定额外的 "填充数据(fillerData)",而用户在签署 CrossChainOrder 时并不知道这些数据。这样,填写者就能确保他们因提交用户的元交易而获得结算合约的奖励,还能设置还款链等还款特定信息。
此标准还旨在使 DApp 更容易跟踪意图完成状态。任何实现此标准的结算合约都应创建一个自定义子类型 ResolvedCrossChainOrder,可以从任意的 orderData 字段解析出来。这可能包括涉及交换的代币、目标链以及其他履行约束。标准中包括了一个 resolve 函数,使 DApp 能够了解如何向用户显示意图状态,以及使求解者知道他们正在处理的确切意图订单结构。