本篇将介绍的是提供交易更进阶的「可编程隐私(Programmable Privacy)」特性与一个跨链且更开放、更公平的 MEV 市场设计 —— SUAVE。在进入正题讲解 SUAVE 之前,先请了解 Intent 这个概念。
以 Ethereum 的交易为例,假设用户想要将他手上的 USDT 换成 ETH,他可能会到 Uniswap 网页查看价格,并在设定好允许的滑价之后签名送出交易,之后就是等待交易结果。
他的交易大概会长这样:「我签名并送出这笔交易,这笔交易的 Nonce 值是 23、手续费是 30 Gwei,它会去执行 Uniswap 合约用我的 1000 USDT 换 0.5 ETH,滑价最多是 1%」。
△ Nonce?Gwei?图源:https://www.reddit.com/r/MemeRestoration/comments/ejcvd3/confused_math_lady_4080x2663px
假设 Alice 是一个小白用户,她就只想把她手上的 USDT 换成 ETH 而已,但她却要跨过重重门槛才能完成这个小小的愿望:
每一个关卡都是一个小白用户其实不需要了解但又被迫要做出选择的题目:要到哪里兑换?要不要设定滑价?滑价要设定百分之几?要不要调整手续费?要调成多少 Gwei?交易怎么失败了?交易怎么卡在那边好久了(可能是 Nonce 或手续费的问题)?我该怎么办?
不像 Transaction 要指定好一笔交易的各种细节,Intent 只需要使用者指定他想要达成的结果以及执行的条件就可以,剩下的交给更专业的人。
在 Intent 中,Alice 指定好要用 1000 USDT 换 0.5 ETH,但考虑到手续费因此将价格调整为 0.495 ETH,接着就是对这个订单签名并送出。Alice 的交易会长这样:「我签名并送出这笔订单,我想用 1000 USDT 换 0.495 ETH。只要能让我拿到 0.495 ETH 这笔订单都有效」。
非常简单对吧,而这就是限价单(Limit Order)的使用体验,也是目前 DEX Aggregator(例如 1inch 和 Tokenlon)大致的使用体验。
△ Transaction(上)与 Intent(下)的不同,透过 Intent 使用者只要指定好条件,不需烦恼该如何达成。图说:https://www.paradigm.xyz/2023/06/intents
透过 Intent,用户不必再处理、烦恼交易从产生、签名到执行之间的各种琐碎难懂的细节,甚至交易失败时还要搞清楚问题再继续尝试,而且不同链还会有不同的交易流程和地雷!
透过 Intent,使用者只需要指定好他的这个 Intent 执行的条件、预期的结果,剩下的就是由专业的 Solver 来实现使用者的 Intent:替用户处理怎么送交易、监控交易、加速交易、处理交易失败等等麻烦事,而 Intent 也只有在执行条件及预期结果都被满足的情况下才能实现,所以使用者也不必担心是否会有意外发生导致资产不翼而飞。
Intent 将可以大大地提升区块链的使用体验。
阅读提示 1:其实目前已经有很多使用 Intent 的例子,像是多签钱包的签名、授予第三方特定执行权限与时限的 Session Key 概念,或是批次撮合交易的机制例如 CowSwap。甚至在 Web2 的世界也都有 Intent 的踪迹,像是搜索引擎(我输入我想查询的东西,搜索引擎透过各种渠道找到相关信息给我)或是电商网拍(我输入我想买的东西,电商透过各种渠道找到它并送到我手上)。只是 Intent 这个词到最近才在 Web3 世界红起来。
阅读提示 2:英文会用 Imperative (「命令式的」)这个字形容 Transaction 的使用体验,也就是下达完整命令去完成目标;而 Intent 的使用体验则会使用 Declarative(「语句的」)这个字来形容,表示它是透过陈述执行条件与执行结果来使用。
在跨链的应用例如跨链桥、跨链 DEX 中,因为牵涉到两条或更多条链,所以使用者要面对的是更多不同链的交易的处理。
撇除透过项目方的多签来完成跨链的应用本来就能提供较好的使用体验(例如使用者在来源链送出交易后,项目方多签会自动在目标链上将资产送到用户指定的地址,不需用户在目标链执行任何操作),其他更去中心化的跨链应用像是 Nomad 与 Succinct 则没有这么好的使用体验,用户可能需要自己到目标链上送出交易完成操作。
因此 Intent 能带来的使用体验提升在跨链世界里更显得重要与迫切。
透过 Intent,跨链的操作将只需要使用者签个名即可,不必再烦恼各个链的交易规则和细节。使用者将能以一样的使用体验去操作不同条链,甚至不会感知到有不同链的事实。
SUAVE 的全名是 Single Unifying Auction for Value Expression,目的是成为一个横跨多个链的、统一的 MEV 市场,在这个市场中使用者可以以有效率的方式表达一笔交易的成交条件及奖赏,同时执行者(Executor)彼此会竞争,也会进行有效率地合作来完成使用者的请求。
SUAVE 可以作为一条区块链的交易池及成为该区块链负责生产区块内容的 Builder 角色,但 SUAVE 并非要取代一条区块链原有的交易池及 Builder 功能,而是以一个即插即用(Plug and Play)的方式接上一条现有的区块链。
SUAVE 接入一条区块链后,该区块链等于多了一个去中心化、非常专业且同时拥有横跨多条区块链交易来源的强大 Builder。同时拥有多条区块链交易来源将在未来逐渐成长的跨界(Cross Domain) MEV 市场中提供巨大优势,拥有这个优势的 Builder 将会比在单一条链运作的 Builder 更有竞争力。
从 Flashbot 到 MEV-Boost,其秉持的精神都是接受 MEV 的存在,竭力将隐藏在台面底下的经济活动搬到台面上,并建立一个公开市场让任何人都可以参与其中,目的就是为了避免这个巨大的经济利益一但默默地被少数人所掌握及把持,将逐渐使那些少数人握有越来越多的资源,最终影响整个区块链网络的中心化与安全。
但随着对 MEV 越来越了解,大家慢慢意识到除了发展最成熟的 Ethereum 上的 MEV 市场,还有跨链、跨界的 MEV 市场,这个跨界的 MEV 市场将比 Ethereum 的还大上许多,跨链的交易也比同一条链上的交易有更多榨取 MEV 的机会。
如果没有像当初 Flashbot 一样来揭露跨界 MEV 市场、将其搬上台面并让大家公平参与,能够榨取跨界 MEV 的少数人将会更有优势,最终仍然会影响整个区块链网络的安全性。
另一个会影响中心化、安全性的现象是 Private Order Flow:用户的交易不再流向公开的交易池,而是直接到 Searcher 或 Builder 手上。Private Order Flow 可能是来自 Searcher 或 Builder 向用户购买收入其交易的权利,或是 Builder 提供吸引人的服务,例如(1)免费取消用户送出的交易或 DEX 订单,或是(2)提供 Pre-Confirmation,在交易还未收入前就向用户保证交易会多快被收入,让用户不需烦恼交易是否会被收入、多久才会被收入。
部分 Private Order Flow 对使用者是有益的,但长久来看 Private Order Flow 仍然会导致中心化,因为拥有 Private Order Flow 的 Searcher / Builder 将比没有的人获得更多收益,且这将不利于竞争,因为没人会无缘无故将 Private Order Flow 分享给新加入的 Searcher / Builder,导致新加入的人在比赛一开始就陷入劣势。
为什么从用户的交易到 Searcher 组出来的 Bundle,都必须经由 Private Order Flow 的方式收进区块呢?这是因为交易和 Bundle 内容都是公开、没有加密的,只要一被别人看到、拿到,别人都可以对使用者或 Searcher 造成伤害,例如以夹击方式榨取用户交易的 MEV,或是拆解 Bundle 把 MEV 抢走。而这也是目前使用者和 Searcher 都要相信 Builder 的原因,因为他们都要将交易和 Bundle 的原始内容交给 Builder,并相信 Builder 不会伤害他们。
SUAVE 的出现便是要来解决跨界 MEV 及 Private Order Flow 所带来的中心化风险。
首先,透过建立一个服务于跨界 MEV 的公开市场,使用者或 Searcher 可以在这个市场里表达自己交易或 Bundle 的收入条件,例如用户同时有两笔交易要分别收入到 Ethereum 及 Arbitrum,且两笔都必须要被收入、要在哪个时间点之前被收入等等,而市场里的 Executor(可以是 Searcher 或 Builder)会争相满足这个请求来获得奖赏。但用户或 Searcher 怎么敢把交易或 Bundle 丢到这个公开的市场?这就需要引入隐私技术了。透过将交易加密,用户或 Searcher 就不需担心别人看到后能造成伤害,有了交易隐私才有 Open Order Flow 的可能。
SUAVE 更进一步提出了可编程隐私(Programmable Privacy)的概念,透过可编程隐私,使用者或 Searcher 将可以选择是否要揭露交易或 Bundle 内容的特定部分(像是交易执行的合约地址),而不是只能在完全加密或完全不加密中做选择。
相比完全加密的交易,揭露特定信息的交易将能更有效、更快速地被收入 Bundle 或区块中,甚至收到回扣,详细可以参考第四篇里介绍的 MEV-Share;透过揭露特定信息,Searcher 之间甚至可以互相合作,Searcher B 可以建立在 Searcher A 的 Bundle 之上:Searcher A 的 Bundle 尾随用户的交易进行套利,Searcher B 的 Bundle 再尾随 Searcher A 的 Bundle 进行套利。有了隐私,才能有 Open Order Flow;有了隐私,才能使得 Searcher 有机会互相合作,让彼此都能得利,而不是彼此竞争抢夺 MEV 机会。
SUAVE 可以被形容为一个「User Preference 的布告栏」。这里的 User 未必是一般区块链的使用者,Searcher 也可以是 SUAVE 的 User,以下将以「使用者」代指一般区块链的使用者,以「SUAVE User」代指 SUAVE 的使用者。
SUAVE 的 User Preference 就像是特殊化的 Intent、专注在交易排序上的 Intent,它不像读者可能会在其他地方看到的、可以做到指定各式各样条件的 General Intent。如同在 Intent 中使用者会指定偏好、条件,在 Preference 中 SUAVE User 则是指定「交易或 Bundle 收入进区块」的偏好或条件,例如:
阅读提示:用户也可以将一般的区块链交易(没有指定任何 Preference)送到 SUAVE,也就是单纯把 SUAVE 当成一般交易池或 Flashbot 来用,例如直接把他的 ETH 转账交易或 Uniswap 交易送到 SUAVE 那。
而当然如果只是单纯指定条件,是没有必要特别设计出一个新的架构来做这件事,直接用原本的 Flashbot 就好。所以其实在 SUAVE 中指定的这些 Preference 是要搭配奖赏的,否则没有人愿意无条件完成你的 Preference,当然支付的前提一定是 Preference 有被达成。
而透过将 Preference 指定与奖赏做成智能合约来被履行,需求方(例如使用者或 Searcher)将能提出更细致、更多元的 Preference 要求,而且这些要求是靠经济诱因来满足,而不是仰赖 Builder 的善良。
SUAVE 可以视为由三个组件所组成:Preference Environment、Execution Market 与 Decentralized Block Building。
△ 左边的 PE 汇聚各个链上的 Intent、套利交易,然后由中间的 Executor 们尝试满足这些 Preference 包进 Bundle 里,并将这些 Bundle 交给右边有权利产出区块的角色来组装出区块。图源:https://writings.flashbots.net/the-future-of-mev-is-suave
SUAVE 会有自己的一条链以及交易池,SUAVE 将链称为 Settlement Layer,将交易池称为 Messaging Layer。
链上可以部署智能合约,用来订立 Preference 与奖赏的契约,交易池则会充满 SUAVE User 宣告 Preference 的交易及 Executor 领奖赏的交易。
△ Preference 从建立到执行,再到结算的四个步骤。图源:https://dba.mirror.xyz/NTg5FSq1o_YiL_KJrKBOsOkyeiNUPobvZUrLBGceagg
SUAVE 需要能将 Preference 用程序语言撰写出来,转换成智能合约,才能履行 SUAVE User 和 Executor 之间的契约。SUAVE 预计会基于 EVM 来设计一个 MEV 专用的 EVM — MEVM。
MEVM 会新增专门用于 MEV 的 Precompile 合约及交易类型,User Preference、打包 Bundle、Block Building 这些功能都可以在 MEVM 里很方便地完成。
下图的范例程序代码将 Effective Gas Price(EGP) Block Building 算法用 Solidity、MEVM Precompile 合约写出来。
EGP Block Building 按照每个 Bundle 给的 Gas Price 来排序 Bundle,Gas Price 越高的 Bundle 会排在区块的越前面:
△ 图中粉红色的功能即是 MEVM 的 Precompile 功能,专门为 MEV 用途所设计。图源:https://writings.flashbots.net/mevm-suave-centauri-and-beyond
阅读提示:Block Building 算法的执行并不会真的发生在 SUAVE Chain 链上,而是 Block Builder 在链下模拟执行(就像节点会在本地端仿真一笔交易的执行一样),所以这个执行过程并不会真的成为一笔交易占用 SUAVE Chain 的区块空间及运算资源,也不会被 SUAVE Chain 的输出效能所限制。
透过 EVM 合约的可组合性,Searcher 与 Searcher 之间或 Searcher 与 Builder 之间将能透过合约进行合作,取代原本单方面的信任关系,而合作也将能进一步提升 Bundle 效率、套取出更多 MEV,也就能造福 MEV 供应链的每个参与者。另外参与者都能直接沿用基于 EVM 的开发工具与基础建设,例如 RPC Provider、测试工具例如 Foundry 等等,开发体验会非常好。
而且 MEVM 将会提供交易隐私的功能,因为没有隐私就没有合作可能。没有隐私,Searcher 就得担心自己的 MEV 被偷走。初期这个隐私将透过可信硬件 SGX 来达成,将交易加密再送给 SGX 执行,相信 SGX 会执行其指定的程序代码而不会任意窃取 MEV。未来当其他先进密码学技术逐渐成熟,再以密码学来取代可信硬件,详细介绍可以参考上一篇介绍 Encrypted Mempools 的内容。
阅读提示:但基于 EVM 也有缺点,像是 EVM 太 Expressive:其实要写出 MEV 所需功能并不需要许多 EVM 里面的 Opcode,允许这些 Opcode 的使用反而有可能让有心人事可以写出很复杂的执行,然后在执行的最后让交易失败,让节点浪费一堆运算资源,也就是 DoS 攻击。而 Anoma 这个项目则是重新设计了一个专门用来表达并执行 Intent 的程序语言与执行环境,未来或许 SUAVE 也会改用 Anoma 的架构来取代 MEVM。
如果一条链的区块开发者或 Validator 本身知道 SUAVE 的存在并且有意使用 SUAVE 的话,那它就会把 SUAVE 当成一个 Block Builder,如果 SUAVE 为其组出的区块提供更高的竞标价的话,那矿工或 Validator 就会使用 SUAVE 的区块。以目前 Ethereum 上的 MEV-Boost 为例,SUAVE 组出的区块会透过 SUAVE 提供的插件来转换成符合 MEV-Boost 竞标机制的格式,Proposer 不需为了采用 SUAVE 的区块做任何改动。
如果一条链的区块开发者或 Validator 不知道 SUAVE 的存在,那 SUAVE 的 Executor 就会透过该条链的手续费规则去竞标收入其 Bundle。
每一条链都有各自的区块开发者和 Validator。SUAVE 的区块 B1 被 X 链的收入不代表区块 B2 也会成功地被 Y 链的 Validator 收入,X 链和 Y 链的出块机制和市场是各自独立的。除非 X 链和 Y 链都采用 Shared Sequencer,同一时间由同一个 Sequencer 产出两条链的区块,那结合 SUAVE 才有办法保证 Atomic Inclusion :两条链要不「一起收入指定的交易(或区块)」,要不「都不收入」。
而且即便有 Shared Sequencer 能确保 Atomic Inclusion,也不代表交易被收入后会「成功」执行。没有两笔交易都「成功」执行就代表跨链 MEV 是失败的。假设一个 SUAVE User 想完成一个跨链的套利,必须要两条链上的交易都实时收入且成功执行他才能获益:
以下面的图为例,SUAVE User 要在 Rollup 1 及 Rollup 2 之间执行跨链交易套利:在 Rollup 1 上以较低的买一颗 ETH,在 Rollup 2 上以较高的价格卖一颗 ETH。
如果两笔交易都实时收入并成功执行,那 SUAVE User 就能赚到价差。图中表格里的 Scenario 1 和 2 分别是「SUAVE User 愿意自己承担分险」及「由 Executor 承担风险」。
表格最下面三列依序是「两笔都成功的奖赏」、「只有一笔成功的奖赏」及「只有一笔成功的最终结果」:
△ 不同情境下的不同执行结果。图源:https://dba.mirror.xyz/NTg5FSq1o_YiL_KJrKBOsOkyeiNUPobvZUrLBGceagg
跨链 MEV 需要 Executor 有资本、愿意承担风险且有足够技术能确保实时、Atomic 的收入与成功执行。这会是一个获利丰富但门坎相对高的一个工作。
为什么不能单纯地透过 P2P 网络来传递、分享 Preference?因为单纯的 P2P 网络没办法防止网络被无数 Preference 塞满(即 DoS 攻击),如果是一条链的话就可以透过手续费来防止 DoS 攻击。
为什么 SUAVE 不沿用现有的链?因为 SUAVE 需要自己的(MEV)功能、自己链的设定值例如区块时间、区块大小。如果直接搭建在 Ethereum 之上,将会遇到成本太高、区块时间太长、功能受限的问题。
另外因为 SUAVE 需要得到其他链上的信息来验证 Preference 是否有被满足,所以由一条独立的 SUAVE Chain 汇聚所有其他链的信息能保持中立。
不过 SUAVE 有自己一条链也表示(1)SUAVE User 可能会需要将资产从其他链跨到 SUAVE Chain 上才能使用 SUAVE,(2)SUAVE 需要仰赖 Oracle 回报其他链的信息。这代表 SUAVE 本身多了一个对 Oracle 的信任需求,如果 Oracle 是不安全的就会影响到 SUAVE 上合约的安全性。
阅读提示:关于 SUAVE 会不会有自己的代币、是否需要将资产跨到 SUAVE Chain 来使用,或是如何跨到 SUAVE Chain 上,目前还没有太多细节,只有在影片及文章提到过「SUAVE User 要先从其他链将资产跨到 SUAVE Chain 上才能使用」。
而 SUAVE Chain 本身的设计与安全模型目前还在讨论中,如果 SUAVE Chain 是一条 Ethereum 上的 Rollup 的话那就可以直接用 Rollup 本身的机制来转移资产和读取其他 Rollup 的信息,这会比仰赖其他跨链技术、Oracle 服务来的安全非常多。
如果 SUAVE Chain 的 Validator 可以结合 Eigenlayer,直接请 Ethereum Validator 作为 SUAVE Chain Validator 也会比 SUAVE 自己生出一组 Validator 更安全可靠。但当然这些设计也有相对应的缺点,更多关于 SUAVE Chain 设计的讨论可以参考这篇。
本篇将介绍的是提供交易更进阶的「可编程隐私(Programmable Privacy)」特性与一个跨链且更开放、更公平的 MEV 市场设计 —— SUAVE。在进入正题讲解 SUAVE 之前,先请了解 Intent 这个概念。
以 Ethereum 的交易为例,假设用户想要将他手上的 USDT 换成 ETH,他可能会到 Uniswap 网页查看价格,并在设定好允许的滑价之后签名送出交易,之后就是等待交易结果。
他的交易大概会长这样:「我签名并送出这笔交易,这笔交易的 Nonce 值是 23、手续费是 30 Gwei,它会去执行 Uniswap 合约用我的 1000 USDT 换 0.5 ETH,滑价最多是 1%」。
△ Nonce?Gwei?图源:https://www.reddit.com/r/MemeRestoration/comments/ejcvd3/confused_math_lady_4080x2663px
假设 Alice 是一个小白用户,她就只想把她手上的 USDT 换成 ETH 而已,但她却要跨过重重门槛才能完成这个小小的愿望:
每一个关卡都是一个小白用户其实不需要了解但又被迫要做出选择的题目:要到哪里兑换?要不要设定滑价?滑价要设定百分之几?要不要调整手续费?要调成多少 Gwei?交易怎么失败了?交易怎么卡在那边好久了(可能是 Nonce 或手续费的问题)?我该怎么办?
不像 Transaction 要指定好一笔交易的各种细节,Intent 只需要使用者指定他想要达成的结果以及执行的条件就可以,剩下的交给更专业的人。
在 Intent 中,Alice 指定好要用 1000 USDT 换 0.5 ETH,但考虑到手续费因此将价格调整为 0.495 ETH,接着就是对这个订单签名并送出。Alice 的交易会长这样:「我签名并送出这笔订单,我想用 1000 USDT 换 0.495 ETH。只要能让我拿到 0.495 ETH 这笔订单都有效」。
非常简单对吧,而这就是限价单(Limit Order)的使用体验,也是目前 DEX Aggregator(例如 1inch 和 Tokenlon)大致的使用体验。
△ Transaction(上)与 Intent(下)的不同,透过 Intent 使用者只要指定好条件,不需烦恼该如何达成。图说:https://www.paradigm.xyz/2023/06/intents
透过 Intent,用户不必再处理、烦恼交易从产生、签名到执行之间的各种琐碎难懂的细节,甚至交易失败时还要搞清楚问题再继续尝试,而且不同链还会有不同的交易流程和地雷!
透过 Intent,使用者只需要指定好他的这个 Intent 执行的条件、预期的结果,剩下的就是由专业的 Solver 来实现使用者的 Intent:替用户处理怎么送交易、监控交易、加速交易、处理交易失败等等麻烦事,而 Intent 也只有在执行条件及预期结果都被满足的情况下才能实现,所以使用者也不必担心是否会有意外发生导致资产不翼而飞。
Intent 将可以大大地提升区块链的使用体验。
阅读提示 1:其实目前已经有很多使用 Intent 的例子,像是多签钱包的签名、授予第三方特定执行权限与时限的 Session Key 概念,或是批次撮合交易的机制例如 CowSwap。甚至在 Web2 的世界也都有 Intent 的踪迹,像是搜索引擎(我输入我想查询的东西,搜索引擎透过各种渠道找到相关信息给我)或是电商网拍(我输入我想买的东西,电商透过各种渠道找到它并送到我手上)。只是 Intent 这个词到最近才在 Web3 世界红起来。
阅读提示 2:英文会用 Imperative (「命令式的」)这个字形容 Transaction 的使用体验,也就是下达完整命令去完成目标;而 Intent 的使用体验则会使用 Declarative(「语句的」)这个字来形容,表示它是透过陈述执行条件与执行结果来使用。
在跨链的应用例如跨链桥、跨链 DEX 中,因为牵涉到两条或更多条链,所以使用者要面对的是更多不同链的交易的处理。
撇除透过项目方的多签来完成跨链的应用本来就能提供较好的使用体验(例如使用者在来源链送出交易后,项目方多签会自动在目标链上将资产送到用户指定的地址,不需用户在目标链执行任何操作),其他更去中心化的跨链应用像是 Nomad 与 Succinct 则没有这么好的使用体验,用户可能需要自己到目标链上送出交易完成操作。
因此 Intent 能带来的使用体验提升在跨链世界里更显得重要与迫切。
透过 Intent,跨链的操作将只需要使用者签个名即可,不必再烦恼各个链的交易规则和细节。使用者将能以一样的使用体验去操作不同条链,甚至不会感知到有不同链的事实。
SUAVE 的全名是 Single Unifying Auction for Value Expression,目的是成为一个横跨多个链的、统一的 MEV 市场,在这个市场中使用者可以以有效率的方式表达一笔交易的成交条件及奖赏,同时执行者(Executor)彼此会竞争,也会进行有效率地合作来完成使用者的请求。
SUAVE 可以作为一条区块链的交易池及成为该区块链负责生产区块内容的 Builder 角色,但 SUAVE 并非要取代一条区块链原有的交易池及 Builder 功能,而是以一个即插即用(Plug and Play)的方式接上一条现有的区块链。
SUAVE 接入一条区块链后,该区块链等于多了一个去中心化、非常专业且同时拥有横跨多条区块链交易来源的强大 Builder。同时拥有多条区块链交易来源将在未来逐渐成长的跨界(Cross Domain) MEV 市场中提供巨大优势,拥有这个优势的 Builder 将会比在单一条链运作的 Builder 更有竞争力。
从 Flashbot 到 MEV-Boost,其秉持的精神都是接受 MEV 的存在,竭力将隐藏在台面底下的经济活动搬到台面上,并建立一个公开市场让任何人都可以参与其中,目的就是为了避免这个巨大的经济利益一但默默地被少数人所掌握及把持,将逐渐使那些少数人握有越来越多的资源,最终影响整个区块链网络的中心化与安全。
但随着对 MEV 越来越了解,大家慢慢意识到除了发展最成熟的 Ethereum 上的 MEV 市场,还有跨链、跨界的 MEV 市场,这个跨界的 MEV 市场将比 Ethereum 的还大上许多,跨链的交易也比同一条链上的交易有更多榨取 MEV 的机会。
如果没有像当初 Flashbot 一样来揭露跨界 MEV 市场、将其搬上台面并让大家公平参与,能够榨取跨界 MEV 的少数人将会更有优势,最终仍然会影响整个区块链网络的安全性。
另一个会影响中心化、安全性的现象是 Private Order Flow:用户的交易不再流向公开的交易池,而是直接到 Searcher 或 Builder 手上。Private Order Flow 可能是来自 Searcher 或 Builder 向用户购买收入其交易的权利,或是 Builder 提供吸引人的服务,例如(1)免费取消用户送出的交易或 DEX 订单,或是(2)提供 Pre-Confirmation,在交易还未收入前就向用户保证交易会多快被收入,让用户不需烦恼交易是否会被收入、多久才会被收入。
部分 Private Order Flow 对使用者是有益的,但长久来看 Private Order Flow 仍然会导致中心化,因为拥有 Private Order Flow 的 Searcher / Builder 将比没有的人获得更多收益,且这将不利于竞争,因为没人会无缘无故将 Private Order Flow 分享给新加入的 Searcher / Builder,导致新加入的人在比赛一开始就陷入劣势。
为什么从用户的交易到 Searcher 组出来的 Bundle,都必须经由 Private Order Flow 的方式收进区块呢?这是因为交易和 Bundle 内容都是公开、没有加密的,只要一被别人看到、拿到,别人都可以对使用者或 Searcher 造成伤害,例如以夹击方式榨取用户交易的 MEV,或是拆解 Bundle 把 MEV 抢走。而这也是目前使用者和 Searcher 都要相信 Builder 的原因,因为他们都要将交易和 Bundle 的原始内容交给 Builder,并相信 Builder 不会伤害他们。
SUAVE 的出现便是要来解决跨界 MEV 及 Private Order Flow 所带来的中心化风险。
首先,透过建立一个服务于跨界 MEV 的公开市场,使用者或 Searcher 可以在这个市场里表达自己交易或 Bundle 的收入条件,例如用户同时有两笔交易要分别收入到 Ethereum 及 Arbitrum,且两笔都必须要被收入、要在哪个时间点之前被收入等等,而市场里的 Executor(可以是 Searcher 或 Builder)会争相满足这个请求来获得奖赏。但用户或 Searcher 怎么敢把交易或 Bundle 丢到这个公开的市场?这就需要引入隐私技术了。透过将交易加密,用户或 Searcher 就不需担心别人看到后能造成伤害,有了交易隐私才有 Open Order Flow 的可能。
SUAVE 更进一步提出了可编程隐私(Programmable Privacy)的概念,透过可编程隐私,使用者或 Searcher 将可以选择是否要揭露交易或 Bundle 内容的特定部分(像是交易执行的合约地址),而不是只能在完全加密或完全不加密中做选择。
相比完全加密的交易,揭露特定信息的交易将能更有效、更快速地被收入 Bundle 或区块中,甚至收到回扣,详细可以参考第四篇里介绍的 MEV-Share;透过揭露特定信息,Searcher 之间甚至可以互相合作,Searcher B 可以建立在 Searcher A 的 Bundle 之上:Searcher A 的 Bundle 尾随用户的交易进行套利,Searcher B 的 Bundle 再尾随 Searcher A 的 Bundle 进行套利。有了隐私,才能有 Open Order Flow;有了隐私,才能使得 Searcher 有机会互相合作,让彼此都能得利,而不是彼此竞争抢夺 MEV 机会。
SUAVE 可以被形容为一个「User Preference 的布告栏」。这里的 User 未必是一般区块链的使用者,Searcher 也可以是 SUAVE 的 User,以下将以「使用者」代指一般区块链的使用者,以「SUAVE User」代指 SUAVE 的使用者。
SUAVE 的 User Preference 就像是特殊化的 Intent、专注在交易排序上的 Intent,它不像读者可能会在其他地方看到的、可以做到指定各式各样条件的 General Intent。如同在 Intent 中使用者会指定偏好、条件,在 Preference 中 SUAVE User 则是指定「交易或 Bundle 收入进区块」的偏好或条件,例如:
阅读提示:用户也可以将一般的区块链交易(没有指定任何 Preference)送到 SUAVE,也就是单纯把 SUAVE 当成一般交易池或 Flashbot 来用,例如直接把他的 ETH 转账交易或 Uniswap 交易送到 SUAVE 那。
而当然如果只是单纯指定条件,是没有必要特别设计出一个新的架构来做这件事,直接用原本的 Flashbot 就好。所以其实在 SUAVE 中指定的这些 Preference 是要搭配奖赏的,否则没有人愿意无条件完成你的 Preference,当然支付的前提一定是 Preference 有被达成。
而透过将 Preference 指定与奖赏做成智能合约来被履行,需求方(例如使用者或 Searcher)将能提出更细致、更多元的 Preference 要求,而且这些要求是靠经济诱因来满足,而不是仰赖 Builder 的善良。
SUAVE 可以视为由三个组件所组成:Preference Environment、Execution Market 与 Decentralized Block Building。
△ 左边的 PE 汇聚各个链上的 Intent、套利交易,然后由中间的 Executor 们尝试满足这些 Preference 包进 Bundle 里,并将这些 Bundle 交给右边有权利产出区块的角色来组装出区块。图源:https://writings.flashbots.net/the-future-of-mev-is-suave
SUAVE 会有自己的一条链以及交易池,SUAVE 将链称为 Settlement Layer,将交易池称为 Messaging Layer。
链上可以部署智能合约,用来订立 Preference 与奖赏的契约,交易池则会充满 SUAVE User 宣告 Preference 的交易及 Executor 领奖赏的交易。
△ Preference 从建立到执行,再到结算的四个步骤。图源:https://dba.mirror.xyz/NTg5FSq1o_YiL_KJrKBOsOkyeiNUPobvZUrLBGceagg
SUAVE 需要能将 Preference 用程序语言撰写出来,转换成智能合约,才能履行 SUAVE User 和 Executor 之间的契约。SUAVE 预计会基于 EVM 来设计一个 MEV 专用的 EVM — MEVM。
MEVM 会新增专门用于 MEV 的 Precompile 合约及交易类型,User Preference、打包 Bundle、Block Building 这些功能都可以在 MEVM 里很方便地完成。
下图的范例程序代码将 Effective Gas Price(EGP) Block Building 算法用 Solidity、MEVM Precompile 合约写出来。
EGP Block Building 按照每个 Bundle 给的 Gas Price 来排序 Bundle,Gas Price 越高的 Bundle 会排在区块的越前面:
△ 图中粉红色的功能即是 MEVM 的 Precompile 功能,专门为 MEV 用途所设计。图源:https://writings.flashbots.net/mevm-suave-centauri-and-beyond
阅读提示:Block Building 算法的执行并不会真的发生在 SUAVE Chain 链上,而是 Block Builder 在链下模拟执行(就像节点会在本地端仿真一笔交易的执行一样),所以这个执行过程并不会真的成为一笔交易占用 SUAVE Chain 的区块空间及运算资源,也不会被 SUAVE Chain 的输出效能所限制。
透过 EVM 合约的可组合性,Searcher 与 Searcher 之间或 Searcher 与 Builder 之间将能透过合约进行合作,取代原本单方面的信任关系,而合作也将能进一步提升 Bundle 效率、套取出更多 MEV,也就能造福 MEV 供应链的每个参与者。另外参与者都能直接沿用基于 EVM 的开发工具与基础建设,例如 RPC Provider、测试工具例如 Foundry 等等,开发体验会非常好。
而且 MEVM 将会提供交易隐私的功能,因为没有隐私就没有合作可能。没有隐私,Searcher 就得担心自己的 MEV 被偷走。初期这个隐私将透过可信硬件 SGX 来达成,将交易加密再送给 SGX 执行,相信 SGX 会执行其指定的程序代码而不会任意窃取 MEV。未来当其他先进密码学技术逐渐成熟,再以密码学来取代可信硬件,详细介绍可以参考上一篇介绍 Encrypted Mempools 的内容。
阅读提示:但基于 EVM 也有缺点,像是 EVM 太 Expressive:其实要写出 MEV 所需功能并不需要许多 EVM 里面的 Opcode,允许这些 Opcode 的使用反而有可能让有心人事可以写出很复杂的执行,然后在执行的最后让交易失败,让节点浪费一堆运算资源,也就是 DoS 攻击。而 Anoma 这个项目则是重新设计了一个专门用来表达并执行 Intent 的程序语言与执行环境,未来或许 SUAVE 也会改用 Anoma 的架构来取代 MEVM。
如果一条链的区块开发者或 Validator 本身知道 SUAVE 的存在并且有意使用 SUAVE 的话,那它就会把 SUAVE 当成一个 Block Builder,如果 SUAVE 为其组出的区块提供更高的竞标价的话,那矿工或 Validator 就会使用 SUAVE 的区块。以目前 Ethereum 上的 MEV-Boost 为例,SUAVE 组出的区块会透过 SUAVE 提供的插件来转换成符合 MEV-Boost 竞标机制的格式,Proposer 不需为了采用 SUAVE 的区块做任何改动。
如果一条链的区块开发者或 Validator 不知道 SUAVE 的存在,那 SUAVE 的 Executor 就会透过该条链的手续费规则去竞标收入其 Bundle。
每一条链都有各自的区块开发者和 Validator。SUAVE 的区块 B1 被 X 链的收入不代表区块 B2 也会成功地被 Y 链的 Validator 收入,X 链和 Y 链的出块机制和市场是各自独立的。除非 X 链和 Y 链都采用 Shared Sequencer,同一时间由同一个 Sequencer 产出两条链的区块,那结合 SUAVE 才有办法保证 Atomic Inclusion :两条链要不「一起收入指定的交易(或区块)」,要不「都不收入」。
而且即便有 Shared Sequencer 能确保 Atomic Inclusion,也不代表交易被收入后会「成功」执行。没有两笔交易都「成功」执行就代表跨链 MEV 是失败的。假设一个 SUAVE User 想完成一个跨链的套利,必须要两条链上的交易都实时收入且成功执行他才能获益:
以下面的图为例,SUAVE User 要在 Rollup 1 及 Rollup 2 之间执行跨链交易套利:在 Rollup 1 上以较低的买一颗 ETH,在 Rollup 2 上以较高的价格卖一颗 ETH。
如果两笔交易都实时收入并成功执行,那 SUAVE User 就能赚到价差。图中表格里的 Scenario 1 和 2 分别是「SUAVE User 愿意自己承担分险」及「由 Executor 承担风险」。
表格最下面三列依序是「两笔都成功的奖赏」、「只有一笔成功的奖赏」及「只有一笔成功的最终结果」:
△ 不同情境下的不同执行结果。图源:https://dba.mirror.xyz/NTg5FSq1o_YiL_KJrKBOsOkyeiNUPobvZUrLBGceagg
跨链 MEV 需要 Executor 有资本、愿意承担风险且有足够技术能确保实时、Atomic 的收入与成功执行。这会是一个获利丰富但门坎相对高的一个工作。
为什么不能单纯地透过 P2P 网络来传递、分享 Preference?因为单纯的 P2P 网络没办法防止网络被无数 Preference 塞满(即 DoS 攻击),如果是一条链的话就可以透过手续费来防止 DoS 攻击。
为什么 SUAVE 不沿用现有的链?因为 SUAVE 需要自己的(MEV)功能、自己链的设定值例如区块时间、区块大小。如果直接搭建在 Ethereum 之上,将会遇到成本太高、区块时间太长、功能受限的问题。
另外因为 SUAVE 需要得到其他链上的信息来验证 Preference 是否有被满足,所以由一条独立的 SUAVE Chain 汇聚所有其他链的信息能保持中立。
不过 SUAVE 有自己一条链也表示(1)SUAVE User 可能会需要将资产从其他链跨到 SUAVE Chain 上才能使用 SUAVE,(2)SUAVE 需要仰赖 Oracle 回报其他链的信息。这代表 SUAVE 本身多了一个对 Oracle 的信任需求,如果 Oracle 是不安全的就会影响到 SUAVE 上合约的安全性。
阅读提示:关于 SUAVE 会不会有自己的代币、是否需要将资产跨到 SUAVE Chain 来使用,或是如何跨到 SUAVE Chain 上,目前还没有太多细节,只有在影片及文章提到过「SUAVE User 要先从其他链将资产跨到 SUAVE Chain 上才能使用」。
而 SUAVE Chain 本身的设计与安全模型目前还在讨论中,如果 SUAVE Chain 是一条 Ethereum 上的 Rollup 的话那就可以直接用 Rollup 本身的机制来转移资产和读取其他 Rollup 的信息,这会比仰赖其他跨链技术、Oracle 服务来的安全非常多。
如果 SUAVE Chain 的 Validator 可以结合 Eigenlayer,直接请 Ethereum Validator 作为 SUAVE Chain Validator 也会比 SUAVE 自己生出一组 Validator 更安全可靠。但当然这些设计也有相对应的缺点,更多关于 SUAVE Chain 设计的讨论可以参考这篇。