การโจมตี Sandwich คืออะไร? บอท MEV ขโมยจากการเทรด DEX ของคุณอย่างไร

การโจมตี sandwich เป็นการแสวงหาผลประโยชน์จาก MEV (Maximal Extractable Value) ประเภทหนึ่ง โดยบอทตรวจจับธุรกรรม swap ที่รอดำเนินการ วางธุรกรรมของตัวเองก่อนและหลังของเหยื่อ และดึงกำไรจากการเคลื่อนไหวของราคา

การโจมตีนี้เกิดขึ้นบนทุกบล็อกเชนที่มี DEX แบบ AMM — Solana, Ethereum, BSC, Base และอื่นๆ เป็นสาเหตุที่พบบ่อยที่สุดของการสูญเสียที่ไม่คาดคิดสำหรับเทรดเดอร์ DEX และเหยื่อส่วนใหญ่ไม่รู้ว่าเกิดขึ้น

คู่มือนี้ครอบคลุมกลไกของการโจมตี sandwich เงื่อนไขที่ทำให้ทำกำไรได้ และวิธีป้องกัน

ธุรกรรมบล็อกเชนถูกประมวลผลอย่างไร

เพื่อเข้าใจว่าการโจมตี sandwich ทำงานอย่างไร ช่วยให้เข้าใจก่อนว่าธุรกรรมถูกประมวลผลอย่างไรบนบล็อกเชนเช่น Solana, Ethereum และ BSC

บล็อกเชนไม่ได้ประมวลผลธุรกรรมทีละรายการตอนที่คุณคลิก "Swap" แต่ทำงานเป็นชุด บล็อกเชนรวบรวมธุรกรรมทั้งหมดที่เข้ามา จัดกลุ่ม และประมวลผลทั้งชุดในครั้งเดียว แต่ละชุดเรียกว่า บล็อก และเวลาที่ใช้สร้างหนึ่งบล็อกเรียกว่า เวลาบล็อก

บล็อกเชนเวลาบล็อก
Solana~0.4 วินาที
Monad~0.4 วินาที
Arbitrum~0.25 วินาที
Base~2 วินาที
Polygon~2 วินาที
Optimism~2 วินาที
Avalanche~2 วินาที
BNB Chain~3 วินาที
Ethereum~12 วินาที

บน Ethereum บล็อกใหม่ถูกสร้างประมาณทุก 12 วินาที ตัวอย่างต่อไปนี้แสดงว่าห้าธุรกรรมที่ส่งในเวลาต่างกันภายในหน้าต่าง 12 วินาทีเดียวกันถูกยืนยันพร้อมกัน — แต่ดำเนินการตามลำดับที่ไม่เกี่ยวข้องกับเวลาที่ส่ง:

ธุรกรรมส่งเมื่อยืนยันลำดับการดำเนินการ
ธุรกรรม A15:00:0115:00:12ที่ 3
ธุรกรรม B15:00:0315:00:12ที่ 1
ธุรกรรม C15:00:0515:00:12ที่ 5
ธุรกรรม D15:00:0815:00:12ที่ 2
ธุรกรรม E15:00:1115:00:12ที่ 4

ห้าธุรกรรมทั้งหมดยืนยันเมื่อ 15:00:12 เมื่อบล็อกถูกสร้าง แต่ลำดับการดำเนินการ — ลำดับที่กำหนดว่าใครเทรดก่อน — ถูกตัดสินโดย validator ที่สร้างบล็อก ไม่ใช่ใครส่งก่อน

ปัจจัยเช่นค่าธรรมเนียมลำดับความสำคัญ ทิป MEV หรือความสัมพันธ์โดยตรงกับ validator มีผลต่อตำแหน่งธุรกรรมในลำดับ ธุรกรรม B ส่งเป็นที่สองแต่ดำเนินการเป็นที่หนึ่ง ธุรกรรม A ส่งเป็นที่หนึ่งแต่ดำเนินการเป็นที่สาม

