编者按:本文来自闪电HSL,作者:黄世亮,Odaily星球日报经授权转载。以太坊网络上出现了一种特别的套利,让我想起了2018年末导致BCH和BSV分裂的一个特性升级,CTOR,规范交易排序。夹Uniswap交易套利
别关心“夹交易”套利攻击在道德上的观点,我们还是先搞明白这是什么黑科技吧。针对uniswap这个去中心化交易所的交易,存在如下套利逻辑。拿交易对USDT/ETH来举例。用户,即被攻击者,发了一笔交易tx1,用usdt在uniswap的usdt/eth交易对里买ETH。假设usdt/eth资金池的初始值为。即x个usdt,y个ETH。用户发起一笔交易tx1,用dx个usdt,换取dy个ETH。请注意,dx是确定的用户支出的金额,但dy的值在交易被打包前是一个范围,即滑点导致了一个上下限。为了方便理解,我们将攻击者直接定为矿池。虽然技术上非矿池也能搞定。攻击者构造交易tx0,使用dx'个usdt,换取dy'个ETH。然后攻击者构造交易tx2,使用dy''个ETH,换取dx'个usdt。攻击者作为矿池,是有能力将tx0,tx1,tx2,这三笔交易打包进同一个区块,并且严格按照顺序tx0,tx1,tx2,来排序打包。最终,攻击者将获得(dy''-dy'-tx0和tx2的0.3%fee-gas)个ETH的利润。整个过程是这样的,1,攻击者发现用户的交易tx1,用Usdt买ETH。2,攻击者先安排交易tx0,将ETH的价格抬高,用dx'个usdt买到dy'个ETH。3,攻击者然后安排tx1成交,让用户买到ETH,进一步抬高ETH的价格。4,攻击者再安排tx2成交,卖出dy''ETH,将自己的dx'Usdt成本收回来。而因为2和3两个步骤均抬高了ETH的价格,所以dy''一定小于dy'。就是利润。以上过程攻击者可以使用智能合约来计算最后的(dy''-dy'-fee-gas)是否大于0,如果是,则执行“打包tx0-tx1-tx2”,否则不执行。可以做到无风险套利。整个攻击的核心就是攻击者可以安排三笔交易的打包顺序。一般来说,以太坊交易在区块里排序是按用户交的gas费用高低来排序的。但这并不是共识规则,矿池是可以做任意排序的。非矿池攻击者“夹交易攻击”使用的就是gas费来安排两笔交易的先后。BCH2018年末规范交易排序升级
这个“夹交易”攻击策略让我想起了2018年末BCH和BSV的分裂往事。在2018年11月15日BCH的升级特性有一个叫CTOR,规范交易排序。CTOR让区块里的交易按交易ID的升序进行排序。升级前BCH区块里打包交易的排序规则叫拓扑排序TTOR,本质上这不是一个共识规则,矿池可以任意安排交易的排序。但CTOR则将交易打包进区块的排序列为了共识规则,即矿池只能按交易ID的升序打包排序。所有交易的在区块里的位置就成了共识的一部分。CTOR主要是ABC开发组开发的,但引起了现在BSV的开发者强烈反对,最终导致了BCH和BSV的分裂。交易ID,即txid,的值是交易数据的Hash,这个是不可预测的。现在ETH上的“夹交易”攻击,就不可能在BCH上发生,因为矿池无法安排交易的摆放位置。当然BCH上没有uniswap:),哈。现在ETH区块里的交易排序不是共识的一部分,矿池可以任意安排交易的位置。回想起2018年末,BCH的爱好者们为CTOR争吵。当时争吵的还有(checkdatasig)和(CHECKDATASIGVERIFY)操作码,这两操作码都在升级后多个BCH应用上发挥了作用,但CTOR一直用处不大。不知道以后会不会有用。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。