作为一般用户,可以通过设置较低的交易滑点和较高的Gas费来应对抢先交易。
本文旨在全面解析广泛存在于以太坊区块链上的攻击行为:Front-Running,通过对其原理的研究,寻找最有效的解决方案,最终帮助DeGate用户避免这一严重有损他们利益的攻击行为。
Front-Running和Mempool
简单来说,Front-Running是指在一笔正常交易等待打包的过程中,抢跑机器人通过设置更高Gas费用抢先完成攻击交易,以此攫取用户利益的攻击行为。而Mempool是一组已经广播到网络中并等待被打包进区块的以太坊交易,它是Front-Running可以实施的前提,抢跑机器人通过不断扫描Mempool中的交易,来分析发现可攻击的目标。下图是一个Mempool浏览器,可以通过设置各种筛选项订阅Mempool中的交易,并查看这些交易的全部详细信息。
在所有Front-Running中,最典型最具危害性的就是针对AMM交易的SandwichAttacks,除此以外还有针对套利、清算交易、闪电贷等利用系统漏洞获利的抢跑攻击,攻击者数量众多,且由自动化脚本控制,永远不知疲倦,因此任何有利可图的交易都会遭受他们的饱和攻击,几乎没有幸免的可能。
1inch Network:已向解析器激励计划发放超150万枚INCH:2月12日消息,DEX聚合器1inch Network在社交媒体发布项目数据更新,截止目前已向解析器激励计划发放1,507,992 INCH代币,按照当前价格计算超过80万美元。1inch Network于1月底启动解析器激励计划代币发放,总计为1000万枚INCH。
此外,1inch Network还公布了当前主流链上数据,按交易额排名:以太坊(2406亿美元)、BNB(326亿美元)、Polygon(181亿美元)、Avalanche(33亿美元)、Arbitrum(32亿美元)、Optimism(16亿美元)、Fantom(7.291亿美元)、Gnosis(1.92亿美元)。[2023/2/12 12:02:19]
接下来,我们重点对三明治攻击进行分析。
SandwichAttacks
真实攻击案例
首先我们来看一个真实的三明治攻击案例。
上图可见,三笔交易在同一个区块被打包,两笔攻击交易中间夹着一笔正常交易。其具体流程如下:
用户首先发起一笔正常交易,用237000.705USDC买入DG,设置GasPrice为40.5Gwei;
ENS开发负责人:以太坊已支持CCIP读取与ENS通配符解析解决方案:3月14日,ENS开发负责人Nick Johnson在推特上表示,以太坊已支持CCIP读取与ENS通配符解析解决方案。据悉,跨链互操作协议(CCIP)为ENS采用的跨链解决方案,旨在支持在二层网络上发行链上的域名。[2022/3/14 13:55:55]
抢跑机器人检测到这笔有利可图的交易后,随即展开攻击,发起一笔买入交易,设定GasPrice为49.9Gwei,凭借Gas竞争机制成功抢跑用户的正常交易;
与此同时,机器人发出另一笔卖出交易,设置GasPrice同样为40.5Gwei,因为时间顺序的原因,紧贴着用户正常交易完成。
一次完美的抢跑攻击完成,算上手续费,机器人共赚取16448.012-16310.3-15.2-10.61=$111.9,而这种两笔攻击交易夹着一笔正常交易的攻击,就被形象的称为三明治攻击。
原理说明
为了更好的说明攻击原理,我们补充一些相关背景知识。
我们知道,现如今的主流DEX如Uniswap等,采用的都是AMM机制,其价格遵循恒定乘积公式。例如,在Uniswap中建立一个A代币与ETH的流动池,A数量为1000,ETH数量为100,则两者数量乘积为100000,当前A价格为0.1ETH。当Alice试图用10个ETH来池子里购买A时,他所得到的A的数量X,可以用下面的公式推导(注:为简化计算,以下均未考虑手续费):
声音 | 鲁春丛:推动区块链的创新技术在标识解析中深度应用:据中国信通院官网,8月15日,在中国工业互联网标识大会上,工业和信息化部信息通信管理局副局长鲁春丛演讲表示,大力推进标识解析技术,标准研制,搭建规模性基础技术创新以实验的环境,联合产学研用各方面力量,促进新型标识体系的研制,推动区块链的创新技术在标识解析中深度应用。据介绍,标识解析体系是工业互联网的核心基础设施,是新一代互联网的“中枢神经”。[2019/8/18]
*=100000,X=90.9
这笔交易中,A的价格为10/90.9=0.11,相比于原来A的价格,价格滑点为:
/0.1*100%=10%
一笔交易就让币价产生了10%的滑点,可见越是流动性差的池子,遇到大额交易,越是容易产生滑点。而如果,能在用户正常的大额交易前,抢先买入A,再在用户正常交易后,将刚买入的A卖出,就可以获得一笔不菲的收益。沿用刚才的例子,假设在Alice的交易前,Bob抢先花5个ETH购买A,然后在Alice的交易完成后,Bob再把之前买入的A卖出,我们看看会有什么样的结果。
首先是Bob的抢跑交易:
(1000-X)*(1005)=100000,X=47.62
分析 | USDT听证会解析:瑞海君看币观点:一、预计听证会围绕的主题有如下两个:
1.Bitfinex和Tether不顾美国法律和监管,为纽约州居民提供了相关服务。
2.Bitfinex和Tether之前在美国的业务,触犯了美国的反法(这个才是对USDT具有巨大杀伤力的议题)。
二、?今晚可能达成的几种结果:
1.BFX和Tether违规为美国居民提供服务罪名成立,会导致两家共识会继续被调查,且会被美国要求提供更多的运营资料,的事情没结果,但是也要提交更多资料自正清白,这是利空!会导致USDT这个雷持续悬在整个币圈的头上,然后美国来一条新闻,币圈震动一次,简直就是噩梦。(概率中性)
行情影响:短暂反弹,然后继续震荡阴跌。
2.两项罪名都没结果,短暂利好,BFX继续和美国扯皮,大家松一口气暂时?,价格可能出现反弹。(可能性较大)
行情影响:短暂反弹,后市宽幅震荡为主。
3.两项罪名都成立,不可想像(可能性较小)!
行情影响:区块链局。
罪名直接成立可能性也较小,调查没那么快,所以请大家系好安全带,等待靴子落地,两只靴子到底如何落地,落地几支,只有静候今晚的听证会了。[2019/7/29]
即,Bob用5ETH购得47.62个A
动态 | EOSCanada 解析 B1 源代码解释相关期权兑现计划:据 IMEOS 报道,EOSCanada 发布文章解析 B1 源代码,以解释相关期权兑现计划。文中经过源代码分析得出结论,截至2019年1月1日,Block.one 可以赎回共计5879120个代币。分析结果认为,如果 Block.one 想要以小于其全部权重的票数进行投票,则他们必须赎回当前最大数量的代币。然后,他们必须将这些代币转移到一个单独的帐户,抵押,然后投票。截至撰写该文时(2019年3月中旬),这笔金额约为785万美元。因此,虽然 Block.one 以外的任何人都不知道他们投票的想法或他们想要用他们的代币做什么,但我们现在都能理解实际存在的限制。[2019/3/21]
接下来是Alice的正常交易,注意此时流动池中A的数量变为952.38,ETH的数量变为105:
(952.38-X)*(10510)=100000,X=82.81
最后Bob卖出47.62个A的交易,此时流动性中A的数量为869.57,ETH的数量为115:
*=100000,Y=5.97
通过这一次抢跑攻击,Bob净赚5.97-5=0.97个ETH,而Alice净亏90.9-82.81=8.09个A,Bob通过使Alice蒙受更大的滑点损失来获得自己的收益!
当然,实际的抢跑攻击会更复杂,攻击者需要进行更精密的计算,以求实现以下两个目标:
让用户的交易结果无限逼近用户自己设置的最大滑点,以求达到理论上的最大套利空间
在手续费竞争力和收益之间取得平衡,尽可能的在与其他机器人的竞争中获胜
我们用图表来更好的描述这一过程:
用户在A点,打算投入in_amount(user)个USDT购买ETH,这笔交易正常会把当前状态推向B,同时用户设置了最大滑点为B(max_slippage);
抢跑机器人监测到这笔交易,先于用户交易之前,进行了一笔in_amount(robot)个USDT的买入交易,将当前状态推到A';
用户的交易随后执行,达到其设置的最大滑点B(max_slippage);
抢跑机器人把步骤2中买入的ETH卖出,状态达到C点,得到out_amount(robot)个USDT
抢跑机器人获得收益out_amount(robot)-in_amount(robot)-手续费
解决方案
既然我们已经看到了Front-Running的杀伤力,那我们有什么办法阻止抢跑攻击呢?
作为一般用户,应对Front-Running可以有以下几种手段:
设置较低的交易滑点,比如0.1%,这会让抢跑机器人缺少可盈利的空间。?缺点:滑点过低导致大额交易十分容易失败,且失败的交易仍然需要支付高昂手续费。
提高gas费用,这会增加机器人的攻击成本。缺点:这同样也增加了自己的交易成本。
可以看出,以上解决方案都是无奈之举,且有各种不足,幸运的是,有很多团队认识到了Front-Running的危害性,并提出了不少有建设性的解决方案。首先通过对捕猎全过程的分析,我们可以得出结论,要实现Front-Running,需要几个要素:
Transaction公开性:可以在Mempool中获取交易的详细信息
以太坊交易执行机制:可以通过gas竞争的方式抢先完成交易
AMM交易曲线机制:恒定乘积机制可以造成较大滑点
那么反制手段就是分别在这几个要素上做文章。
Transaction公开性
既然机器人是通过分析Mempool中的交易来决定是否发起攻击,那么我们将交易信息直接加密,让机器人看不到或者看不懂不就好了?
社区中就有人提议使用零知识证明技术zk-SNARKs来达成上述目标,即运用zk-SNARKs将每笔交易的信息都加密隐藏起来,让机器人无从下手。
不过,目前该方案还不够成熟,存在需要消耗更高Gas费用和可能被利用来进行阻塞攻击,导致系统化整体liveness的缺陷。
以太坊交易执行机制
当前的以太坊交易执行机制是通过Gas竞争来完成的,即谁出的Gas费高,矿工就优先打包谁的交易,那么我们如果绕过这种机制,把交易发给矿工让其直接打包,就杜绝了抢跑机器人在中途攻击的可能性
所以一种类似于Layer0的方案也得到了一些应用,如星火矿池的Taichi服务,用户可以直接在MetaMask中设置Taichi的以太坊节点,这样交易就直接在没有出现在Mempool的情况下被打包了,但劣势是被打包的时效有一定的不确定性。
另外,如ArcherSwap类似理念的解决方案,构建了交易者和矿工之间的桥梁,交易者可以通过打赏的形式让矿工直接打包自己的交易,这就避免了被Front-Running的可能。虽然有那么点交保护费来避免被攻击的感觉,但也实实在在的降低了交易者的成本,而且有着不收取交易失败费用的优势。
AMM算法优化
在AMM机制下,大额交易产生过大的价格滑点,是Front-Running的利润空间,如果有一种AMM机制可以减少大额交易对后续交易价格的影响,就可以有效防止Front-Running攻击。早在2018年,Vitalik在以太坊技术社区中提供了一个方案,当发生兑换交易时,交易池价格不会立刻调整成真实价格,而是在若干分钟内,缓慢的趋向真实价格,这就好像交易池凭空多出了很多流动性一样,因此我们将这种技术称之为VitrualBalance技术。这种新机制,可大大压缩套利者的利润空间,有效防御Front-Running攻击,同时还可以增加流动性做市商的收益,可谓一举多得,1inch的mooniswap就是这个方案的一个实现版本。
增加流动性
此外,还有种思路,就是尽可能的加大交易池中特定价格区间的流动性,流动性越大,滑点越小,当流动性大到一定程度的时候,抢跑机器人就丧失了盈利空间,Uniswap的V3版本的聚焦流动性特性,就是在这方面做出的努力。
展望未来
我们有理由相信,在各个团队坚持不懈的努力之下,随着各种解决方案的持续演进,以及新一代AMM、以太坊二层等技术的相继落地,很快我们就可以为用户提供一个更公平更安全的链上交易环境。
撰文:DeGate
摘要:本文会定义何为合成资产,然后主张:合成资产的交易平台让DeFi可以投资传统金融不能投资的“新型垃圾资产”.
1900/1/1 0:00:00尊敬的用户:应项目方要求,币虎即刻起暂停DIO充提币服务,升级期间不影响正常交易。恢复时间另行通知.
1900/1/1 0:00:001、比特币和以太坊市场在4月初经历一定程度的流动性冲击,在随后的几天中,比特币和以太坊衍生品市场开始去杠杆化……2、但是,以太坊现货市场深度似乎有更快的恢复速度.
1900/1/1 0:00:00今天早上国内投资者起床后对昨晚的部分消息还是比较失望的,所有人都认为Facebook都已经配置了比特币,但当Facebook财报公布后,并未持有任何的比特币,市场预期落空.
1900/1/1 0:00:00近一年来,接受加密货币作为支付方式的企业实体越来越多。我们认为,企业作为一个面向消费者的服务方,接受加密货币作为支付方式,能够提高加密货币的曝光度,推动加密货币的采纳进程,起到一个引导用户入场的.
1900/1/1 0:00:00公告编号2021042802各位关心ZBG.io的投资者们和项目方:ZBG将于HKT2021年4月29日上线Lemond(LEMD)项目,并开放LEMD/USDT交易对,具体时间如下.
1900/1/1 0:00:00