Tấn công Sandwich là gì? Cách bot MEV đánh cắp từ giao dịch DEX của bạn

Tấn công sandwich là một loại khai thác MEV (Maximal Extractable Value) trong đó bot phát hiện giao dịch swap đang chờ, đặt giao dịch của mình trước và sau giao dịch của nạn nhân, và trích xuất lợi nhuận từ biến động giá.

Tấn công này xảy ra trên mọi blockchain có sàn giao dịch phi tập trung dựa trên AMM — Solana, Ethereum, BSC, Base và các chain khác. Đây là một trong những nguyên nhân thường gặp nhất gây tổn thất bất ngờ cho trader DEX, và hầu hết nạn nhân không biết điều đó đã xảy ra.

Hướng dẫn này bao gồm cơ chế đằng sau tấn công sandwich, điều kiện khiến chúng sinh lời, và các phương pháp bảo vệ.

Giao dịch blockchain được xử lý như thế nào

Để hiểu cách tấn công sandwich hoạt động, trước tiên cần hiểu cách giao dịch được xử lý trên các blockchain như Solana, Ethereum và BSC.

Blockchain không xử lý giao dịch từng cái một khi bạn nhấp "Swap". Thay vào đó, chúng hoạt động theo lô. Blockchain thu thập tất cả giao dịch đến, nhóm chúng lại và xử lý toàn bộ lô cùng lúc. Mỗi lô gọi là block, và thời gian tạo một block gọi là block time.

BlockchainBlock Time
Solana~0.4 giây
Monad~0.4 giây
Arbitrum~0.25 giây
Base~2 giây
Polygon~2 giây
Optimism~2 giây
Avalanche~2 giây
BNB Chain~3 giây
Ethereum~12 giây

Trên Ethereum, block mới được tạo khoảng mỗi 12 giây. Ví dụ sau cho thấy năm giao dịch gửi vào các thời điểm khác nhau trong cùng cửa sổ 12 giây đều được xác nhận cùng lúc — nhưng thực thi theo thứ tự không liên quan đến thời điểm gửi:

Giao dịchGửi lúcXác nhậnThứ tự thực thi
Giao dịch A3:00:01 PM3:00:12 PMThứ 3
Giao dịch B3:00:03 PM3:00:12 PMThứ 1
Giao dịch C3:00:05 PM3:00:12 PMThứ 5
Giao dịch D3:00:08 PM3:00:12 PMThứ 2
Giao dịch E3:00:11 PM3:00:12 PMThứ 4

Cả năm giao dịch được xác nhận lúc 3:00:12 PM khi block được tạo. Nhưng thứ tự thực thi — thứ tự thực sự quyết định ai giao dịch trước — do validator tạo block quyết định, không phải ai gửi trước.

Các yếu tố như phí ưu tiên, tip MEV, hoặc quan hệ trực tiếp với validator ảnh hưởng đến vị trí giao dịch trong chuỗi. Giao dịch B gửi thứ hai nhưng thực thi đầu tiên. Giao dịch A gửi đầu tiên nhưng thực thi thứ ba.

Đây là lý do cơ bản khiến tấn công sandwich có thể xảy ra. Bot MEV giám sát giao dịch đang chờ trong pipeline, và bằng cách trả phí cao hơn, chúng có thể thao túng thứ tự thực thi trong block để đặt giao dịch của mình trước và sau giao dịch của bạn.

Tấn công sandwich hoạt động như thế nào

Tấn công sandwich khai thác việc swap di chuyển giá token trong pool thanh khoản. Đây là cách diễn ra từng bước.

  1. Bạn gửi Swap: Gửi giao dịch mua Token X trên DEX. Trước khi giao dịch được đưa vào block, nó đi vào pipeline giao dịch của mạng — trên Ethereum là mempool công khai, trên Solana là lớp chuyển tiếp giao dịch — nơi nó tạm thời hiển thị.
  2. Bot phát hiện giao dịch: Bot MEV liên tục quét pipeline phát hiện swap đang chờ. Nó thấy bạn mua bao nhiêu và tính toán giao dịch sẽ di chuyển giá bao nhiêu. Giao dịch càng lớn so với thanh khoản pool, giá càng di chuyển nhiều — và tấn công càng sinh lời.
  3. Bot front-run bạn: Bot gửi giao dịch mua với phí ưu tiên cao hơn, đảm bảo thực thi trước bạn trong cùng block. Việc mua của bot đẩy giá token lên.
  4. Giao dịch của bạn thực thi: Swap của bạn diễn ra ở mức giá bây giờ cao hơn. Bạn nhận được ít token hơn so với không có sự can thiệp của bot.
  5. Bot back-run bạn: Ngay sau giao dịch của bạn, bot bán token đã mua ở Bước 3. Việc mua của bạn tạo thêm áp lực tăng giá, và bot bán ở mức giá cao hơn đó.

