Tóm tắt · 12 phút đọc

Sandwich Attack — Điểm mấu chốt

Sandwich attack là khi bot phát hiện pending swap của bạn trong mempool, front-run để đẩy giá lên, để transaction của bạn execute ở giá tệ hơn, rồi ngay lập tức back-run để thu lợi. Bot hoạt động với latency dưới 10ms và chỉ tấn công khi profitable sau gas. Cách phòng vệ đơn giản nhất: giảm slippage tolerance xuống 0.5–1% và dùng MEV-protected RPC như Flashbots Protect.

Mempool — Nơi transaction chờ trước khi vào block

Trước khi hiểu sandwich attack, cần hiểu mempool (memory pool). Khi bạn submit một transaction trên Ethereum, nó không đi thẳng vào blockchain ngay lập tức. Nó được broadcast đến tất cả Ethereum node và nằm trong một hàng đợi gọi là mempool — chờ được validator chọn vào block tiếp theo.

Điểm quan trọng: mempool là public. Bất kỳ ai kết nối đến Ethereum node đều có thể xem tất cả pending transaction đang chờ — bao gồm thông tin về: địa chỉ gửi, địa chỉ nhận (contract), data của transaction (bao gồm swap amount và slippage tolerance), và gas price đặt. Đây chính là information mà sandwich bot khai thác.

Xem mempool công khai
Bạn có thể xem pending transaction ngay bây giờ tại etherscan.io/txsPending. Đây chính xác là những gì bot monitor — chỉ là bot làm điều đó nhanh hơn và tự động hóa hoàn toàn.

Latency race trong mempool

MEV searcher đầu tư rất nhiều vào infrastructure để giảm latency: collocate server với Ethereum node lớn, dùng WebSocket subscription thay HTTP polling, optimize code để decision time dưới 1ms. Khi bạn submit transaction, bot có thể phát hiện và phân tích nó trong vòng 5–10ms — trước khi block mới được đào.

Anatomy Từng Bước — Sandwich hoạt động chính xác như thế nào

Dưới đây là cơ chế kỹ thuật đầy đủ của một sandwich attack điển hình trên Uniswap V2. Xem thêm: dữ liệu thực từ EigenPhi.

Sandwich Attack — Full Technical Flow T=0ms : Bạn submit swap tx // ETH → MEME, slippage 3%, gas 20 Gwei T=8ms : Bot phát hiện trong mempool // Parse calldata: decode amountIn, amountOutMin T=12ms : Bot simulate profitability // Tính price impact, gas cost, net profit T=15ms : Bot submit front-run tx // Mua MEME, gas 25 Gwei (cao hơn tx của bạn) T=12s : Block mới được tạo // Thứ tự: front-run → tx của bạn → back-run Kết quả : Bạn mua đắt hơn ~2% // Bot thu profit, trừ gas → net ~0.5–1.5%

Tại sao thứ tự trong block có thể bị sắp xếp

Ethereum validator (người tạo block) có quyền chọn và sắp xếp bất kỳ transaction nào trong mempool vào block. Transaction có priority fee cao hơn thường được chọn trước — đây là cơ chế hợp lệ của protocol. Bot sandwich lợi dụng điều này bằng cách set priority fee cho front-run transaction cao hơn victim transaction một chút, đảm bảo execute trước.

Calldata decoding — Bot đọc swap của bạn thế nào

Khi bạn swap trên Uniswap, transaction data của bạn chứa calldata — encoded function call với các tham số: token path, amountIn, amountOutMin (minimum token nhận). AmountOutMin phản ánh trực tiếp slippage tolerance bạn set. Bot decode calldata để biết chính xác bạn sẵn sàng chịu slippage bao nhiêu — từ đó tính maximum front-run size mà vẫn để transaction của bạn pass.

Toán học của Bot — Khi nào sandwich profitable

Bot chỉ sandwich khi lợi nhuận dự kiến vượt gas cost. Hiểu logic này giúp bạn cài đặt slippage đúng để tránh bị target.

Ví dụ tính toán thực tế

Giả sử bạn swap $1,000 ETH → MEME với slippage 3% trên pool có $50,000 liquidity. Bot estimate: front-run $2,000 sẽ đẩy giá lên ~2.5%. Sau khi bạn swap, bot back-run và thu ~2.5% × $2,000 = $50 gross profit. Gas cost: 2 transaction × $15 = $30. Net profit: $20 — profitable, bot sandwich bạn.