นี่คือเหตุผลพื้นฐานที่การโจมตี sandwich เป็นไปได้ บอท MEV ติดตามธุรกรรมที่รอใน pipeline และด้วยการจ่ายค่าธรรมเนียมสูงกว่า สามารถจัดการลำดับการดำเนินการในบล็อกเพื่อวางธุรกรรมของตัวเองก่อนและหลังของคุณ

การโจมตี Sandwich ทำงานอย่างไร

การโจมตี sandwich ใช้ประโยชน์จากข้อเท็จจริงที่ว่า swap เคลื่อนราคาโทเค็นในพูลสภาพคล่อง นี่คือขั้นตอน

  1. คุณส่ง Swap: ส่งธุรกรรมซื้อ Token X บน DEX ก่อนที่ธุรกรรมจะถูกรวมในบล็อก มันเข้าสู่ pipeline ธุรกรรมของเครือข่าย — บน Ethereum คือ mempool สาธารณะ บน Solana คือชั้นการส่งต่อธุรกรรม — ที่มันมองเห็นได้ชั่วคราว
  2. บอทตรวจจับธุรกรรม: บอท MEV ที่สแกน pipeline ตลอดเวลาพบ swap ที่รอดำเนินการ เห็นว่าคุณซื้อเท่าไรและคำนวณว่าเทรดจะเคลื่อนราคาเท่าไร ยิ่งเทรดใหญ่เมื่อเทียบกับสภาพคล่องของพูล ราคายิ่งเคลื่อนมาก — และการโจมตียิ่งทำกำไรได้มาก
  3. บอท front-run คุณ: บอทส่งธุรกรรมซื้อของตัวเองด้วยค่าธรรมเนียมลำดับความสำคัญสูงกว่า ทำให้ดำเนินการก่อนคุณในบล็อกเดียวกัน การซื้อของบอทผลักราคาโทเค็นขึ้น
  4. ธุรกรรมของคุณดำเนินการ: swap ของคุณเกิดขึ้นที่ราคาที่สูงขึ้นแล้ว คุณได้รับโทเค็นน้อยกว่าที่ควรได้หากไม่มีการแทรกแซงของบอท
  5. บอท back-run คุณ: ทันทีหลังธุรกรรมของคุณ บอทขายโทเค็นที่ซื้อในขั้นตอนที่ 3 การซื้อของคุณสร้างแรงกดดันราคาขึ้นเพิ่มเติม และบอทขายที่ราคาสูงกว่านั้น

หลังบอทขาย ราคาตกลง คุณถือโทเค็นที่ตอนนี้มีค่าน้อยกว่าที่จ่าย บอทจับส่วนต่างระหว่างราคาซื้อและขาย — มูลค่าที่ถูกดึงจากเทรดของคุณโดยตรง

ลำดับทั้งหมดนี้เกิดขึ้นภายในบล็อกเดียว

ตัวอย่างจริงของการโจมตี sandwich บน Ethereum DEX

ภาพด้านบนแสดงการโจมตี sandwich จริงที่จับได้บน Ethereum Uniswap V2 Pool สามธุรกรรมดำเนินการในเวลาเดียวกัน (06:28:23) ภายในบล็อกเดียวกัน:

  1. 1FaE13 (บอท MEV) ซื้อ DAT token มูลค่า $616.13 — front-run
  2. 8a23ff (เหยื่อ) ซื้อ DAT token มูลค่า $1.9 — ดำเนินการที่ราคาที่สูงขึ้นแล้ว
  3. 1FaE13 (บอท MEV) ขาย DAT token มูลค่า $617.84 — back-run จับกำไรประมาณ $1.71

เทรด $1.9 ของเหยื่อเล็ก แต่เพียงพอให้บอทดึงกำไร การโจมตีทั้งหมด — ซื้อ เหยื่อ ขาย — เกิดขึ้นในบล็อกเดียว

เมื่อไรเทรดของคุณกลายเป็นเป้าหมายการโจมตี Sandwich

