读懂加密内存池:解决 MEV 和审查问题的全新设计空间

2023-03-16 13:50 栏目:行业动态 来源:网络整理 查看()

加密内存池是解决MEV和检测问题的强大工具,目前有一些可以单独使用的相关方案,也可以在它们之间组合使用。

这篇文章概括了由Justin Drake围绕Columbia、Amsterdam和Flashbots Roast主题的演讲所构建的设计空间。 你们很多人第一次看到的时候可能很难理解,所以我会简单地尝试分解和扩展。

基本思想:允许用户提交加密交易,区块生产者提交这些交易才能解密:

用户加密和广播交易

*加密交易提交

交易已解密

*执行事务(注意:提交、解码和执行可能位于单个插槽中) ) ) ) ) )。

两个问题似乎可以解决:

*MEV :如果你看不到它,你就不能抢先交易。

复查:您无法复查交易,除非排除所有加密的交易。 如果许多交易被加密,成本可能会非常高)

这里需要确保的一个重点是保证解密不依赖于用户。 有几种方法可以实现这一点。

1.In-flight

相信某个第三者,私下给他发送数据,他可以解密并看到数据,但保证在数据提交到链接之前不会公开。 这就是Flashbots Protect等产品的工作原理。

2. 可信硬件

可以利用可靠的硬件。 明文可以在受信任的硬件上执行,但在提交事务之前不会公开解密。 最有名的例子是Flashbots SUAVE的SGX。

3. 门限加密 / 解密(TED)

某委员会可以合作强制解密密文,但要实现这一点需要签名者达到门槛。 例如,您的“阈值”可能需要2/3的验证者同意解密。 TED在几个不同的领域进行了研究,包括:

*以太网L1——Shutterized Beacon Chain

*Shutter Network——以太网L2s

*Arbitrum ——Chainlink上的FSS

*Osmosis Anoma ——Ferveo

Shutterized Beacon Chain

请仔细看看Shutterized Beacon Chain的提案。 验证器的子集“密钥生成器”使用分布式密钥生成器( dkg )生成公钥和私钥对。 任何人都可以看到公钥,但是私钥在委员会上被分成多个保管着。 为了重建密钥和解密,密钥共享需要达到一定的阈值(例如,2/3 )。

用户可以在解密并运行内容之前选择性地加密链中包含的事务。 区块生产者使用明文交易(立即执行)和加密交易(计划于未来区块高度)创建区块。

在生成并验证块n -1之后,keypers必须生成并发布块n的解密密钥。 该密钥可以解密块n内的交易。 块n必须包含解密密钥才能被视为有效。 将计算块的后状态,以便在执行块内的明文事务之前,先执行块内的加密事务(按它们的设置顺序)。

缺点

TED有几个缺点:

缺乏问责制:与传统的安全前提不同,这里的恶意行为既不是原因,也不是报告。 Keypers可以马上解密。 我不能以那个为根据。 即使假设验证者的行为与激励兼容,验证者集之外的其他三个字符机构(译者注:三个字符机构是中情局、联邦调查局等机构的统称,保护美国,但通常行为神秘)也可能会影响他们。

诚实的大多数假设:不诚实的委员会可能会引起问题,比如选择不解密某些消息,或者秘密解密不应该解密的消息。 例如,政府机关的请求,自私地进行MEV提取等。 在许多情况下,区块链实际上依赖于经济上合理的多数。 也就是说,没有惩罚的惩罚往往超过恶意双花等行为的经济激励。 通过阈值加密,这一假设被转移到真正诚实和无私的多数上。

破坏协议的稳定性:本质上是以上两点的组合,TED提高了验证者作恶的动机,不易受到惩罚。

降低激活:提高解密阈值可以提高协议的安全性。)。 但是,这直接削弱了活力。 例如,大规模网络的中断可能会中断一半的验证者,现在协议可能会停止。 特别是对于非常强调“第三次世界大战”活跃性的以太坊来说,这是不能接受的权衡。

不良的用户体验: TED可能会增加延迟和成本,具体取决于实施细节。

子优势的分配:让我们看一下“简单飞行”( frontrunning )的示例。

*1 ETH价格为1000美元

*如果我把交易送到vanilla内存池——,我得到了990美元。 (搜索者frontruns和backruns,净利润10美元) )。

*如果我把交易送到TED内存池——,我得到了995美元。 (虽然搜索者无法夺取,但推进了当地的现货价格,给搜索者创造了5美元的套利机会) ) )。

