以太坊的黑暗森林

以太坊的黑暗森林 - 矿工利用其打包特全,如何毫无风险的获利。

之前看过几篇关于以太坊黑暗森林的文章,对其中的黑暗、扭曲深感震撼。于是花了几天时间写了自己的机器人,深入体验了其间的险恶。 ## 概述 什么是以太坊的黑暗森林?它是指以太坊上鲜为人知、却广泛存在的一种不公平的、暗黑的机制 -- **Mempool 的打包机制的特权使用**。一般而言,矿工按照交易给予的矿工费(GasPrice)高低来进行排序打包。这些交易的排序先后对于单个转账交易并无影响,然后涉及到 DeFi 交易,情况就不一样了。 在 DeFi 中,交易被打包的顺序深刻影响着其经济利益。例如,在 Uniswap 中,同样两个针对某交易对的买单,先被执行的交易将获得更多代币。如果你总是在一笔买单前买入同样的代币,然后又紧随其后卖出,则将“毫无风险”地获利。这也被称为**提前交易**(Front-Running)。 ## 细节 为什么提前交易可以获利?以 Uniswap 为例,其价格模型是 x * y = 常量。例如初始 x = 100,y = 100,那么常量 = 10000。那么当: 1. 用户A 用 10 个 x 买入 y。此时 x = 110,y = 90.9,用户A获得 9.1 y。(x * y 依然等于常量 10000) 2. 用户B 用 10 个 x 买入 y。此时 x = 120,y = 83.33,用户B获得 7.57 y。(x * y 依然等于常量 10000) 3. 用户A 卖出所有y。此时 x = 108.18,y = 92.43,用户A获得 11.82 x。(x * y 依然等于常量 10000) 以上例子可以看出,**用户A通过提前交易,发出两个交易,一前一后包裹用户B交易,则可以“毫无风险”地获利**。这里打上双引号是因为需要假设没有其他同样策略的用户A出现。在真实的市场环境中,用户B是一个真实的用户,而用户A则是一个机器人。 以 Uniswap 为例,当前市场上充斥着大量的提前交易机器人。这些机器人时刻监控着出现在以太坊 mempool 中的用户交易。如果用户是大额买入某币,那么它们立刻发出两笔交易,一笔是抢在用户之前(比用户交易 GasPrice 更高)买入该币,另一笔在用户之后(可以采用和用户 GasPrice 稍低或相同)卖出该币。 这种提前交易机器人,不同于两个 DEX 间进行搬砖套利的机器人,它们是伤害用户利益的。在上面的列子中,用户B本可以获得 9.1 y,因为机器人A的存在,却只获得了 7.57 y,从而白白损失了 1.53 y。 ## 例子 这种机器人就如同站在公路上,光天化日进行打劫的强盗。下面我们来看一个例子: 用户在区块 11331736 上买入 100 ETH 的 YFL(用户 GasPrice 700GWei): ![img](https://img.learnblockchain.cn/pics/20201201093620) https://cn.etherscan.com/tx/0x4b7e5c9e25d0e4b0a0f87b68bde10b7b988bc6d7f83f7dd1fa1dd1b044a931c8 在它前后出现了好几对打劫该用户的机器人,举出其中具有代表性的两对来讲解。机器人A以超高的矿工费(23,835 Gwei)抢在用户(及其它机器人)之前买入 95 ETH: ![img](https://img.learnblockchain.cn/pics/20201201093632) https://cn.etherscan.com/tx/0x97ab6f31785068a84c47a39e55b2ee391ee6cac2f4c82dbb0ab34f0c5b71c5b9 随后,机器人A以和用户同样的 GasPrice (700Gwei)在用户交易后卖出,获得 99.24 ETH,去除矿工费,该笔打劫,让机器人A获利 **2 ETH** 以上: ![img](https://img.learnblockchain.cn/pics/20201201093639) https://cn.etherscan.com/tx/0x9e5d8a1a179867a4dbca23bd5c7fa6c8db6dd0817165ec3c3474493d69bf6a5c 在该用户交易身后,还出现了 DEX 间搬砖套利的机器人B。它从 Balancer 中买入 YFL,并且在 Uniswap 中卖出 YFL,获利 1 ETH 左右: ![img](https://img.learnblockchain.cn/pics/20201201093644) https://cn.etherscan.com/tx/0x81528f2b5d0cbb217c73e1f60bbd8edda6536a8efc85cd0a9466496d4aa999c0 机器人B虽然获利,但并未对用户造成利益损失。但是机器人A则不然,机器人A所花费的巨额矿工费,以及其盈利部分,共计 4.2 ETH,都将由用户买单。该例子中用户,在什么都没有干的情况下,已经损失 4.2 ETH! 这个例子并非个例,而是几乎每个以太坊区块都能找的、普遍存在的例子。**当前,以太坊的 DeFi 用户正在遭受严重的利益损害,而绝大部分人浑然不知!** ## 深入 从技术上实现机器人A或B均不难。那么以太坊岂不成为一个强盗肆意打劫之地?有没有什么可以制约机器人的手段? 答案是:**有,****其它机器人**。机器人之间也有不同的策略,也分不同的级别。如果你去认真分析现在的以太坊交易,不但普通用户遭受机器人的打劫,较弱的机器人也会受到较强的机器人的打劫。 另外一个制约机器人的点是用户交易失败。所谓交易失败,是指用户的交易执行时,因为超过用户设置的滑点(slippage),而导致交易无法完成的情况。在上面的例子中,如果用户交易失败,那么机器人将无利可图,不但如此,它们还要损失掉矿工费,和交易手续费。 **而非常讽刺是**,让机器人最为害怕的用户交易失败,却是由机器人自己造成的(过多的机器人抢在用户前买入某币,导致用户买入时价格相差过大)。当你在浏览器中看到某个交易有这样的报错,它大多是因为机器人的打劫: ![img](https://img.learnblockchain.cn/pics/20201201093649) https://cn.etherscan.com/tx/0xbc236137de0d6a9f82c04039b1c534b9d76789a8a4bda0f3546c87f9e509f016 普通用户害怕机器人,小机器人害怕大机器人。然而大机器人并不是终结。这里食物链的顶端不是别人,正是大家熟悉的:**矿工**。 ## 矿工 交易的排序决定了利润的分配,而对交易排序有决定权的则是**矿工**。矿工加入到这场收割的游戏彻底改变机器人的格局。 在遵循 GasPrice 高低排序的规则下,矿工可以对同样 GasPrice 的交易任意调配顺序。矿工也可以在不广播交易的情况下,直接将某个交易打包进区块。在这个游戏中,普通用户是闭眼玩家,套利机器人是睁眼玩家,而矿工则是上帝视角。 拥有上帝视角的矿工一旦加入游戏,其结果可想而知。矿工的机器人将驱逐非矿工机器人。而这些矿工将成为以太坊上最大的黑暗势力,利用它们的权力,对用户进行肆意地收割! ## 解决 以太坊的打包机制是问题的根源,只要有顺序关系的应用都将都将遭受到这类攻击。要想彻底解决这类问题,必须从以太坊打包机制、交易隐私保护方面下手,从目前的发展来看,短期而言,并非易事。 另外一种方案是将这类应用迁移至 **Layer2**。很多 Layer2 的方案拥有更快的打包速度,可以有效地降低机器人劫持的可能性。 ## 结语 公开的抢劫、利己的排序、作恶的矿工,正在让以太坊沦为一场权力的游戏。这跟区块链,**公平、开放、平等**的理念已经背道而驰! 未来以太坊的发展,如果不能有效遏制矿工的权力,监督矿工的行为,那么它是否也会成为腐朽的产物,被人们所抛弃?水亦载舟,水亦覆舟。如果以太坊的 DeFi 不能成为一个公平的游戏,它又能走多远呢! **延展阅读:** 《Ethereum is a Dark Forest》 https://medium.com/@danrobinson/ethereum-is-a-dark-forest-ecc5f0505dff 《Escaping the Dark Forest》 https://samczsun.com/escaping-the-dark-forest/ **特别感谢:** 这里特别感谢同窗好友**阿柳**,在过去的一周里,我们写了一套完整的机器人,加入到战斗,得到了一些详尽的数据和经验。我们期望能找到一些可行方案,加入到 Ownbit 钱包中,以保护用户的利益。 **存币就用最安全的多签、冷钱包:Ownbit** 发文发表于:谈谈区块链 , 链接:https://mp.weixin.qq.com/s/S9InBbSXiQKZz6WgKm59KQ

