本文提出了一种基于阈值加密的内存池方案,结合Shutter的阈值加密技术和mev-commit的预确认基础设施,旨在解决以太坊中普遍存在的抢跑交易、三明治攻击和审查问题。该方案允许用户提交加密交易,构建者在不知晓交易内容的情况下进行承诺,只有在达到足够的承诺后,密钥持有者才会释放解密密钥,从而实现实际的前端运行保护。
作者:Murat Akdeniz (Primev), Bernardo Magri (Primev), Christian Matt (Primev), Punit Jain (Shutter Network), Anthony Caravello (Shutter Network), Luis Bezzenberger (Shutter Network)
以太坊用户每天都会因抢跑、三明治攻击和审查而损失价值。DEX 交易被夹击,NFT 铸造被抢跑。这些攻击之所以成功,是因为交易在被纳入之前会显示在公共内存池中。
用户端的解决方案是加密:在执行顺序确定之前隐藏交易内容。但仅靠加密是不够的。如何确保构建者在承诺后实际包含加密的交易?
这篇文章介绍了以太坊链下交易供应链的第一个阈值加密内存池。我们将 Shutter 的阈值加密与 mev-commit 的预确认基础设施相结合,以创建实际的抢跑保护,该保护可以在今天部署而无需共识更改。
关键属性:
我们正在 Hoodi 测试网上部署一个可用的概念验证。在当前的 PoC 中,排序器 / RPC 仍然在加密交易之前短暂地以明文形式看到交易,因此主要的可视性改进是在用户和公共内存池 / 构建者之间。与此同时,我们正在探索与 Kohaku 风格的方法集成,以转向端到端的执行前隐私,即使 RPC 也无法检查交易内容。
构建者集成:构建者通过扩展其现有的 mev-commit 提供者工作流程来接受和承诺盲加密的出价,从而与加密内存池集成。除了支持 Shutterised Bid 并将解密后的事务放在块的顶部之外,不需要更改块构建逻辑。
mev-commit 通过其标准提供者接口公开加密的出价,允许构建者像接收普通预确认出价一样接收它们,但没有交易内容。构建者评估这些盲标,发布与交易哈希相关的承诺,并依靠 keypers 在达到全局承诺阈值后发布解密密钥。密钥发布后,构建者通过提供者端点获取解密后的交易,并将其包含在区块构建中。
验证者集成: mev-commit 与 commit-boost、mev-boost 或任何其他支持中继的 sidecar 集成,允许验证者通过简单地在其 Commit-Boost 配置中选择启用 mev-commit 的中继来选择加入预确认。
阈值加密将信任分配给多个称为 keypers 的参与者。在这种方案下加密的交易只有在阈值数量的 keypers(t out of n)合作释放其密钥份额时才能解密。这可以防止任何一方在没有公共解密触发器的情况下进行解密。
加密内存池的关键挑战是执行:我们如何确保构建者实际包含他们承诺的加密交易?存在三种方法:
我们的设计通过 mev-commit 的预确认基础设施使用经济强制执行。构建者以密码学方式承诺包含特定交易,并以可削减的权益支持这些承诺。我们将此机制扩展到加密交易,创建一个构建者盲目承诺交易内容的系统。
关键的见解是承诺基础设施已经存在。与其等待共识更改或智能账户采用,不如利用 mev-commit 现有的削减条件并将其扩展到处理阈值加密的交易,从而立即部署加密内存池。
我们的系统集成了三个组件:
1. 用户通过阈值密码学进行加密
2. 用户将加密的交易提交给排序器
3. 排序器将加密的出价提交给 mev-commit 投标人节点
4. 投标人将加密的出价中继给构建者(提供者)
5. 构建者评估并进行盲承诺
6. Keypers 验证承诺阈值,释放密钥
7. 构建者解密并将交易包含在区块的顶部
8. Oracle 验证 L1 上的包含情况
9. Oracle 证明 mev-commit 以获得奖励/削减
关键属性是有条件解密:只有在获得足够的构建者承诺后才释放密钥。这可以防止“解密然后审查”攻击,即构建者看到明文并有选择地排除交易。
Keypers 实现阈值验证逻辑:
func ShouldReleaseKey(identity Identity) bool {
commitments := GetCommitments(identity)
if len(commitments) < THRESHOLD {
return false // 承诺不足
}
for _, c := range commitments {
bidderAddr := RecoverSigner(c.Signature)
expectedIdentity := Keccak256(c.RandomPrefix + bidderAddr)
if expectedIdentity != identity {
return false // 无效身份
}
}
return true
}
PoC 使用 threshold = 3,但生产系统可以根据出价金额动态地设置此值,或者使用验证者支持的 keyper 集。
mev-commit oracle 通过追溯削减来强制执行包含:
func ValidateInclusion(tx, commitment, block) Outcome {
decrypted := Decrypt(tx.Encrypted, tx.Key)
if !IsInBlock(decrypted, block) {
if IsValidTransaction(decrypted) {
return SLASH_BUILDER // 恶意排除
} else {
return NO_SLASH // 合理排除
}
}
if block.Transactions[0].Hash != decrypted.Hash {
return PARTIAL_REWARD // 放置错误
}
return FULL_REWARD
}
削减结果:
这为构建者履行承诺创造了强大的激励。在 PoC 中,削减设置为全额出价(30 Gwei)。生产系统可以根据声誉实施按比例削减。
要求交易位于区块顶部可以防止一种微妙的攻击:构建者可以包含加密的交易,但在解密后用他们自己的交易抢跑它们。oracle 验证区块位置:
if block.Transactions[0].Hash != decrypted.Hash {
return PARTIAL_REWARD
}
可以使用 TXINDEX 预编译(EIP-7793)进行链上验证,以用于未来结合经济和密码学强制执行的变体。
攻击:构建者承诺,接收解密密钥,然后重新排序以进行抢跑。
防御:Oracle 检测到错误的放置并进行削减。由于削减等于出价金额,因此只有当 MEV 提取超过削减惩罚时,抢跑才有利可图。实际上,这使得抢跑对于大多数交易在经济上是不合理的。
权衡:如果 MEV 超过权益,经济强制执行允许抢跑。密码学强制执行(智能合约在链上验证放置)可以无条件地防止这种情况,但需要共识更改和更高的 gas 成本。我们的方法是今天可以部署的。
攻击:构建者承诺然后故意排除交易。
防御:Oracle 削减全额出价。由于构建者错过了奖励并损失了权益,因此除非受到外部动机(例如,OFAC 合规性)的驱使,否则审查在经济上是不合理的。
限制:无法防止承诺之前的审查。如果没有构建者承诺,keypers 不会释放密钥,并且不会包含交易。这可以通过以下方式缓解:
攻击:提议者离线,解密的交易泄露,下一个提议者进行抢跑。
防御:在当前的 PoC 中,我们不阻止跨Slot的交易重用。但是,可以通过添加特定于Slot的验证来解决这个问题:
require(block.number == intendedBlock, "错误的区块");
即使已被解密,这也会使未来区块中的交易主体无效,类似于智能账户方法如何处理这种情况。此限制也可以在 dapp 上使用特定检查来处理,例如通过 AMM 交换 token 的截止日期。
攻击:Keypers 勾结提前解密(< 阈值)。
防御:阈值假设(< t 的 n 个恶意)。对于 PoC,我们使用 t = 3,n = 5。生产改进:
Shutter 路线图 深入探讨了这些改进。
今天,排序器 / RPC 仍然在加密交易并将其转发到加密内存池之前以明文形式看到交易。这意味着:
我们更长远的目标是弥合这一差距,实现端到端的执行前隐私。我们正在探索:
此 PoC 应被视为朝着端到端模型迈出的一步。
构建者决定:盲目承诺还是跳过?
如果以下情况则承诺:E[TransactionValue] + Reputation > SlashingRisk
该设计保留了回溯 MEV,同时防止了抢跑。解密后,构建者可以包含回溯交易,而不会损害用户。各方(用户、构建者、keypers、oracle)都有经济动机诚实参与。
验证者参与加强了承诺的可信度,并使加密内存池能够提取最高的经济价值。但是,保持验证者的简单性至关重要。mev-commit 通过与 PBS sidecar(如 commit-boost 和 mev-boost)集成来实现这一点。
建筑:
它是如何工作的:
验证者可以运行支持多种承诺协议(包括 mev-commit)的单个 PBS sidecar。集成仅需要:
验证者的好处:
与替代方案的比较:
| 方法 | 验证者复杂性 | 承诺强度 | 部署时间表 |
|---|---|---|---|
| mev-commit + PBS sidecar | 最小(仅 sidecar) | 强(经济 + 验证者支持) | 现在可用 |
| 协议内预确认 | 最小(共识) | 最强(共识强制执行) | 2 年以上(需要硬分叉) |
| 直接验证者集成 | 高(自定义基础设施) | 强(直接参与) | 可用但运营风险很高 |
通过利用现有的 PBS sidecar,我们的加密内存池设计在提供对预确认市场的即时访问的同时,保持了与不断发展的验证者基础设施的兼容性。随着 mev-commit 扩展以支持除预确认之外的其他服务,使用这些 sidecar 的验证者会自动受益,而无需更改其设置。
我们正在 Hoodi 测试网上部署 PoC,我们将很快提供它。
加密的内存池流将通过专用 FastRPC 端点公开,该端点支持但独立于主 RPC 接口,可供保护隐私的钱包使用。
组件:
性能:
我们的 mev-commit 方法通过削减使用经济强制执行:
今天适用于 EOA
更低的 gas 成本(链下验证)
利用现有的 mev-commit 基础设施
与当前的 PBS 架构兼容
追溯执行(如果 MEV > 权益,则可能发生抢跑)
需要构建者参与 mev-commit通过智能合约的密码学强制执行将提供:
无条件的抢跑保护
不会削减离线提议者
需要采用 ERC-4337 或类似的账户抽象
需要新的预编译(TXINDEX、SLOT)
更高的 gas 成本(链上验证)
限制为没有 EIP-7702 的智能账户这些方法是互补的。未来的工作可以将 mev-commit 承诺与智能合约验证相结合,以实现分层安全性。
我们的链下 mev-commit 方法:
今天可以部署
迭代改进路径
更低的协调成本
比共识强制执行的保证弱
依赖于经济安全链上集成 ( Shutter 路线图) 将提供:
最强的保证(共识强制执行)
无需外部削减基础设施
可以与 FOCIL 集成
需要硬分叉
更长的部署时间表机制设计:
集成:
安全:
经济学:
短期(3-6 个月): 构建者加入、性能优化、钱包集成、监控基础设施
中期(6-12 个月): 动态阈值、具有削减功能的验证者支持的 keypers、中继集成
长期(12 个月以上): 用于分层安全性的智能合约集成、ePBS 原生支持、FOCIL 集成、协议内转换路径,以及更深入的 Kohaku / PSE 风格的集成,以实现 RPC 盲、端到端的执行前隐私
模块化设计允许增量部署,而不会破坏现有功能。
我们提出了一个实用的阈值加密内存池,该内存池利用 mev-commit 的预确认基础设施进行经济强制执行。虽然追溯削减比主动密码学强制执行弱,但它在以太坊现有架构内提供了一个可部署的向前路径。
Hoodi 测试网上的 PoC 是第一步。接下来的步骤包括扩大构建者参与、优化性能、通过端到端方法加强 RPC 可见性,以及收集数据以告知生产部署和未来的协议内设计。
加密内存池对于以太坊的公平性和去中心化至关重要。这项工作表明它们今天就可以部署。我们邀请构建者、验证者和协议开发人员试验 PoC 并提供反馈。
代码和文档:
致谢: 这项工作建立在 Shutter Network 的阈值加密研究和 mev-commit 的预确认基础设施之上。感谢更广泛的加密内存池研究社区提供的宝贵见解。
- 原文链接: ethresear.ch/t/threshold...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!