blog

สรุปประเด็นสำคัญ

  • Sandwich attack คือการทำตลาดแบบ ‘แซนด์วิช’ ที่มักเกิดบน DEX ที่ใช้โมเดล AMM
  • ผู้โจมตีส่งคำสั่งซื้อก่อนและขายหลังจากผู้ใช้เป้าหมายทำธุรกรรม
  • การคำนวนกราฟราคาและค่า gas เป็นกุญแจสำคัญในการจัดลำดับการทำธุรกรรม
  • เครื่องมือเช่น MEV‑Searchers, Flashbots และการตั้งค่า slippage ช่วยให้ผู้ใช้ลดความเสี่ยง
  • การตรวจสอบ transaction pool และการใช้ private transaction สามารถป้องกันได้ในระดับหนึ่ง

พื้นฐานของ Sandwich Attack

เมื่อพูดถึง sandwich attack เป็น รูปแบบการโจมตีที่ทำกำไรจากการแทรกคำสั่งซื้อและขายรอบ ๆ ธุรกรรมของเหยื่อบนตลาดแบบกระจายศูนย์ (DEX) เราต้องเข้าใจว่า DEX ใช้ Automated Market Maker (AMM) ซึ่งรับฝากสภาพคล่องใน Liquidity Pool แทนการจับคู่คำสั่งซื้อ‑ขายแบบตรง ๆ

โมเดล AMM ทำให้ราคาสินทรัพย์เปลี่ยนแปลงตามอัตราส่วนของสภาพคล่อง (สูตร x·y=k) การเปลี่ยนแปลงนี้เปิดช่องให้ผู้โจมตีคำนวนราคาที่จะเกิดขึ้นหลังจากการทำธุรกรรมของเหยื่อและทำการ ‘แซนด์วิช’ ด้วยการซื้อก่อนและขายหลังโดยใช้ Front‑running เป็นกลยุทธ์พื้นฐาน

กลไกการทำงานของ Sandwich Attack

  1. สังเกต Transaction Pool - ผู้โจมตีตรวจสอบ mempool ของ Blockchain (เช่น Ethereum) เพื่อตรวจหา transaction ที่มีขนาด slippage สูงหรือหากเป็นการแลกเปลี่ยนจำนวนมาก
  2. คำนวนผลกระทบต่อราคา - โดยใช้สูตร AMM ผู้โจมตีประเมินว่าราคา token จะเปลี่ยนแปลงเท่าไหร่หลังจาก transaction ของเหยื่อทำเสร็จ
  3. ส่งคำสั่งซื้อก่อน (Front‑run) - ด้วยค่า Gas Price ที่สูงกว่าหรือใช้บริการ private transaction ผู้โจมตีทำให้การทำธุรกรรมของตนเข้าคิวก่อน
  4. เหยื่อทำธุรกรรม - ระบบ AMM ปรับราคาแล้วทำการแลกเปลี่ยนของเหยื่อตามราคาที่สูงขึ้น (หรือถูกลง) ตามที่คำนวนไว้
  5. ส่งคำสั่งขายหลัง (Back‑run) - ผู้โจมตีขาย token ที่ซื้อไว้ตอนขั้นที่ 3 ที่ราคาที่ดีกว่า ทำกำไรจากส่วนต่าง

ขั้นตอนทั้งหมดอาจทำให้เหยื่อเสียค่า slippage มากกว่าที่ตั้งใจไว้ และผู้โจมตีได้กำไรจากส่วนต่างของราคา

ขั้นตอน sandwich attack แสดงจากการสแกน mempool ไปยัง front‑run, victim, back‑run

ตัวอย่างขั้นตอนจริง

สมมติว่าผู้ใช้ A ต้องการซื้อ 10,000 USDC เป็น ETH บน Uniswap V3 (หนึ่งใน DEX ที่ใช้ AMM)

1. ผู้โจมตี B ตรวจพบ transaction ของ A ใน mempool
2. B คำนวนว่าการซื้อของ A จะทำให้ราคาของ ETH เพิ่มจาก 1,800 USD ไปเป็น 1,805 USD
3. B ส่ง transaction ซื้อ 5 ETH ก่อน A โดยตั้งค่า gas fee สูงกว่า
4. ระบบทำธุรกรรมของ B เสร็จ (ราคา 1,800 USD)
5. ตามมาด้วย transaction ของ A (ราคา 1,805 USD)
6. B ส่ง transaction ขาย 5 ETH หลัง A ที่ราคา 1,810 USD
7. กำไรของ B ≈ (1,810‑1,800)×5=50 USD

แม้ว่า A จะเห็นการแลกเปลี่ยนสำเร็จ แต่ค่า slippage ของเขาจะเพิ่มขึ้นจาก 0.1% ไปเป็น 0.3% ทำให้เสียเงินเพิ่ม

