本文发布于以太坊爱好者,作者:Kai。
设想一种情形:用户在AMM类型的DEX上做交易,无论设置什么滑点,最终都会在你能接受的最差价格上成交。这可能是个对用户来说很可怕的场景。
TLDR;
目前的MEV-Geth实现机制改变了原本网络中预期的交易排序规则,导致诸多细思极恐的公开公正性问题,并且可能已经对生态中的用户产生利益损害。
以太坊网络交易池原生规则
当前以太坊网络中,如果用户通过原生的方式发送交易,这笔交易会在整个由以太坊全节点组成的点对点网络传播,并且交易的内容完全透明,这意味着任何网络中任一全节点能看到绝大部分交易的交易内容。
由此,以太坊网络中会出现几种破坏交易发送者预期和体验的情况:
1.抢跑,指通过让特定交易在同个区块中排在目标交易前而获利,主要针对清算和套利交易;
2.尾随,指通过让特定交易在同个区块中排在目标交易后而获利,典型的针对对象是信息输入机制交易或大单交易;
3.三明治夹击,上述两种攻击形式的结合,让目标交易恰好夹在两笔特定构造交易中间,从而获利。三明治攻击大大拓宽了可攻击的范围,哪怕是一笔普通的AMMDEX交易,都有可能成为针对对象。攻击者的第一笔构造交易制造更大的交易价格波动,待目标交易执行完之后紧接着执行第二笔构造交易,换回发动攻击的代币完成获益。
以太坊账户抽象提案EIP-4337新增签名聚合,可为rollups降低数据成本:10月3日消息,据以太坊创始人V神(Vitalik Buterin)近日发布的推文,其于2021年9月联合发起的以太坊账户抽象提案EIP-4337近期发布了新版本,添加了包括BLS签名算法的签名聚合。签名聚合功能能够让构建者和批次提交者也能聚合签名(例如BLS、SNARKs),大大减少了链上的数据。
V神表示,ERC-4337为账户抽象提供了真正有价值和必要的东西,可为使用智能合约钱包的用户操作提供“去中心化费用市场”。我们正在慢慢精准实现账户抽象的实际路径,本次发布新增的签名聚合功能可以为rollups降低数据成本,这也将成为采纳ERC-4337的动力之一。
据悉,账户抽象(Account Abstraction)是通过省略以太坊账户体系中不必要细节,来减少复杂性并提高有效性有效地(消除了对EOA的需求和对智能合约钱包的特殊处理)。[2022/10/3 18:38:21]
发起攻击的对象是不确定的。理论上,所有知道了你的交易内容的人都有可能攻击你,dApp项目方、专业攻击者、钱包、矿池,都有可能攻击你。
攻击的难易程度,与网络的共识规则和生态中普遍可用的基础设施有关;例如,如果大家完全遵守当前的交易池规则,仅通过GasPrice竞争来影响出块者对交易的排序,则三明治攻击是比较难发动。
以太坊Sepolia测试网已完成合并:7月6日消息,以太坊 Sepolia 测试网已完成合并(The Merge)。
此前报道,6 月 9 日以太坊 Ropsten 测试网完成合并;6 月 21 日 Sepolia 测试网部署信标链。[2022/7/6 1:56:01]
目前,由于能够直接决定自己所打包区块中的交易的执行顺序,矿工-矿池一直被当成是最有可能发动攻击的参与者,这也是“MEV”这个概念的由来;但实际由于攻击机会具备一定时效性,可能转瞬即逝,攻击者和矿池更多表现为一种分成合作的关系。
这些背景,正是使我对MEV-Geth和其他形式的、矿池直接从事三明治攻击的现象感到不安的原因。
当前的MEV-Geth实现
目前MEV-Geth实现的功能仅为,搜索网络中MEV机会的搜索器,转发原子交易包到注册矿池节点,出块节点允许插队。构建出仅在注册矿池和Relay服务器间的简单网络。
MEV-Geth是一种特殊定制的以太坊节点客户端,运行在矿池方,允许通过该客户端存储Relay分发的MEVBundle,并将这些特殊的交易打包到区块中的队列头部位置。
使用者可使用MEV-Geth广播称为Bundle的交易包;一个Bundle内包含的信息有:一个交易列表,套利计算区块高度,最小最大超时时间。在单个Bundle上链的区块中,发送者会通过coinbase交易,向出块者支付ETH作为分佣。
以太坊开发者提议解决ETH状态规模问题,以促进ETH大规模采用:以太坊开发者Lakshman Sankar表示,以太坊在状态规模(state size)方面已经有了很多发展,但没有引起广泛注意,但为了大规模采用,它是一个需要解决的重大问题。
以太坊的“状态”由处理新事务所需的所有数据组成。每个节点都需要存储这些数据来验证链。随着NFT和DeFi的爆炸式增长,这些数据的规模正以越来越快的速度增长。如果这种情况持续下去,大多数人将无法参与验证网络。促使解决问题的关键见解是ETH不向用户收取存储“租金”费用。现在ETH的存储成本(通过gas)是ETH中的STORE指令。这在经济上是糟糕的。存储节点的成本是无限的(假设ETH永远存在),但用户只需支付一次。目前解决状态问题的办法是:1. 状态到期;2. 弱无状态。[2021/3/19 19:00:17]
在当前的MEV-Geth实现中,每一个区块只能存在一笔Bundle,因此出块者会会选出coinbase支付最大的一笔Bundle上链。
这个当前的实现简化了实施三明治夹击的难度。一方面,攻击者可以显式地声明夹击交易的前后关联;其次,夹击者没有了后顾之忧,即使在与其他夹击者的上链竞争中落败,其交易也只会在MEV-Relay网络中超时无效,不需要付出Gas费用。
Circle向以太坊网络新增发1899万枚USDC:据DAppTotal.com稳定币专题页面数据显示:09月28日04时12分 ,USDC发行方Circle向以太坊网络新增发1笔价值1,899万美元的USDC, 块高度为:10946700,交易哈希值为:0x43587be27be77e25acc3443fa8776631ddab45d494c7a2f1de0ce2dff73c3b5a 。截至目前,Circle在以太坊网络上的ERC20 USDC总发行量已达2,575,324,998枚。[2020/9/28]
根据Flashbots团队的公开声明,他们正在开发允许同一个区块包含多笔Bundle的方案,或许我们很快会看到区块中充满大量零Gas费的三明治夹击。
找到MEV-Geth交易
根据目前的实现,MEV-Geth交易最显著的特点就是前后两笔夹击交易的GasPrice都为0。
打开区块浏览器网站etherchain.org,查看任一区块的交易列表,如果在列表开头出现了三明治夹击,且夹击交易的GasPrice为0,则这很有可能是通过MEV-Geth发起的Bundle。
-12200018高度区块的列表头部-
-某笔被夹击交易全过程-
以太坊联合创始人Joseph Lubin:以太坊从未是证券,不需要监管:以太坊联合创始人Joseph Lubin本周二表示,当他和其他创始人创建以太坊时,他们就担心以太坊会被视为一种证券,因而导致无法出售给未注册投资者。所以我们花了大量的时间与美国和其他国家的律师进行讨论,最终非常欣慰地得出结论:以太坊不是一种证券,也从来都不是一种证券。此前,有报道称美国监管机构CFTC和SEC正在考虑是否将以太坊和其他加密货币作为证券进行监管。[2018/5/2]
网络已全面部署MEV-Geth
当前MEV的情况可以通过对0gasprice并且gasused大于21000交易查询获得,具体见我临时建立的dunedashboard:
从图中可看到,不少矿池都已参与,每天有约超过3500笔MEV相关交易,大约一千多次MEV交易产生。按照平均出块时间在12s来算,每天有7200(60x60x24/12)个区块,即每天有近1/3的区块中存在MEV-Geth交易。还有部分矿池未使用MEV-Geth,套利者还未切换到这种新的竞争模式。
不同环境下的博弈
我们可以借助比较几种交易池运作情形,来了解用户得到了什么,又失去了什么。
公开博弈状态
如果网络回归到原生状态,而且出块者恪守行业自律,所有交易全公开,任何人都能通过建立节点或者通过节点服务发现未被打包的交易;那么,如果想夹击某笔交易,就需要发送两笔交易,并设置gasprice为被攻击交易前后来保证夹击顺序,并且在有竞争的情况下还要发送多份拷贝交易提高成功率,最后在任意交易执行失败时要面临花出矿工费的惩罚。
从用户方来看,大家都处于平等公开的环境下,当看到自己交易被夹击或抢跑时,是有机会有方法加速或取消这笔交易来避免潜在损失的。
而且,最终成型的区块,不仅能显示出交易池竞争的胜者,还能真实地反映交易池竞争的实际情形。
隐私交易服务
此处的“隐私交易”指的是矿池开设专门的通道,由该通道进入矿池交易池的交易不对外广播,但仍根据GasPrice高价优先的形式排序并打包交易。
普通用户使用隐私交易服务时,其交易对外不公开,因此,除非矿池自身违反保密承诺或参与攻击,否则用户不会受到上述攻击。
再从另外一头考虑,如果攻击者通过隐私交易服务攻击公网可见交易,被攻击者无法发现事情即将发生,无法做出应对。但是,三明治夹击仍然受限于交易路由和交易池排序的随机性,无法轻易实施。
而且,当多人竞争同一个获利机会时,只要矿池不透露相互竞争的交易,他们便无法了解竞争对手出价,只能盲出价格进入排序队列,这变相提高攻击成本和难度。
此外,最终成型的区块,仍然能真实地反映出交易池竞争的全部情形,外部可以观测到成功失败及其原因。
若MEV-Geth成为主流
MEV-Geth出现后,套利者抢跑者会将可套利可夹击的交易提交到这个网络中竞价,筛选出上交矿池利益最大的Bundle会放到下一个打包的区块中优先执行,保证被打包交易能达到100%成功率。
在当前,如果你也部署了一个MEV-Geth节点,Bundle内容对你来说是透明的,因此如果有人攻击你,你也能及时响应。
但如果你并不知道什么是MEV-Geth,你的情形与有人动用隐私交易攻击你相同;变得更差的是,攻击者的确定性提升不少,并且攻击过程的竞价也无法得知,因为成型的区块将只暴露那笔胜出的交易,而不会暴露竞争的过程。
Flashbots认为,这会给网络带来一些好处:套利者竞争博弈的过程被移到另外一个网络,可以缓解以太坊P2P网络的负担;只有胜出者占据区块空间,可以缓解区块拥堵。在subreddit/EtherMining上有发布报告列出目前区块中的额外获利情况,但或许长期不一定能赶上矿工费下降带来的总收入减少,需要更多长期数据跟踪研究。
去中心愿景
原本网络共识预期是,以太坊Defi用户和抢跑者处于同一规则下,并且竞争的过程和结果也是透明地暴露在区块中。随着矿池的介入,事情变得更加复杂,隐私交易和MEV-Geth,都让网络底层开始明确介入上层业务。而MEV-Geth似乎用各种好处正当化了对用户的三明治夹击,并且让竞价过程在一个外部无法观测的网络中发生,网络运行过程变得变得不友好也不透明。
我这里有几个问题:
1.矿池为提供算力的矿工获得利益出发,部署目前这个阶段的MEV-Geth去获取更多利益,这可能无可厚非。但这是否符合去中心和网络的公开公正呢?
2.Flashbots之前公开承诺里有提到保护以太坊的开放性去中心化,目前MEV-Geth隐私性和公开拍卖竞争问题未解决之前,部署到当前的网络中是否是合适的时机呢?
3.矿池的排序权引申出来的超级能力,可能在去中心化网络中无法被去除,也就是MEV是个客观存在的事物。但对于MEV-Geth出现让MEV的滥用变得更加便利,甚至成为正当借口去夹击用户交易,这是否造成长期不良影响?
社区中也是有不少关于MEV或MEV-Geth实现的争议,不少声音是担心:
康奈尔教授AriJuels在CoinDesk上发表的《Miners,Front-Running-as-a-ServiceIsTheft》
OffchainLab联合创始人EdFelten发表的《MEVauctionsconsideredharmful》,这篇不是针对这个议题,反对的是拍卖一天排序权的这种方法。Vitalik有一篇对此的回应。
EthererumResearch论坛上网友pmcgoohan发表的《MEVAuctionsWillKillEthereum》
Paramdigm基金合伙人CharlieNoyes发表的《MEVandMe》中也提到“MEVCanHarmUsers,MEVCanHarmEthereum”
如果以太坊想成为支撑整个世界的金融基础平台,那么维持用户资产安全以及交易排序的公平性就非常重要。所有参与方都是按照矿工费竞价规则竞争打包队列位置,执行失败会失去支付的矿工费。矿池在打包过程中完全忽略交易内容,仅以矿工费高低来为交易排序,网络验证人和应用参与方隔离开来,互不干涉影响。
MEV-Geth的全面部署以及矿工对以太坊网络的应用层逐步侵入,让我感觉到有些不对劲,周末两天思考和查阅材料,最后写下了这篇内容,希望能让更多人来思考这个可能会对以太坊影响深远的问题,也感谢这几天帮助校对内容的朋友们,特别感谢阿剑老师不断对阐述逻辑和顺序向我发问让文章内容更加完善与逻辑完备。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。