Cùng scenario nhưng slippage của bạn là 0.5%: bot chỉ có thể front-run tối đa để giá tăng 0.5% — tức front-run nhỏ hơn, gross profit chỉ ~$10. Sau gas $30 → net profit âm → bot bỏ qua.

Swap SizeSlippage 0.5%Slippage 1%Slippage 3%Slippage 5%
$200✅ An toàn✅ An toàn✅ An toàn⚠️ Borderline
$500✅ An toàn✅ An toàn⚠️ Risk🚨 Target
$2,000✅ An toàn⚠️ Borderline🚨 Target🚨 Target
$10,000+⚠️ Risk🚨 Target🚨 Target🚨 Confirmed

Bảng ước tính dựa trên gas cost ~$20–30/sandwich tại Ethereum mainnet. Thay đổi theo điều kiện thực tế.

Nhận Diện Bị Sandwich — Kiểm tra on-chain sau giao dịch

Nếu bạn nghi ngờ đã bị sandwich, có thể xác nhận trực tiếp trên chain trong vài phút.

Bước 1: Kiểm tra execution price

So sánh quoted price lúc bạn confirm swap với execution price thực tế trong transaction receipt. Nếu bạn nhận token ít hơn đáng kể so với amount tối thiểu (gần đến amountOutMin), đây là dấu hiệu đầu tiên. Xem trên Etherscan: vào transaction hash → Token Transfers tab → xem chính xác bạn nhận bao nhiêu.

Bước 2: Xem block context

Từ transaction hash của bạn, click vào block number. Xem tất cả transaction trong block đó và tìm transaction trong cùng pool (same contract address) ngay trước và ngay sau tx của bạn. Nếu cả hai đến từ cùng một address (thường là smart contract) → bạn đã bị sandwich.

Bước 3: Dùng EigenPhi để xác nhận

Paste transaction hash vào EigenPhi.io — tool tự động phát hiện và visualize sandwich attack. Nó sẽ cho bạn thấy chính xác: bot address, profit của bot, và bạn mất bao nhiêu so với fair execution.

ZRO Research: Pattern bot sandwich phổ biến
Bot sandwich thường dùng smart contract trung gian thay vì EOA (externally owned account). Contract address thường có pattern: hàng trăm transaction mỗi ngày, value rất nhỏ (chỉ dùng để route sandwich), và thường không có public source code trên Etherscan. Nếu thấy contract như vậy bao quanh tx của bạn → 90%+ là sandwich bot.

V2 vs V3 vs Solana — Sandwich risk khác nhau thế nào

PlatformSandwich RiskLý doBiện pháp tốt nhất
Uniswap V2🚨 Cao nhấtConstant product, dễ simulateSlippage 0.5% + Flashbots
Uniswap V3⚠️ Trung bìnhTick-based, khó simulate hơnSlippage 0.5–1%
Curve/Balancer⚠️ Thấp–Trung bìnhCustom invariant, phức tạp hơnSlippage 0.1–0.5%
Pump.fun (Solana)✅ ThấpKhông có public mempoolStandard settings
Raydium (Solana)⚠️ Thấp–Trung bìnhJito bundles cho phép partial sandwichCompute unit price vừa phải

Tại sao Uniswap V2 dễ bị sandwich nhất

V2 dùng công thức x·y = k đơn giản — bot có thể tính chính xác price impact của mọi swap chỉ với hai số: reserve_x và reserve_y, đều public on-chain. Simulation của bot chỉ mất vài microsecond. V3 với concentrated liquidity phức tạp hơn vì price impact phụ thuộc vào vị trí giá hiện tại trong tick range, và có thể cross nhiều tick — simulation đòi hỏi nhiều computation hơn và có uncertainty cao hơn, làm giảm số bot sandwich profitable.

4 Cách Phòng Tránh — Thực tế và có thể áp dụng ngay

Cách 1: Giảm Slippage Tolerance (hiệu quả nhất)

Set slippage 0.5–1% thay vì default 3–5%. Với token stable hoặc high-liquidity, 0.5% đủ và transaction sẽ không fail. Với meme coin volatile, set 1% và retry nếu fail — vẫn tốt hơn bị sandwich nhiều lần. Chỉ tăng slippage khi thực sự cần thiết và làm từng bước nhỏ.

Cách 2: Flashbots Protect RPC