之前看过几篇关于以太坊黑暗森林的文章,对其中的黑暗、扭曲深感震撼。于是花了几天时间写了自己的机器人,深入体验了其间的险恶。

概述

什么是以太坊的黑暗森林?它是指以太坊上鲜为人知、却广泛存在的一种不公平的、暗黑的机制 -- Mempool 的打包机制的特权使用。一般而言,矿工按照交易给予的矿工费(GasPrice)高低来进行排序打包。这些交易的排序先后对于单个转账交易并无影响,然后涉及到 DeFi 交易,情况就不一样了。

在 DeFi 中,交易被打包的顺序深刻影响着其经济利益。例如,在 Uniswap 中,同样两个针对某交易对的买单,先被执行的交易将获得更多代币。如果你总是在一笔买单前买入同样的代币,然后又紧随其后卖出,则将“毫无风险”地获利。这也被称为提前交易(Front-Running)。

细节

为什么提前交易可以获利?以 Uniswap 为例,其价格模型是 x * y = 常量。例如初始 x = 100,y = 100,那么常量 = 10000。那么当:

  1. 用户A 用 10 个 x 买入 y。此时 x = 110,y = 90.9,用户A获得 9.1 y。(x * y 依然等于常量 10000)
  2. 用户B 用 10 个 x 买入 y。此时 x = 120,y = 83.33,用户B获得 7.57 y。(x * y 依然等于常量 10000)
  3. 用户A 卖出所有y。此时 x = 108.18,y = 92.43,用户A获得 11.82 x。(x * y 依然等于常量 10000)