ไม่ใช่ทุก swap จะถูก sandwich บอท MEV โจมตีเฉพาะเมื่อกำไรที่คาดหวังเกินต้นทุน เงื่อนไขต่อไปนี้ทำให้เทรดของคุณเป็นเป้าหมาย:

  • เทรดใหญ่เมื่อเทียบกับขนาดพูล swap $50 ในพูล $500 สภาพคล่องเคลื่อนราคาประมาณ 10% ขึ้นไป — เป้าหมายที่ทำกำไรสำหรับบอท sandwich $50 เดียวกันในพูล $5,000,000 สภาพคล่องแทบไม่เคลื่อนราคา ไม่คุ้มที่จะโจมตี
  • ค่า slippage tolerance สูง ตั้ง slippage 10% ขึ้นไปบอกว่าคุณยอมรับราคาที่แย่กว่ามาก ให้บอทมีพื้นที่มากขึ้นในการผลักราคาก่อนธุรกรรมจะถูกย้อนกลับ
  • โทเค็นสภาพคล่องต่ำ โทเค็นเพิ่งเปิดตัวและ memecoin มักมีพูลเล็ก แม้ swap พอประมาณก็สร้างการเคลื่อนไหวของราคาเพียงพอให้บอทใช้ประโยชน์

วิธีป้องกันการโจมตี Sandwich

1. ใช้การกำหนดเส้นทางธุรกรรมที่ป้องกัน MEV

การป้องกันที่มีประสิทธิภาพที่สุดคือป้องกันไม่ให้บอทเห็นธุรกรรมตั้งแต่แรก

  • บน Solana: Jito Bundle ข้าม pipeline ธุรกรรมสาธารณะและส่ง swap ตรงไปยัง Jito Block Engine ที่บอท MEV ไม่สามารถสังเกตได้ เครื่องมือเทรด Solana ส่วนใหญ่รองรับแล้ว — ถ้าเห็นช่อง "Jito Tip" ธุรกรรมถูกส่งผ่าน Jito Jito ยังมีกลไก jitodontfront ที่รับประกันว่าธุรกรรมต้องปรากฏเป็นอันดับแรกในทุก bundle ที่รวมอยู่
  • บน Ethereum และเชน EVM: บริการเช่น Flashbots Protect, MEV Blocker และ RPC ส่วนตัวส่งธุรกรรมผ่าน mempool ส่วนตัวแทนสาธารณะ วอลเล็ตและหน้า DEX บางตัวมีตัวเลือกนี้ในตัว

2. ตั้ง Slippage แน่น

Slippage tolerance กำหนดราคาที่แย่ที่สุดที่คุณยอมรับ ถ้าตั้ง slippage 1% ธุรกรรมจะล้มเหลวแทนที่จะดำเนินการที่ราคาแย่กว่าคาดมากกว่า 1%

สิ่งนี้จำกัดมาร์จินกำไรของบอท ถ้าบอทดึงได้เพียงเล็กน้อยก่อนธุรกรรมจะถูกย้อนกลับ การโจมตีจะไม่คุ้มหลังจากหักค่าธรรมเนียมและทิปของบอทเอง

สำหรับ swap ส่วนใหญ่ 1–3% slippage เพียงพอ เพิ่มเฉพาะสำหรับโทเค็นที่ผันผวนมากหรือระหว่างการเปิดตัวที่คุณยอมรับราคาที่แย่กว่า

3. แบ่งเทรดใหญ่

แทนที่จะ swap จำนวนมากในธุรกรรมเดียว แบ่งเป็น swap เล็กๆ แต่ละเทรดเล็กมีผลกระทบต่อราคาน้อยกว่า ทำให้แต่ละรายการดึงดูดบอท sandwich น้อยลง

ข้อเสียคือธุรกรรมและค่าธรรมเนียมมากขึ้น แต่การประหยัดจากการหลีกเลี่ยงการโจมตี sandwich มักเกินค่าใช้จ่ายเพิ่มเติม

4. หลีกเลี่ยงพูลสภาพคล่องต่ำมาก

