時(shí)間:2023-08-12|瀏覽:296
原文標(biāo)題:《以太坊的黑暗森林》 撰文:談國(guó)鵬,Ownbit創(chuàng)始人
之前看過(guò)幾篇關(guān)于以太坊黑暗森林的文章,對(duì)其中的黑暗、扭曲深感震撼。于是花了幾天時(shí)間寫(xiě)了自己的機(jī)器人,深入體驗(yàn)了其間的險(xiǎn)惡。
概述
什么是以太坊的黑暗森林?它是指以太坊上鮮為人知、卻廣泛存在的一種不公平的、暗黑的機(jī)制--Mempool的打包機(jī)制的特權(quán)使用。一般而言,礦工按照交易給予的礦工費(fèi)(GasPrice)高低來(lái)進(jìn)行排序打包。這些交易的排序先后對(duì)于單個(gè)轉(zhuǎn)賬交易并無(wú)影響,然后涉及到DeFi交易,情況就不一樣了。
在DeFi中,交易被打包的順序深刻影響著其經(jīng)濟(jì)利益。例如,在Uniswap中,同樣兩個(gè)針對(duì)某交易對(duì)的買(mǎi)單,先被執(zhí)行的交易將獲得更多代幣。如果你總是在一筆買(mǎi)單前買(mǎi)入同樣的代幣,然后又緊隨其后賣(mài)出,則將「毫無(wú)風(fēng)險(xiǎn)」地獲利。這也被稱為提前交易(Front-Running)。
細(xì)節(jié)
為什么提前交易可以獲利?以Uniswap為例,其價(jià)格模型是x*y=常量。例如初始x=100,y=100,那么常量=10000。那么當(dāng):
用戶A用10個(gè)x買(mǎi)入y。此時(shí)x=110,y=90.9,用戶A獲得9.1y。(x*y依然等于常量10000) 用戶B用10個(gè)x買(mǎi)入y。此時(shí)x=120,y=83.33,用戶B獲得7.57y。(x*y依然等于常量10000) 用戶A賣(mài)出所有y。此時(shí)x=108.18,y=92.43,用戶A獲得11.82x。(x*y依然等于常量10000)
以上例子可以看出,用戶A通過(guò)提前交易,發(fā)出兩個(gè)交易,一前一后包裹用戶B交易,則可以「毫無(wú)風(fēng)險(xiǎn)」地獲利。這里打上雙引號(hào)是因?yàn)樾枰僭O(shè)沒(méi)有其他同樣策略的用戶A出現(xiàn)。在真實(shí)的市場(chǎng)環(huán)境中,用戶B是一個(gè)真實(shí)的用戶,而用戶A則是一個(gè)機(jī)器人。
以Uniswap為例,當(dāng)前市場(chǎng)上充斥著大量的提前交易機(jī)器人。這些機(jī)器人時(shí)刻監(jiān)控著出現(xiàn)在以太坊mempool中的用戶交易。如果用戶是大額買(mǎi)入某幣,那么它們立刻發(fā)出兩筆交易,一