วิธีป้องกัน Sandwich Attack

  • ตั้งค่า slippage ต่ำ - ลดความเป็นไปได้ที่ราคาเปลี่ยนแปลงมากเกินไประหว่างประมวลผล
  • ใช้ private transaction (Flashbots) - ส่งธุรกรรมตรงไปยังผู้ขุดโดยไม่ให้เผยออกสู่ mempool
  • เพิ่มเวลาอนุมัติ (deadline) - กำหนดเวลาที่สั้นเพื่อให้ transaction หมดอายุก่อนที่ผู้โจมตีจะมีเวลาเตรียมการ
  • ตรวจสอบ MEV‑Searchers - ใช้เครื่องมือเช่นEtherscanหรือBlocknativeเพื่อตรวจจับ transaction ที่อาจเป็นการ front‑run
  • กระจายการเทรดผ่านหลาย DEX - แบ่งออเดอร์เป็นหลายส่วนเล็ก ๆ เพื่อลดผลกระทบต่อราคา

ผลกระทบต่อผู้ใช้และตลาด

Sandwich attack ไม่ได้ทำลายระบบโดยตรง แต่ส่งผลให้ผู้ใช้สูญเสียค่า slippage เพิ่มขึ้นและทำให้สภาพคล่องของ pool ถูกทำลายในบางกรณี ผู้พัฒนา DEX จึงต้องออกแบบกลไกป้องกัน MEV (Miner Extractable Value) อย่างเช่น GAS‑price auction หรือ Block‑builder collaboration เพื่อให้การแข่งขันในระดับ miner‑level มีความยุติธรรมมากขึ้น

ผู้ใช้ป้องกันการโจมตีด้วย shield โค้ดและหลาย DEX ที่ใช้ Flashbots

เครื่องมือวิเคราะห์และตรวจจับ

เปรียบเทียบเครื่องมือวิเคราะห์ MEV สำหรับ DEX
เครื่องมือประเภทฟีเจอร์หลักราคา (USD/เดือน)
BlocknativeAPI/SDKreal‑time mempool monitoring, gas‑price predictionFree‑tier / 199‑Premium
Etherscan MEV TrackerWeb Dashboardvisualize front‑run & sandwich patterns, alertsFree
Flashbots ProtectPrivate Relayส่ง transaction อย่างเป็นส่วนตัว, ลดการ front‑runFree (pay‑only gas)
MEV‑ExploreOpen‑sourceanalyze historical sandwich attacks, profit estimationFree

คำถามที่พบบ่อย

FAQ

Sandwich attack แตกต่างจาก front‑run อย่างไร?

Front‑run เพียงแค่แทรกคำสั่งซื้อหรือขายก่อน transaction เป้าหมาย ส่วน sandwich attack จะทำทั้งการซื้อก่อนและขายหลังเพื่อสร้างรูปแบบ ‘แซนด์วิช’ ทำให้ผู้โจมตีได้กำไรมากกว่าการทำแบบหน้าเดียว

การตั้งค่า slippage ต่ำทำให้ฉันเสี่ยงต่อ transaction fail หรือไม่?

ใช่ หากตลาดมีความผันผวนสูง ค่าที่ตั้งไว้ต่ำเกินไปอาจทำให้ transaction ถูกยกเลิก ซึ่งอาจเสียค่า gas ที่จ่ายแล้ว แต่จะช่วยลดโอกาสโดน sandwich attack

ฉันจะใช้ Flashbots อย่างไรเพื่อหลีกเลี่ยงการถูกแฮก?

ขั้นแรกต้องเชื่อมต่อ wallet ของคุณกับ relay ของ Flashbots ผ่านโค้ดหรือ UI ที่รองรับ (เช่นMEV‑Boost หรือethers.js). จากนั้นส่ง transaction ผ่าน private relay โดยไม่ให้เผยใน mempool ปกติ ซึ่งทำให้ผู้โจมตีไม่สามารถเห็นได้

MEV คืออะไรและทำไมมันถึงสำคัญกับ DEX?

MEV (Miner Extractable Value) หรือเรียกใหม่ว่า Maximal Extractable Value คือมูลค่าที่ผู้ตรวจสอบบล็อก (miner/validator) สามารถดึงออกมาจากการจัดลำดับ transaction ได้ การทำ sandwich attack คือหนึ่งรูปแบบของ MEV ที่ทำให้ผู้ใช้ DEX เสียค่า slippage และทำให้ตลาดสูญเสียประสิทธิภาพ

จะตรวจพบ sandwich attack ที่เกิดขึ้นกับกระเป๋าของฉันอย่างไร?

ใช้เครื่องมือเช่น Blocknative หรือ Etherscan MEV Tracker เพื่อติดตาม transaction ที่มีกำไรสูงจากการซื้อ‑ขายรอบ ๆ transaction ของคุณ หากพบว่ามีการเพิ่ม‑ลด token ทันทีหลังจากคุณทำ trade แสดงว่ามีการ sandwich attack

แชร์:

เขียนความคิดเห็น