以上例子可以看出,用户A通过提前交易,发出两个交易,一前一后包裹用户B交易,则可以“毫无风险”地获利。这里打上双引号是因为需要假设没有其他同样策略的用户A出现。在真实的市场环境中,用户B是一个真实的用户,而用户A则是一个机器人。

以 Uniswap 为例,当前市场上充斥着大量的提前交易机器人。这些机器人时刻监控着出现在以太坊 mempool 中的用户交易。如果用户是大额买入某币,那么它们立刻发出两笔交易,一笔是抢在用户之前(比用户交易 GasPrice 更高)买入该币,另一笔在用户之后(可以采用和用户 GasPrice 稍低或相同)卖出该币。

这种提前交易机器人,不同于两个 DEX 间进行搬砖套利的机器人,它们是伤害用户利益的。在上面的列子中,用户B本可以获得 9.1 y,因为机器人A的存在,却只获得了 7.57 y,从而白白损失了 1.53 y。

例子

这种机器人就如同站在公路上,光天化日进行打劫的强盗。下面我们来看一个例子:

用户在区块 11331736 上买入 100 ETH 的 YFL(用户 GasPrice 700GWei):

https://cn.etherscan.com/tx/0x4b7e5c9e25d0e4b0a0f87b68bde10b7b988bc6d7f83f7dd1fa1dd1b044a931c8

在它前后出现了好几对打劫该用户的机器人,举出其中具有代表性的两对来讲解。机器人A以超高的矿工费(23,835 Gwei)抢在用户(及其它机器人)之前买入 95 ETH:

https://cn.etherscan.com/tx/0x97ab6f31785068a84c47a39e55b2ee391ee6cac2f4c82dbb0ab34f0c5b71c5b9

随后,机器人A以和用户同样的 GasPrice (700Gwei)在用户交易后卖出,获得 99.24 ETH,去除矿工费,该笔打劫,让机器人A获利 2 ETH 以上:

https://cn.etherscan.com/tx/0x9e5d8a1a179867a4dbca23bd5c7fa6c8db6dd0817165ec3c3474493d69bf6a5c

在该用户交易身后,还出现了 DEX 间搬砖套利的机器人B。它从 Balancer 中买入 YFL,并且在 Uniswap 中卖出 YFL,获利 1 ETH 左右:

https://cn.etherscan.com/tx/0x81528f2b5d0cbb217c73e1f60bbd8edda6536a8efc85cd0a9466496d4aa999c0

