安全最大化:如何应对DeFi中的MEV攻击

Odaily星球日报发布于2024-07-18更新于2024-07-18

文章摘要

各类防护手法也是为了维护去中心化交易的排序过程,确保智能合约以公平的方式处理交易,但最根本的解决方法一定是要在矿工和验证者角度来作出调整。

本文 Hash(SHA 1):b366289db9b21c3e9b6668c274e4a179be57a463

编号:链源 Security Knowledge No.008 

安全最大化:如何应对DeFi中的MEV攻击

在过去几年中,区块链经济经历了指数级的增长,尤其是 2022 年 DeFi 生态系统的锁定价值达到峰值 3000 亿美元。Web3发展到现在也已经出现了形形色色的攻击方法和逻辑安全漏洞,从 2017 年开始,最大可提取值(MEV)就常年占据 ETH 链损失金额的攻击方法前列。链源安全团队对 MEV 的基本原理和防护手法做了相关的分析和梳理,希望能够帮助读者提高保护自身资产安全的能力。

MEV 基本原理

安全最大化:如何应对DeFi中的MEV攻击

MEV,全称 Maximum Extractable Value(最大可提取价值),在以太坊的 POW 时代又被称为 Miner Extractable Value(矿工可提取价值),在大量的区块链转为 POS 之后更名为最大可提取价值,因为区块生产者不再是唯一决定交易排序的角色(目前有这两种权限的角色是矿工和验证者,之前只有矿工)。

MEV 是指验证者或排序器等参与者,通过在他们生产的区块内,对交易进行选择性操作(包含交易、排序交易、重排序交易)所获得的利润的度量。

·验证者:负责验证交易和生产区块的参与者;

·排序器:负责决定交易顺序的参与者;

·包含交易:选择哪些交易会被包含在区块中;

·排除交易:选择哪些交易不会被包含在区块中;

·重排序交易:决定交易在区块中的顺序;

当前使用 MEV 的黑客主要针对的是那些获得了空投快照资格、质押代币即将解除锁定的钱包地址,黑客发起这类攻击的前提是需要拿到钱包私钥,然后开启动态 Gas 监控,等待用户的代币或者 Gas 费到账后在同一区块或者相邻区块内发送一笔提取的交易,也就是抢跑交易,这类作为监控的机器人我们称之为 Sweeper 机器人。    

安全最大化:如何应对DeFi中的MEV攻击

防护手法(以 ETH 为例)

首先这类防护有两种思路,由于是要和黑客竞争抢跑的速度,所以说第一种就是提高 Gas price 和交易排序的 Nonce。

因为以太坊的交易手续费=Gas (数量) * Gas Price (单价),每个以太坊区块的 Gas Limit 容量是固定的,那么谁的 Gas Price 更高,谁的交易就优先被打包进区块确认,另外就是以太坊中的 nonce 代表着交易次数,这个概念要结合以太坊本身是基于账户的,所以每一个不同的账户维护着它们各自的 nonce,而以太坊每个账户的每笔交易都会有一个唯一的 nonce,这既可以防止重放攻击(同一个交易被多次处理),又可以让 EVM 虚拟机来明确交易的顺序(比如说某笔交易的 nonce 是 5 ,那么在这笔交易被处理之前,账户中 nonce 为 4 的交易必须已被处理)

第二种思路就是连接确认速度更快,交易混淆度更高的节点    

安全最大化:如何应对DeFi中的MEV攻击

而更换连接节点的话在这里首先推荐的是 TAICHI 网络节点,这个网络是基于 ETH、Solana 等区块链的隐私安全解决方案,它通过引入一系列中继节点来实现交易的混淆和隐私保护,这些节点负责接收用户的交易请求,并将之与其他交易混合,以隐藏交易的来源和目的。

·中继节点:这些节点是 TAICHI 网络的核心,它们负责接收、混合和转发交易;

·交易混合:通过将多个交易混合在一起,中继节点能够有效地隐藏单个交易的来源和目的;

·隐私保护:这种方法能够有效地防止链上数据分析和跟踪,保护用户的隐私;

Sweeper 的工作方式就是监控公共内存池中的交易记录来实现抢先交易,但是 TAICHI 节点允许我们将签名的交易直接提交给矿工,而无需通过公共内存池进行广播,这意味着 Sweeper 很大概率是监控不到的,也就有了抢跑 Sweeper 的可能性(公共内存池指的是那些已经广播但尚未被打包进区块的交易的集合)。    

安全最大化:如何应对DeFi中的MEV攻击

第二个推荐的节点就是 FlashProtect,FlashProtect 是 FlashBots 组织提供的以太坊系统中 MEV 问题的解决方案,它的工作原理是将用户的交易打包后通过 Flashbots 直接发送给矿工,而不是通过公共内存池,来防止恶意矿工和机器人在公共内存池中发现和利用这些交易来使用 MEV 提取资金,它的缺点是交易速度很慢,因为使用的是 Flashbots 内存池,其中的验证者比公共内存池少得多。

安全最大化:如何应对DeFi中的MEV攻击

结语

总的来说各类防护手法也是为了维护去中心化交易的排序过程,确保智能合约以公平的方式处理交易,但最根本的解决方法一定是要在矿工和验证者角度来作出调整。

链源科技是一家专注于区块链安全的公司。我们的核心工作包括区块链安全研究、链上数据分析,以及资产和合约漏洞救援,已成功为个人和机构追回多起被盗数字资产。同时,我们致力于为行业机构提供项目安全分析报告、链上溯源和技术咨询/支撑服务。    

感谢各位的阅读,我们会持续专注和分享区块链安全内容。  

你可能也喜欢

大神Karpathy用Claude的方式,原来是这样的?

AI大神安德烈·卡帕西(Andrej Karpathy)在加入Anthropic后,开源活动减少。近期,一份据称是他本人使用的`CLAUDE.md`文件在社区流传,旨在指导Claude AI进行更高效的编程协作。该文件强调了一系列核心原则,并非简单建议而是必须遵守的规则,以规避大语言模型写代码时的常见错误。 核心原则包括: 1. **写之前先读**:在编写新代码前,务必认真阅读现有代码库,理解项目风格、既有模式和工具,确保新代码与项目保持一致。 2. **写代码之前先想清楚**:明确任务需求、澄清假设、说明方案取舍,避免基于模糊理解生成错误代码。 3. **保持简单**:抵制过度设计,避免过早抽象、臆想式错误处理和不必要的配置,编写能解决当前问题的最少代码。 4. **外科手术式修改**:修改代码时力求改动范围最小,严格匹配项目现有风格,只清理自己引入的问题,避免无谓的重构和格式化。 5. **验证**:重视测试,修复bug前先写测试复现,确保改动不破坏现有功能。 6. **目标驱动执行**:将模糊任务转化为可验证的具体步骤,并在执行前说明计划。 7. **调试**:遇到问题先深入调查、复现,理解根因,避免盲目添加临时解决方案。 8. **谨慎管理依赖**:添加新依赖前,优先考虑使用现有工具或标准库,并评估其维护状态和成本。 9. **有效沟通**:清晰说明改动内容和原因,主动指出潜在隐患和不确定之处。 文章指出,尽管这份文件的真实性存疑,但其内容高度契合卡帕西本人关于AI编程助手的公开观点。社区已据此提炼出原则并制作了模板,有测试表明能显著降低Claude的代码错误率。这些准则被认为是提升AI辅助编程效率、保证代码质量的关键。

marsbit9分钟前

大神Karpathy用Claude的方式,原来是这样的?

marsbit9分钟前

交易

现货
活动图片