Đây là biện pháp kỹ thuật mạnh nhất. Transaction bypass public mempool hoàn toàn — bot không thể thấy nó trước khi include vào block. Setup MetaMask: Settings → Networks → Add Network → RPC URL: https://rpc.flashbots.net, Chain ID: 1. Hoặc dùng protect.flashbots.net để thêm tự động.

Cách 3: Dùng CoW Protocol (Coincidence of Wants)

CoW Protocol (cow.fi) dùng intent-based settlement — bạn sign một "intent to trade" thay vì transaction trực tiếp. Solver tìm counterparty phù hợp trước khi settle on-chain. Vì không có on-chain transaction cho đến khi match được tìm thấy, bot sandwich không có gì để front-run. CoW thường cho execution price tốt hơn cả Uniswap trực tiếp.

Cách 4: Private Transaction (MEV Blocker)

MEV Blocker là RPC tương tự Flashbots Protect nhưng thêm tính năng: nó broadcast transaction đến nhiều block builder đồng thời và chọn builder offer execution tốt nhất. Setup tương tự — thêm custom RPC vào MetaMask.

Recommendation cho meme trader
Stack tối ưu: (1) Dùng Flashbots Protect hoặc MEV Blocker làm default RPC; (2) Set slippage 1% cho hầu hết trade; (3) Chỉ dùng high slippage (3–5%) khi urgently cần và aware về risk; (4) Với Solana, dùng Jito priority fee vừa phải — không cần lo sandwich nhiều như Ethereum.

FAQ — Câu hỏi thường gặp về Sandwich Attack

Sandwich attack là khi MEV bot phát hiện pending swap của bạn trong mempool, thực hiện front-run (mua trước để đẩy giá lên), để transaction của bạn execute ở giá cao hơn, rồi back-run ngay sau (bán ra để thu lợi từ price impact của bạn). Thiệt hại thường 0.5–3% của swap value tùy slippage tolerance bạn set.
Kiểm tra trên EigenPhi.io bằng transaction hash — tool tự động detect và visualize. Hoặc manual: vào Etherscan xem block chứa tx của bạn, tìm 2 transaction cùng pool ngay trước và sau từ cùng một address (thường là smart contract với hàng trăm tx/ngày). Đây là dấu hiệu sandwich rõ ràng nhất.
Bot kết nối trực tiếp với nhiều Ethereum node qua WebSocket để nhận pending transaction realtime với latency dưới 10ms. Chúng decode calldata để extract swap parameters, chạy simulation nhanh để estimate profitability, và nếu profitable, submit front-run + back-run bundle với priority fee cao hơn victim để đảm bảo execute trước.
0.5% là mức an toàn nhất — bot không sandwich profitable ở mức này trừ swap rất lớn (>$10k). 1% là trade-off tốt giữa bảo vệ và ít fail. Trên 3% là vùng nguy hiểm với swap $500+. Trên 5% là mời gọi bot với bất kỳ swap size nào đáng kể. Với meme coin volatile, cố giữ 1% và retry nếu fail thay vì set cao hơn.
Flashbots Protect là private RPC endpoint. Transaction không đi vào public mempool — được gửi trực tiếp đến Flashbots MEV-Boost relay và từ đó đến validator. Bot sandwich không thể thấy transaction trước khi include vào block. Setup: thêm RPC URL https://rpc.flashbots.net vào MetaMask như một custom network.
Có nhưng ít hơn V2. V3 concentrated liquidity làm price impact khó predict hơn cho bot — simulation phức tạp hơn và có uncertainty cao hơn. Tuy nhiên sandwich V3 vẫn xảy ra với các pool có range rộng hoặc full-range liquidity. Volume sandwich trên V3 thấp hơn V2 khoảng 30–40% theo dữ liệu EigenPhi.

Tài liệu tham khảo

Nguồn chính

  1. Daian, P. et al. Flash Boys 2.0. 2019. arxiv.org
  2. EigenPhi. Sandwich Attack Data Dashboard. eigenphi.io
  3. Flashbots. MEV-Protect Documentation. docs.flashbots.net
  4. Uniswap Foundation. V2 and V3 Core AMM Whitepapers. uniswap.org
  5. CoW Protocol. Intent-based Settlement Architecture. docs.cow.fi

Bài viết liên quan

Market Microstructure · MEV — PEPE.VN Research

Xem toàn bộ research →