本文 Hash(SHA 1):b366289db9b21c3e9b6668c274e4a179be57a463
编号:链源 Security Knowledge No.008
在过去几年中,区块链经济经历了指数级的增长,尤其是 2022 年 DeFi 生态系统的锁定价值达到峰值 3000 亿美元。Web3发展到现在也已经出现了形形色色的攻击方法和逻辑安全漏洞,从 2017 年开始,最大可提取值(MEV)就常年占据 ETH 链损失金额的攻击方法前列。链源安全团队对 MEV 的基本原理和防护手法做了相关的分析和梳理,希望能够帮助读者提高保护自身资产安全的能力。
MEV 基本原理
MEV,全称 Maximum Extractable Value(最大可提取价值),在以太坊的 POW 时代又被称为 Miner Extractable Value(矿工可提取价值),在大量的区块链转为 POS 之后更名为最大可提取价值,因为区块生产者不再是唯一决定交易排序的角色(目前有这两种权限的角色是矿工和验证者,之前只有矿工)。
MEV 是指验证者或排序器等参与者,通过在他们生产的区块内,对交易进行选择性操作(包含交易、排序交易、重排序交易)所获得的利润的度量。
·验证者:负责验证交易和生产区块的参与者;
·排序器:负责决定交易顺序的参与者;
·包含交易:选择哪些交易会被包含在区块中;
·排除交易:选择哪些交易不会被包含在区块中;
·重排序交易:决定交易在区块中的顺序;
当前使用 MEV 的黑客主要针对的是那些获得了空投快照资格、质押代币即将解除锁定的钱包地址,黑客发起这类攻击的前提是需要拿到钱包私钥,然后开启动态 Gas 监控,等待用户的代币或者 Gas 费到账后在同一区块或者相邻区块内发送一笔提取的交易,也就是抢跑交易,这类作为监控的机器人我们称之为 Sweeper 机器人。
防护手法(以 ETH 为例)
首先这类防护有两种思路,由于是要和黑客竞争抢跑的速度,所以说第一种就是提高 Gas price 和交易排序的 Nonce。
因为以太坊的交易手续费=Gas (数量) * Gas Price (单价),每个以太坊区块的 Gas Limit 容量是固定的,那么谁的 Gas Price 更高,谁的交易就优先被打包进区块确认,另外就是以太坊中的 nonce 代表着交易次数,这个概念要结合以太坊本身是基于账户的,所以每一个不同的账户维护着它们各自的 nonce,而以太坊每个账户的每笔交易都会有一个唯一的 nonce,这既可以防止重放攻击(同一个交易被多次处理),又可以让 EVM 虚拟机来明确交易的顺序(比如说某笔交易的 nonce 是 5 ,那么在这笔交易被处理之前,账户中 nonce 为 4 的交易必须已被处理)
第二种思路就是连接确认速度更快,交易混淆度更高的节点
而更换连接节点的话在这里首先推荐的是 TAICHI 网络节点,这个网络是基于 ETH、Solana 等区块链的隐私安全解决方案,它通过引入一系列中继节点来实现交易的混淆和隐私保护,这些节点负责接收用户的交易请求,并将之与其他交易混合,以隐藏交易的来源和目的。
·中继节点:这些节点是 TAICHI 网络的核心,它们负责接收、混合和转发交易;
·交易混合:通过将多个交易混合在一起,中继节点能够有效地隐藏单个交易的来源和目的;
·隐私保护:这种方法能够有效地防止链上数据分析和跟踪,保护用户的隐私;
Sweeper 的工作方式就是监控公共内存池中的交易记录来实现抢先交易,但是 TAICHI 节点允许我们将签名的交易直接提交给矿工,而无需通过公共内存池进行广播,这意味着 Sweeper 很大概率是监控不到的,也就有了抢跑 Sweeper 的可能性(公共内存池指的是那些已经广播但尚未被打包进区块的交易的集合)。
第二个推荐的节点就是 FlashProtect,FlashProtect 是 FlashBots 组织提供的以太坊系统中 MEV 问题的解决方案,它的工作原理是将用户的交易打包后通过 Flashbots 直接发送给矿工,而不是通过公共内存池,来防止恶意矿工和机器人在公共内存池中发现和利用这些交易来使用 MEV 提取资金,它的缺点是交易速度很慢,因为使用的是 Flashbots 内存池,其中的验证者比公共内存池少得多。
结语
总的来说各类防护手法也是为了维护去中心化交易的排序过程,确保智能合约以公平的方式处理交易,但最根本的解决方法一定是要在矿工和验证者角度来作出调整。
链源科技是一家专注于区块链安全的公司。我们的核心工作包括区块链安全研究、链上数据分析,以及资产和合约漏洞救援,已成功为个人和机构追回多起被盗数字资产。同时,我们致力于为行业机构提供项目安全分析报告、链上溯源和技术咨询/支撑服务。
感谢各位的阅读,我们会持续专注和分享区块链安全内容。