关于Inedible合约的研究报告

上个月出现了两枚防夹子(Sandwich attack 三明治攻击,Front-running 操纵先知攻击/前置交易攻击)的代码,前面已做了研究,今天和大家分享下它们相应的设计。

三明治攻击(Sandwich attack)的流程和原理如下:

三明治攻击(Sandwich attack)是一种针对去中心化交易所(如Uniswap)的前运算攻击(front-running attack)。攻击者在目标交易之前和之后插入两笔交易,试图从目标交易中获利。因此,在一个区块中,涉及三笔交易:攻击者的第一笔交易、目标交易、攻击者的第二笔交易。

以下是三明治攻击的简化步骤:

  1. 攻击者检测到目标用户即将进行一笔交易,例如购买代币A。

  2. 攻击者在目标用户的交易之前发送一笔高手续费的交易,购买相同数量的代币A,从而提高代币A的价格。

  3. 目标用户的交易被执行,此时代币A的价格已经上涨。

  4. 攻击者紧接着发送另一笔高手续费的交易,出售之前购买的代币A,从而获得利润并将代币A的价格降低到接近原来的水平。

在这种情况下,攻击者利用了区块链交易的可预测性和公开性。总的来说,三明治攻击涉及到一个区块中的三笔交易,分别是攻击者的前置交易、目标交易以及攻击者的后续交易。

首先我们先看下 Inedible Coin 的设计。初步先了解下该项目的创始人以及项目简介:

/**
@title Inedible Coin
@author Robert M.C. Forster(罗伯特·M·C·福斯特), Chiranjibi Poudyal(奇兰吉比·普迪亚尔)

Trading coin designed to avoid sandwich attacks. It should still allow classic arbitrage and only rarely block innocent users from making their trades.
It allows 2 swaps on each registered dex per block. So 40 dex swaps can occur per block if there are 20 registered dexes, but no more than 2 on each.
Added in votes capability to potentially change admin to a DAO.

交易币旨在避免“三明治攻击”。它仍应允许经典套利,且只有在极少数情况下会阻止无辜用
户进行交易。每个注册的去中心化交易所每个区块可以进行2次交换。因此,如果有20个注册
的去中心化交易所,则每个区块可以发生40次交换,但每个交易所每次最多只能进行2次交
换。还添加了投票功能,以潜在地将管理员更改为DAO。
**/ 

作者 Robert M.C. Forster(罗伯特·M·C·福斯特) 的项目介绍推文:

https://twitter.com/RobertMCForster/status/1666853029679894528

post image
post image
post image
post image
post image
post image
post image
post image
post image
post image
post image
post image

如下 cryptodmr.eth 开始阅读代码并添加了对应功能实现的注释:

cryptodmr.eth 阅读代码并添加了对应功能实现的注释
cryptodmr.eth 阅读代码并添加了对应功能实现的注释

Inedible实现逻辑如下:

首先它 将 V2 和 V3 的交易对地址放入合约,并进行和DEX关联的交易的区块限制的处理。如下涉及两个分支:

​ 1)如果DEX的区块时间戳小于当前区块的时间戳,就将这个DEX的区块时间戳设为当前区块的时间戳,并且允许本次的交易。

​ 2)如果DEX的区块时间戳 == 当前区块的时间戳,就将这个DEX的区块时间戳设为当前区块的时间戳+1,并且拒绝本次的交易。

以太坊 10-13 秒左右出一个新的区块,这如果在高峰期间,一个区块只有一笔交易的话,可能体验就很差了!并且让很多人误以为是貔貅(无法卖出)。

最后结论: 可以看出,Inedible的实现还相当初步,并且当交易体验很不好 。创始人发布项目太过于仓促,其实完全可以让它完美的,即将措施改为仅针对 bot处理,而并不是所有交易者即可。

关于 NEON 的设计,我将在下一篇的 THREAD 发出来。敬请期待!