*我把交易寄给了最佳订单拍卖——,拿到了1000美元(我没有拿到frontruns或backruns )。 或者同样,我确实获得了frontruns和/或backruns,但搜索者必须在竞拍中出价10美元以获得其权利,最终结果是一样的。 )

在这种情况下,你把钱留在桌面上让别人拿走。 经济合理的用户必须公开足够的订单信息,才能获得接近订单价值的补偿。 他们不应该天真地对他们的交易进行阈值加密,隐藏它提供的价值(允许别人捕获它)

这是一个超理想化的例子,但我发现隐藏问题并不总是解决问题。 TED可以是有用的工具,但不是MEV的灵丹妙药。 在某些情况下,CR可能更好。

另外,以太坊增加了复杂性。 例如,尽管可能会因一个时隙的终止性而变化,但缺乏即时终止性,引入了重组问题。 至少在以太坊的L1,我相信这里权衡的利大于弊。 通过提高以太坊的信任假说,共谋的动机会提高(不被发现),降低其活性度所带来的损害可能多于好处。

然而,与以太网L1相比,这些权衡中的一些对L2和其他L1来说可能更容易被接受。

4.延迟加密 / 解密(DED)

使用延迟加密,可以将加密信息设置为在一定时间后自动解密。 这是VDF相关的逐次计算。

实际上,要实施DED,需要VDF ASIC。 幸运的是,以太坊基金会和协议实验室致力于构建它们,最近获得了GlobalFoundries构建的芯片的第一个测试样本。 这些VDF评估机应该可以进行非常高速的逐次计算。 这些VDF ASIC也适用于时间锁定谜题和DED。

VDF还需要生成SNARKs。 虽然这可以使用GPU来完成,但理想情况下以太网基金会也希望为SNARK生产相关的ASIC。

一般来说,不再信任委员会,所以通常优先考虑安全前提。 然而,要求专用硬件是不期望的,并且必要的延迟可能增加系统延迟。 有趣的是,可以结合TED DED的优点……

5.见证加密 / 解密(WED)

WED很强大,但别高兴得太早,不会马上来的。 这是一个非常奇特的东西,还需要好几年才能实现。 但是,那很酷,有助于理解,所以简单介绍一下。

WED允许任何证人强制解密密文。 例如,有一个规则“只有在以太体完成包含加密有效载荷的块后才能解密”,只有在证明了该规则后才能解密。 可以想象,基本上想实现的复杂语句需要SNARK。

WED实际上是TED或DED的摘要。 也可以制造两者的混合体。 例如,指定证人可以证明:

幸福结果:门槛委员会已经签署了解密,或者

*初步方案:已过所需时间。 为了延迟解码而返回

这为防止阈值委员会作出回应提供了准备。 这样还可以使m/n阈值假设在参数化时更加保守。 这意味着,可以要求各委员会成员或大多数成员签字。

幸福的结果:最佳的用户体验,全体委员会即时确认

*备用方案:延迟和UX暂时受到影响,但活性得到保留

实际上,WED可能会对你想要的任何声明验证SNARK。 例如:

*TED :有SNARK证明“我有n个签名中的m个签名”,可以强制解密。

