以太坊Dex“夹”交易套利,和BCH分裂往事

闪电HSL view 95 2021-1-21 23:24
share to
Scan QR code with WeChat

以太坊网络上出现了一种特别的套利,让我想起了2018年末导致BCH和BSV分裂的一个特性升级,CTOR,规范交易排序。

Uniswap交易套利

别关心“夹交易”套利攻击在道德上的观点,我们还是先搞明白这是什么黑科技吧。

针对uniswap这个去中心化交易所的交易,存在如下套利逻辑。拿交易对USDT/ETH来举例。

用户,即被攻击者,发了一笔交易tx1,用usdt在uniswap的usdt/eth交易对里买ETH。

假设usdt/eth资金池的初始值为(x,y)。即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)就是利润。

以上过程攻击者可以使用智能合约来计算最后的(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一直用处不大。不知道以后会不会有用。

btcfans公众号

Scan QR code with WeChat

Link
Disclaimer:

Previous: 难于理解的NFT Next: 预测币圈交易赛道还有百倍以上的增长空间

Related