Sau khi bot bán, giá giảm xuống. Bạn nắm giữ token bây giờ có giá trị thấp hơn số tiền đã trả. Bot thu được chênh lệch giữa giá mua và bán — giá trị trích xuất trực tiếp từ giao dịch của bạn.

Toàn bộ chuỗi xảy ra trong một block duy nhất.

Ví dụ thực tế tấn công sandwich trên Ethereum DEX

Hình trên cho thấy tấn công sandwich thực tế trên Pool Uniswap V2 Ethereum. Ba giao dịch thực thi đúng cùng thời điểm (06:28:23 AM) trong cùng block:

  1. 1FaE13 (Bot MEV) mua $616.13 token DAT — front-run.
  2. 8a23ff (Nạn nhân) mua $1.9 token DAT — thực thi ở mức giá bây giờ cao hơn.
  3. 1FaE13 (Bot MEV) bán $617.84 token DAT — back-run, thu khoảng $1.71 lợi nhuận.

Giao dịch $1.9 của nạn nhân nhỏ, nhưng đủ để bot trích xuất lợi nhuận. Toàn bộ tấn công — mua, nạn nhân, bán — xảy ra trong một block.

Khi nào giao dịch trở thành mục tiêu tấn công sandwich

Không phải swap nào cũng bị sandwich. Bot MEV chỉ tấn công khi lợi nhuận kỳ vọng vượt chi phí. Các điều kiện sau khiến giao dịch trở thành mục tiêu:

  • Giao dịch lớn so với kích thước pool. Swap $50 trong pool $500 thanh khoản di chuyển giá khoảng 10% trở lên — mục tiêu sinh lời cho bot sandwich. Cùng $50 trong pool $5,000,000 thanh khoản hầu như không di chuyển giá, không đáng tấn công.
  • Dung sai slippage cao. Đặt slippage 10% trở lên báo hiệu bạn chấp nhận giá tệ hơn đáng kể. Điều này cho bot nhiều không gian đẩy giá trước khi giao dịch bị hoàn.
  • Token thanh khoản thấp. Token mới ra mắt và memecoin thường có pool nhỏ. Swap vừa phải cũng tạo đủ biến động giá cho bot khai thác.

Cách bảo vệ khỏi tấn công sandwich

1. Sử dụng định tuyến giao dịch được bảo vệ MEV

Bảo vệ hiệu quả nhất là ngăn bot nhìn thấy giao dịch ngay từ đầu.

  • Trên Solana: Jito Bundle bỏ qua pipeline giao dịch công khai và gửi swap trực tiếp đến Jito Block Engine, nơi bot MEV không thể quan sát. Hầu hết công cụ giao dịch Solana đã hỗ trợ — nếu thấy trường "Jito Tip", giao dịch đang được định tuyến qua Jito. Jito cũng cung cấp cơ chế jitodontfront, đảm bảo giao dịch phải xuất hiện đầu tiên trong bất kỳ bundle nào chứa nó.
  • Trên Ethereum và chuỗi EVM: Dịch vụ như Flashbots Protect, MEV Blocker và RPC riêng định tuyến giao dịch qua mempool riêng thay vì công khai. Một số ví và giao diện DEX cung cấp tùy chọn tích hợp sẵn.

2. Đặt slippage chặt

Dung sai slippage xác định mức giá tệ nhất bạn chấp nhận. Nếu đặt slippage 1%, giao dịch sẽ thất bại thay vì thực thi ở mức giá tệ hơn 1% so với kỳ vọng.