机器人B虽然获利,但并未对用户造成利益损失。但是机器人A则不然,机器人A所花费的巨额矿工费,以及其盈利部分,共计 4.2 ETH,都将由用户买单。该例子中用户,在什么都没有干的情况下,已经损失 4.2 ETH!

这个例子并非个例,而是几乎每个以太坊区块都能找的、普遍存在的例子。当前,以太坊的 DeFi 用户正在遭受严重的利益损害,而绝大部分人浑然不知!

深入

从技术上实现机器人A或B均不难。那么以太坊岂不成为一个强盗肆意打劫之地?有没有什么可以制约机器人的手段?

答案是:有,**其它机器人**。机器人之间也有不同的策略,也分不同的级别。如果你去认真分析现在的以太坊交易,不但普通用户遭受机器人的打劫,较弱的机器人也会受到较强的机器人的打劫。

另外一个制约机器人的点是用户交易失败。所谓交易失败,是指用户的交易执行时,因为超过用户设置的滑点(slippage),而导致交易无法完成的情况。在上面的例子中,如果用户交易失败,那么机器人将无利可图,不但如此,它们还要损失掉矿工费,和交易手续费。

而非常讽刺是,让机器人最为害怕的用户交易失败,却是由机器人自己造成的(过多的机器人抢在用户前买入某币,导致用户买入时价格相差过大)。当你在浏览器中看到某个交易有这样的报错,它大多是因为机器人的打劫:

https://cn.etherscan.com/tx/0xbc236137de0d6a9f82c04039b1c534b9d76789a8a4bda0f3546c87f9e509f016

普通用户害怕机器人,小机器人害怕大机器人。然而大机器人并不是终结。这里食物链的顶端不是别人,正是大家熟悉的:矿工

矿工

交易的排序决定了利润的分配,而对交易排序有决定权的则是矿工。矿工加入到这场收割的游戏彻底改变机器人的格局。

在遵循 GasPrice 高低排序的规则下,矿工可以对同样 GasPrice 的交易任意调配顺序。矿工也可以在不广播交易的情况下,直接将某个交易打包进区块。在这个游戏中,普通用户是闭眼玩家,套利机器人是睁眼玩家,而矿工则是上帝视角。

拥有上帝视角的矿工一旦加入游戏,其结果可想而知。矿工的机器人将驱逐非矿工机器人。而这些矿工将成为以太坊上最大的黑暗势力,利用它们的权力,对用户进行肆意地收割!

解决

以太坊的打包机制是问题的根源,只要有顺序关系的应用都将都将遭受到这类攻击。要想彻底解决这类问题,必须从以太坊打包机制、交易隐私保护方面下手,从目前的发展来看,短期而言,并非易事。

另外一种方案是将这类应用迁移至 Layer2。很多 Layer2 的方案拥有更快的打包速度,可以有效地降低机器人劫持的可能性。

结语

公开的抢劫、利己的排序、作恶的矿工,正在让以太坊沦为一场权力的游戏。这跟区块链,公平、开放、平等的理念已经背道而驰!

未来以太坊的发展,如果不能有效遏制矿工的权力,监督矿工的行为,那么它是否也会成为腐朽的产物,被人们所抛弃?水亦载舟,水亦覆舟。如果以太坊的 DeFi 不能成为一个公平的游戏,它又能走多远呢!

延展阅读:

《Ethereum is a Dark Forest》

https://medium.com/@danrobinson/ethereum-is-a-dark-forest-ecc5f0505dff

《Escaping the Dark Forest》

https://samczsun.com/escaping-the-dark-forest/

特别感谢:

这里特别感谢同窗好友阿柳,在过去的一周里,我们写了一套完整的机器人,加入到战斗,得到了一些详尽的数据和经验。我们期望能找到一些可行方案,加入到 Ownbit 钱包中,以保护用户的利益。

存币就用最安全的多签、冷钱包:Ownbit

发文发表于:谈谈区块链 , 链接:https://mp.weixin.qq.com/s/S9InBbSXiQKZz6WgKm59KQ

区块链技术网。

  • 发表于 2020-12-01 09:40
  • 阅读 ( 1695 )
  • 学分 ( 6 )
  • 分类:以太坊

评论