* ded :可以使用vdf依次计算。 (这非常昂贵。 然后你计算结束的时候,你有简单的证书。 然后拿着那个短证书,把它包装成SNARK,把它再短一点,输入它强制解密。

同态性

这里的各加密方式(阈值、延迟、证言),你可以具有同型性。 也就是说,可以制作阈值FHE、延迟FHE、证实FHE方案,实现密文的任意操作。

输入文件和可信硬件(例如SGX )解决方案也可以模拟相同的功能——来操作专用数据。 在这两种情况下,都是因为受信任的第三方或硬件可以访问和操作明文本身。 但是,理想情况下,我们希望消除这些可靠假设,只依赖于加强密码学。

请想象一个例子:

m1=事务处理1

m2=事务2

*f(x )=构建块

然后,所有五种解决方案都可以复制以下功能:

当考虑如何隐藏事务元数据并使用加密输入构建最佳块时,请注意此功能。 理论上,这里的五个选择中的每一个都可以用于需要“同构”的解决方案,包括:

元数据

元数据是提供有关其他数据的信息的数据,但不提供该数据的内容(如消息文本或图像本身)。 为了我们的目的,交易元数据可以包含源的IP地址、随机数、Gas支付等。

理想情况下,我想隐藏尽可能多的元数据。 否则,可能会泄露信息,让外人推测你的交易(可能提供足够的信息来尝试抢劫、审查等)。 但是,需要元数据来验证交易是否有效、是否支付了必要的费用、是否是垃圾邮件等。

让我们看一下阻止各种元数据的几种解决方案。

1. IP 地址 - Tor

非常简单的——人可以使用Tor这样的服务器私下播放,屏蔽IP地址。

2.签名 -SNARK

需要知道在p2p级别加密交易是有效的,并且具有特别有效的签名。 可以使用SNARK证明签名有效。 这伴随着各项加密交易。 SNARK有三个重要部分。

用户想证明自己的交易密文有效。 那个对应交易,那个签名是有效的。 必须有与帐户相关联的公钥才能证明签名有效。

*查找以太网状态路由(公共)。

*提供与此状态根对应的发件人的公钥Merkle证书(专用)

*要验证签名,必须根据状态根目录验证发件人的公钥Merkle证书。 在SNARK上证明你的发件人的公钥Merkle证明有效,你的签名有效。

3. Gas 支付——SNARK

必须证明加密交易的发送方有足够的ETH来支付这笔费用。 我们可以再次使用SNARK。

这是一个类似的过程,但现在它向状态路由提供了证明发件人余额的Merkle路径,而不是发件人的公钥。 你验证Merkle路径,验证余额是否足以支付所需的Gas。

仅限于执行序列化事务处理、检查余额、检查签名等基本操作所需的最低Gas。 可以规定发件人必须始终支付这个最低金额。

但是,执行时间还需要实际交易本身的Gas limit。 这个Gas limit也可以加密。 所以,在实际执行交易本身时,请检查提交人是否有足够的余额支付当时交易的所有Gas :

*如果适用:执行交易,最后提交退款

*否:如果中止交易,发货方只需支付21000 Gas

4. 发送者和随机数 - SNARK

随机数等于从一个地址发送的交易数(或通过一个帐户创建的合同数)。 每次从自己的地址开始交易时,用户的随机数都会增加1。

我们今天有随机数的原因之一是,用户无法通过大量交易向mempool(dos攻击)发送垃圾邮件,提高他们的交易被执行的可能性。 节点只显示具有该随机数的一个事务,并丢弃其他事务。

对于加密的交易,SNARK证明随机数是以前的随机数1。 但是,如果节点无法识别出许多加密事务具有相同的随机数,则上述DoS攻击可能会产生负面影响。

为了保留这种反DoS属性,我想添加“回放标签”。 交易有独特的标记,所以不能向一个地址发送大量的交易垃圾。 要创建此标签,简单地使用散列(随机数、私钥)。 由于随机数和私钥是固定的,因此如果用户尝试使用同一随机数和私钥发送这两个随机数和私钥,则不同的事务将具有相同的重播标签。

最后,你可能想保持一定程度的灵活性。 假设Gas价格发生了变动,我们有理由想以更高的价格重播交易。 为了缓解这种情况,可以使用散列(随机数、私钥、slot )。 现在,您可以按slot调整交易。 每个slot只能向每个地址发送一个交易。

5.数据大小 - 同态

加密数据大小为n的明文时,将创建大小为n的密文。 即使是这个大小,概率上也足以计算某种交易。 要缓解此问题,请使用“填充”。 在——加密之前将0添加到明文,并将位数扩展为2的下一个幂。 例如,在5位密文中添加3个0。

在以下示例中:

*白色=填充0

*其他颜色=实际交易数据

在构建块时,可以连接这些密文,但这存在两个问题:

不完整的打包——添加0意味着必须为额外的数据可用性付费

*不完全隐私-可能2的幂提供足够的信息。 由于交易规模分布不明确,根据规模的不同,概率上有可能明确足够的信息。

更好的解决方案包括“剪切”填充。

*将各事务输入最大大小(在此为16 ),进行准同型加密

将函数应用于密文以有效打包明文,并删除不必要的填充

现在你收到了最好的打包。

通过填充“最大”大小,实际上可以将最大值设置为实际块大小限制已转换的值。 也就是说,30mm Gas变换为约x kB时)。 这意味着将每个事务填充到x kB的大小中。 或者,如果99.9%的交易通常在y kB范围内,则可以设置更小更实用的y kB大小。

同样,您可以使用受信任的硬件模拟此“剪辑”,而不是上述FHE。 例如,您可以运行SGX,将加密的交易接收到可靠的飞地。 在飞地,可以通过清除数据操作,去除不需要的填充,将块紧密包装。 然后,数据被加密并发回,之后是强制解密方法(阈值、延迟、证言)。