Điều này giới hạn biên lợi nhuận của bot. Nếu bot chỉ trích xuất được lượng rất nhỏ trước khi giao dịch bị hoàn, tấn công trở nên không sinh lời sau khi tính phí và chi phí tip của bot.

Với hầu hết swap, 1–3% slippage là đủ. Chỉ tăng cho token cực kỳ biến động hoặc trong các đợt ra mắt khi bạn sẵn sàng chấp nhận giá tệ hơn.

3. Chia nhỏ giao dịch lớn

Thay vì swap lượng lớn trong một giao dịch, chia thành các swap nhỏ hơn. Mỗi giao dịch nhỏ có tác động giá ít hơn, khiến mỗi giao dịch kém hấp dẫn với bot sandwich.

Nhược điểm là nhiều giao dịch và nhiều phí hơn, nhưng tiết kiệm từ việc tránh tấn công sandwich thường vượt chi phí thêm.

4. Tránh pool thanh khoản cực thấp

Nếu pool có thanh khoản rất thấp, giao dịch nhỏ cũng tạo tác động giá khổng lồ. Các pool này là mục tiêu dễ nhất cho bot sandwich. Kiểm tra thanh khoản pool trên DEXScreener, Birdeye hoặc DexTools trước khi swap.

5. Kiểm tra giao dịch sau khi thực hiện

Công cụ như sandwiched.me cho phép kiểm tra ví có bị ảnh hưởng bởi tấn công sandwich không. Xem lại giao dịch trước đây giúp nhận diện pattern và điều chỉnh chiến lược — slippage chặt hơn, giao dịch nhỏ hơn, hoặc chuyển sang định tuyến bảo vệ MEV.

Tấn công sandwich vs. các loại giảm giá khác

Không phải mọi tổn thất sau khi mua đều là tấn công sandwich.

  • Tấn công sandwich: Giá tăng đột biến ngay trước giao dịch và giảm ngay sau — trong cùng block hoặc block tiếp theo. Trên block explorer, bạn thấy lệnh mua lớn ngay trước và lệnh bán lớn ngay sau, từ cùng ví hoặc chương trình.
  • Áp lực bán bình thường: Giá giảm dần trong vài phút hoặc vài giờ sau khi mua. Holder khác đang bán, đây là hành vi thị trường bình thường.
  • Rug pull: Nhà phát triển rút toàn bộ thanh khoản khỏi pool. Giá giảm gần bằng không ngay lập tức và token không thể giao dịch được.

Tóm tắt

Tấn công sandwich khai thác việc giá DEX di chuyển dựa trên kích thước giao dịch so với thanh khoản pool, và thứ tự giao dịch trong block do validator kiểm soát — không phải ai gửi trước.

Để bảo vệ bản thân: sử dụng định tuyến bảo vệ MEV (Jito trên Solana, Flashbots Protect trên Ethereum), đặt slippage chặt, chia nhỏ giao dịch lớn, và kiểm tra thanh khoản pool trước khi swap.

FAQ

Có thể bị sandwich trên bất kỳ chain nào không?

Có. Bất kỳ chain nào có DEX dựa trên AMM đều dễ bị tấn công — Solana, Ethereum, BSC, Base, Polygon, Arbitrum và các chain khác. Lỗ hổng đến từ cách AMM tính giá, không phải từ chain hoặc DEX cụ thể nào.

Slippage cao có nghĩa là tôi sẽ bị sandwich?

Không tự động, nhưng tăng đáng kể rủi ro. Slippage cao cho mạng biết bạn chấp nhận giá tệ hơn, cho bot nhiều không gian trích xuất lợi nhuận. Giữ slippage thấp nhất có thể.

Tấn công sandwich có bất hợp pháp không?

Không có khung pháp lý rõ ràng ở hầu hết các khu vực pháp lý. Trên Solana, Solana Foundation và Jito đã hành động chống validator tham gia tấn công sandwich bằng cách loại họ khỏi chương trình ủy quyền. Trên Ethereum, Flashbots và các nhà cung cấp hạ tầng khác nỗ lực giảm trích xuất MEV.