ถ้าพูลมีสภาพคล่องต่ำมาก แม้เทรดเล็กก็สร้างผลกระทบต่อราคามหาศาล พูลเหล่านี้เป็นเป้าหมายง่ายที่สุดสำหรับบอท sandwich ตรวจสอบสภาพคล่องพูลบน DEXScreener, Birdeye หรือ DexTools ก่อน swap

5. ตรวจสอบธุรกรรมหลังจากทำ

เครื่องมือเช่น sandwiched.me ให้คุณตรวจสอบว่าวอลเล็ตถูกกระทบจากการโจมตี sandwich หรือไม่ การตรวจสอบธุรกรรมที่ผ่านมาช่วยระบุรูปแบบและปรับกลยุทธ์ — slippage แน่นขึ้น เทรดเล็กลง หรือเปลี่ยนไปใช้การกำหนดเส้นทางป้องกัน MEV

การโจมตี Sandwich vs. การลดราคาอื่นๆ

ไม่ใช่ทุกการสูญเสียหลังซื้อเป็นการโจมตี sandwich

  • การโจมตี sandwich: ราคาพุ่งก่อนธุรกรรมและลดทันทีหลังจาก — ภายในบล็อกเดียวกันหรือถัดไป บน block explorer จะเห็นการซื้อจำนวนมากก่อนของคุณและการขายจำนวนมากหลัง จากวอลเล็ตหรือโปรแกรมเดียวกัน
  • แรงขายปกติ: ราคาลดลงทีละน้อยในช่วงนาทีหรือชั่วโมงหลังซื้อ ผู้ถืออื่นกำลังขาย ซึ่งเป็นพฤติกรรมตลาดปกติ
  • Rug pull: นักพัฒนาถอนสภาพคล่องทั้งหมดจากพูล ราคาตกเกือบศูนย์ทันทีและโทเค็นซื้อขายไม่ได้

สรุป

การโจมตี sandwich ใช้ประโยชน์จากข้อเท็จจริงที่ว่าราคา DEX เคลื่อนตามขนาดเทรดเมื่อเทียบกับสภาพคล่องพูล และลำดับธุรกรรมในบล็อกถูกควบคุมโดย validator — ไม่ใช่กำหนดโดยใครส่งก่อน

เพื่อป้องกันตัวเอง: ใช้การกำหนดเส้นทางป้องกัน MEV (Jito บน Solana, Flashbots Protect บน Ethereum) ตั้ง slippage แน่น แบ่งเทรดใหญ่ และตรวจสอบสภาพคล่องพูลก่อน swap

FAQ

สามารถถูก sandwich บนเชนไหนก็ได้หรือไม่?

ได้ เชนใดก็ตามที่มี DEX แบบ AMM มีความเสี่ยง — Solana, Ethereum, BSC, Base, Polygon, Arbitrum และอื่นๆ ช่องโหว่มาจากวิธีที่ AMM คำนวณราคา ไม่ใช่จากเชนหรือ DEX เฉพาะ

slippage สูงหมายความว่าจะถูก sandwich หรือไม่?

ไม่โดยอัตโนมัติ แต่เพิ่มความเสี่ยงอย่างมาก slippage สูงบอกเครือข่ายว่าคุณยอมรับราคาที่แย่กว่า ซึ่งให้บอทมีพื้นที่มากขึ้นในการดึงกำไร รักษา slippage ให้ต่ำที่สุด

การโจมตี sandwich ผิดกฎหมายหรือไม่?

ไม่มีกรอบกฎหมายที่ชัดเจนในเขตอำนาจศาลส่วนใหญ่ บน Solana, Solana Foundation และ Jito ได้ดำเนินการกับ validator ที่มีส่วนร่วมในการโจมตี sandwich โดยถอดออกจากโปรแกรมมอบหมาย บน Ethereum, Flashbots และผู้ให้บริการโครงสร้างพื้นฐานอื่นทำงานเพื่อลดการสกัด MEV