请注意,在所有情况下,输出都必须是恒定的大小,因此可能会留下少量的填充。

选择事务包:相同状态和不相交状态的访问列表

假设我们解决了上述所有问题,区块生产者可以根据大小将所有内容最佳打包在一个区块中。 但是,还有一个问题。 ——区块生产者在经济方面能最佳包装所有东西吗? 我们想在不放弃价值的前提下,将区块中心化构建。 否则,就不能与中心化实体竞争。

解决方案1 - FHE EVM

直接回答:完全通过FHE运行EVM。 这样可以将最优区块中心化构建,为区块生产者创造最大价值。 他们选择价值最大化的交易并进行排名。

不幸的是,这不是一件容易的事。 FHE回路的最大成本是其“深度”,即最长路径的门数。 特别是那个乘法的深度非常重要。 例如,前面讨论的删除填充的事务“修剪”是一个相当“浅”的电路。 也就是说,非常简单。 由于硬件加速,这些用例在2-3年内可能是可计算的。

但是,使用FHE运行整个EVM需要非常深且复杂的电路。 我们终于开始在zkEVM电路方面取得了一些有意义的进展,但这比运行标准EVM的计算密度要高几个数量级。

请注意,也可以使用受信任的硬件模拟此功能。 例如,SUAVE的SGX就是这样做的。

解决方案2 -状态访问列表

或者,可以更有限地使用FHE和访问列表。 这比运行完整的FHE EVM更容易实现——,是一个更浅的电路。 通过此设置,事务包可以包含加密的状态访问列表及其优惠。 这将准确地指定他们的包将访问状态的哪个部分。

目前,块生产者的同态电路只需选择具有不相交状态访问列表的事务处理包的最高报价即可。

请注意,这不是严格意义上的最佳。 例如,一个块中的第二高出价( T 2 )可能与最高出价( T 1 )完全相同。 在此访问列表示例中,区块生产者将放弃第二次交易。 但是,T 1和T 2都可能有效。 在这种情况下,FHE EVM (或今天的中心化模块生产)将获得更多的价值。

虽然不完美,但从我们今天的情况来看,这条捷径应该足够接近最佳。 大多数MEV使用不相交的访问列表,因为上述冲突的示例非常罕见。

6. 时间戳 - 同态

通过允许验证者进行“虚拟”交易,还可以试图隐藏交易的遗漏,因此内存池总是已满。 验证者还需要SNARK来证明自己是被授权创建这些虚拟交易的验证者。 在“真正”交易出现峰值时,验证者会广播较少的虚拟交易。 当实际交易减少时,验证器将发布更多的虚拟交易。

假设所有都使用FHE加密,则可以检测添加到相应交易中的“虚拟标志”。 在包装实际区块时,可以忽略这些事务处理。

状态差异 - FHE EVM

背景简介: ZK Rollup的一个优点是不需要在链中公开完整的交易数据。 他们发表状态更新之间的“状态差异”就足够了。 相反,Optimistic Rollups必须向链公开完整的数据,以防止欺诈证书仲裁。 由于这些数据要求较低,ZK Rollup在数据可用性层消耗的资源较少,因此可以节约成本。

将此带入我们的对话——在理想情况下,如果加密内存池,我不想失去这个好处。 希望获取加密的内存池,并保持ZK Rollup仅公开状态差异的能力。 答案是这里——FHE zkEVM。 很酷,但可能还得等很久。

一个缺点是,单独公开状态差异可能会降低Rollup完整节点的响应速度。 例如,纯分支选择规则Rollup允许完整节点在数据可用性层完成并确保有效性时立即完成Rollup视图。 如果只公开状态差异而不是完整的事务数据,则即使是完整的节点,也必须提交ZK证书以查看他们对Rollup的视图。 在当前情况下,——这些证书需要很长时间才能生成,但可扩展的数据可用性层有望很快变得非常便宜。

结论

加密内存池是一个充满吸引力和前景的设计空间,但仍存在一些实际挑战。 例如,可能只是把一些问题移动到堆栈的其他地方。 钱包可以在源头审查你,以防止交易的加密/路由。 他们可以提交有效载荷,在你的交易之前/之后执行(或出售权利)。 一个可能的答案是用户不依赖于服务提供商在本地创建交易。

重要的是没有灵丹妙药,但如果设计得当,它们可能是解决方案的重要组成部分,可以通过多种功能和信任假设来改善当前的状况。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发