如何在同一個區塊中獲得如此精確的交易順序?
這看起來像是在同一塊12564977中執行的“三明治”(又名前沿)攻擊。中間的交易是從 Uniswap 池中購買 KEK。有人能夠用“pre”和“post”交易“包裝”這個交易。“前”交易從同一個池中購買了 KEK,並推高了 KEK 價格,因此“受害者”tx 被迫以更高的價格購買。“post” tx 將 KEK 出售給礦池並實現了 0.145 ETH 的利潤。
我的問題是:
- 怎麼可能如此精確地控制交易排序?
- 為什麼“前”和“後”交易的費用為 0,但它們卻出現在區塊的最頂部,就在“受害者”交易的周圍?是礦工自己創建這些交易嗎?
這看起來像是在同一個區塊中執行的“三明治”(又名前跑)攻擊
是的。
為什麼“前”和“後”交易的費用為 0,但它們卻出現在區塊的最頂部,就在“受害者”交易的周圍?是礦工自己創建這些交易嗎?
想要搶先受害者交易的攻擊者直接向礦工支付了費用,而不是通過汽油費。
如果您查看“發布”交易,特別是內部交易,您會看到直接向礦工地址轉移了 0.129472988593493943 ETH 。
這僅在交易後支付,因此激勵礦工按特定順序建構 pre-vitim-post 捆綁包。
為了實現這一切,攻擊——通過這個合約——涉及到一個
block.coinbase.transfer(<amount>)
呼叫。(當塊被探勘時,block.coinbase
設置為礦工的地址。)礦工可以觀察記憶體池†中提供直接支付的交易,如果直接費用足夠,他們將建構三明治。
有關礦工可提取價值 (MEV) 的更多資訊,請參閱:
編輯:
†雖然礦工可以在記憶體池中查看直接向他們付款的交易,但在這種特定情況下,這並沒有發生。
如果您查看捆綁包中任何交易的頁面頂部,您會在頁面標題下方看到一個紫色的“私人交易”標籤。這意味著 Etherscan 沒有看到交易被廣播到公共記憶體池,這意味著攻擊者要麼是 a) 礦工自己,要麼是 b) 有權訪問礦工暗池的人。(暗池是使用者付費訪問的私有/許可記憶體池。請參閱:逃離黑暗森林)