โพสต์ทั้งหมด
คู่มือ

การโจมตีแบบแซนด์วิช บน Solana และวิธีป้องกัน MEV

สวอปขึ้นว่าสำเร็จแต่เงินหายไปทีละนิด การโจมตีแบบแซนด์วิชทำอะไรในบล็อกเดียว และตั้ง slippage กับซอยไม้อย่างไรให้บอทไม่คุ้มที่จะกิน

อ่าน 19 นาที J Tools Editorial
ภาพประกอบเชิงบรรณาธิการสำหรับคู่มือการโจมตีแบบแซนด์วิชและการป้องกัน MEV บน Solana

หน้าจอขึ้นว่าสวอปสำเร็จ กราฟก็นิ่งเหมือนเดิม แต่จำนวนโทเคนที่เข้ากระเป๋าเงินน้อยกว่าตัวเลขที่เห็นตอนกดยืนยันอยู่นิดหนึ่ง ส่วนต่างไม่กี่ดอลลาร์ตรงนั้นมีชื่อเรียกของมัน คือการโจมตีแบบแซนด์วิช

ตัวเลขที่มีการรายงานกันประเมินว่าบอทแซนด์วิชดูดเงินออกจากเทรดเดอร์ทั่วไปบน Solana ไปแล้วราว 500 ล้านดอลลาร์ ทีละไม่กี่ดอลลาร์ ในขณะที่กราฟดูสงบ บทความนี้ไล่ว่าการโจมตีแบบแซนด์วิชทำอะไรในบล็อกเดียว ทำไม MEV ยังทำงานได้บน Solana และเกราะไหนที่ตั้งได้เลยวันนี้

การโจมตีแบบแซนด์วิชคืออะไร

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

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

  1. มันซื้อโทเคนตัวเดียวกัน ก่อนหน้าคุณ เพื่อดันราคาขึ้น
  2. ไม้ของคุณเข้าเป็นลำดับถัดมา จึงจับที่ราคาที่ถูกดันแล้ว
  3. บอท ขายทันที ที่ราคาซึ่งไม้ของคุณช่วยยกขึ้นไป แล้วเก็บส่วนต่างไป

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

MEV คืออะไร และทำไมยังเกิดบน Solana

เครื่องยนต์เบื้องหลังมีชื่อว่า MEV ย่อจาก Maximum Extractable Value คือเงินที่บอทคั้นออกมาจากการสลับลำดับหรือแทรกธุรกรรมรอบไม้ของคุณ ใครกำหนดลำดับธุรกรรมในบล็อกได้ คนนั้นมีโอกาสทำกำไรจากลำดับนั้น

ตรงนี้คนเข้าใจผิดกันบ่อย บน Ethereum ธุรกรรมที่รอยืนยันไปนั่งรวมกันในห้องรอสาธารณะที่เรียกว่า mempool ส่วน Solana ไม่มีห้องรอแบบนั้น ไม้ของคุณวิ่งผ่านผู้ให้บริการเชื่อมต่อ ซึ่งคือบริการที่ส่งธุรกรรมเข้าเครือข่าย แล้วตรงไปหา validator ที่จะสร้างบล็อกถัดไป แล้วบอทเห็นไม้ของคุณได้อย่างไร คำตอบคือมีรูรั่วสองรู

  • ผู้ให้บริการเชื่อมต่อบางรายส่งต่อไม้ที่รออยู่ของคุณให้เครือข่ายบอทที่ตกลงกันไว้แบบเงียบ ๆ
  • คิวของ validator ที่กำลังสร้างบล็อกถูกอ่านได้โดยบอทที่ทำงานร่วมกับมัน

ปัญหาบน Solana จึงไม่ใช่ห้องรอกระจก แต่เป็นประตูข้างสองบานที่เปิดค้างไว้ การโจมตีส่วนใหญ่ถูกยัดเข้ามาผ่าน Jito ซึ่งเปิดให้ส่งชุดธุรกรรมผนึกที่เรียกว่า bundle พร้อมลำดับตายตัวและทิป โดย validator จะรับทั้งชุดหรือไม่รับเลย

มีจุดพลิกที่ควรจำ กลไก bundle เดียวกับที่บอทใช้เอาเปรียบ กลายเป็นเกราะได้เมื่อคุณเป็นคนใช้เอง รายละเอียดว่ามันรับประกันอะไรบ้างอยู่ในบทความเรื่อง Jito bundle รับประกันอะไร ส่วนกฎรับทั้งชุดหรือไม่รับเลยเขียนไว้ตรง ๆ ในเอกสารทางการของ Jito

สิ่งที่เกิดขึ้นในเวลาไม่ถึงหนึ่งวินาที

ใส่ตัวเลขจริงให้ดู สมมติคุณจะสวอป SOL มูลค่า 1,000 ดอลลาร์ไปเป็นมีมคอยน์ตัวเล็ก โดยเปิดเพดานป้องกันราคาไว้กว้างสุด พอกดยืนยัน ลำดับข้างล่างนี้เกิดขึ้นในบล็อกเดียว

  • บอทเห็นคำสั่งซื้อ 1,000 ดอลลาร์ที่กำลังเข้ามา แล้วซื้อตัดหน้าคุณเสี้ยววินาที ดันราคาขึ้นราว 5%
  • ไม้ของคุณจับที่เรตที่แย่ลง จำนวนเหรียญที่ได้จึงน้อยกว่าที่หน้าจอบอกไว้ตอนแรก
  • บอทขายทิ้งทันทีที่ราคาซึ่งไม้ของคุณยกขึ้นไป แล้วเดินออกไปพร้อมเงินราว 40 ดอลลาร์

กระเป๋าเงินขึ้นว่าสวอปสำเร็จ มีมคอยน์ก็อยู่ในมือ เงิน 40 ดอลลาร์ที่รั่วไปมองไม่เห็น จนกว่าจะย้อนไปเทียบเรตที่คาดไว้กับเรตที่ได้จริง คูณด้วยหลักพันไม้ต่อวัน แล้วจะเห็นว่าตัวเลขที่รายงานกันมาจากไหน

slippage คือเกราะฟรีที่ทำงานหนักที่สุด

ถ้าจำจากบทความนี้ได้เรื่องเดียว ขอให้เป็น slippage มันคือระดับที่ราคาแย่ลงได้มากที่สุดก่อนที่ไม้จะยกเลิกตัวเอง เหมือนสั่งเพื่อนไว้ว่าซื้อขนมปังที่ 3 ดอลลาร์ แต่ถ้าเกิน 3 ดอลลาร์ 30 เซนต์เมื่อไรให้ข้ามไป

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

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

จะแคบแค่ไหนขึ้นกับความลึกของพูล พูลคือกองโทเคนสองฝั่งที่สวอปเข้าไปแลกด้วย พูลลึกอย่างคู่ SOL กับ USDC มีเงินข้างในเยอะ ไม้แทบไม่ขยับราคา เพดานจึงแคบได้ ส่วนมีมคอยน์ที่เพิ่งออกอยู่ในพูลบางและเหวี่ยงแรง ต้องเผื่อเพิ่มอีกหน่อย

ประเภทพูลตัวอย่างslippage ที่แนะนำ
พูลลึกและใหญ่SOL คู่กับ USDC0.5% ถึง 1%
พูลขนาดกลางโทเคนกลางที่ตั้งตัวได้แล้ว1% ถึง 2%
พูลบางและใหม่มีมคอยน์ที่เพิ่งออก2% ถึง 3%

ตั้ง slippage ไว้สูงลิ่วอย่าง 50% มีค่าเท่ากับตะโกนว่าจับไม้ให้ผมที่ราคาไหนก็ได้ เท่ากับเชิญบอทแซนด์วิชทุกตัวที่เฝ้าอยู่ให้เข้ามากิน ส่วนการตั้งบางเฉียบอย่าง 0.1% บนมีมคอยน์ที่วิ่งแรง แปลว่าไม้ถูกยกเลิกตลอดจากการแกว่งปกติ โดยไม่ได้การป้องกันกลับมา จับช่วงให้ตรงกับพูล

ภาพเปรียบเทียบรางน้ำที่เปิดโล่งกับวาล์วทางเดียวที่ปิดลงหลังหยดน้ำ สื่อว่าเพดาน slippage ที่แคบจำกัดสิ่งที่ถูกดูดออกไปได้

ตัวเลขละเอียดกว่านี้แยกตามโทเคนและเส้นทางอยู่ในคู่มือเลือกค่า slippage ให้ถูกกับพูล

สี่ขั้นตอนเลี่ยงการโจมตีแบบแซนด์วิช

ไม่ต้องเป็นผู้เชี่ยวชาญก็ปลอดภัยได้ นี่คือสี่ขั้นตอนสำหรับคนที่เทรดปกติ

  1. ตั้ง slippage ให้แคบ ตามช่วงในตารางด้านบน ลำพังข้อนี้ก็ปัดการโจมตีส่วนใหญ่ที่เล็งไม้เล็กออกไปแล้ว
  2. ใช้สวอปคลิกเดียวที่หาเส้นทางอย่างซื่อสัตย์ เครื่องมือสวอปโทเคนคลิกเดียว จัดเส้นทางผ่าน Jupiter แสดงราคาเสนอสดก่อนคุณกดยืนยัน และรันการตรวจการทำงานบนเชนให้ด้วย
  3. เทรดทีละไม้เล็ก หรือซอยไม้ใหญ่ออกเป็นชิ้น บอทแซนด์วิชส่วนใหญ่ข้ามไม้ที่เล็กกว่าราว 500 ถึง 1,000 ดอลลาร์ เพราะค่าธรรมเนียมเครือข่ายบวกทิปกินกำไรจนหมด เครื่องมือซอยสวอปหลายกระเป๋าเงิน รันสวอปเดียวกันข้ามหลายกระเป๋าตามลำดับที่กำหนดไว้เป๊ะ ไม้ก้อนโตจึงกลายเป็นชิ้นเล็กที่ลอดใต้เกณฑ์ของบอท ค่าธรรมเนียมปัจจุบันแสดงอยู่บนหน้าเครื่องมือ
  4. ดูพูลก่อนแตะ โทเคนที่ความเป็นเจ้าของกระจุกอยู่ในไม่กี่กระเป๋าเงินคือพูลที่ปั่นง่ายกว่า เครื่องมือสแนปช็อตผู้ถือโทเคน แสดงว่าใครถืออยู่บ้างและกระจุกแค่ไหน

ข้อที่ปลอบใจมือใหม่ได้มากที่สุดคือบอทมักไม่สนใจไม้เล็ก สวอป 50 หรือ 100 ดอลลาร์ด้วย slippage ที่สมเหตุสมผล แทบแน่ใจได้ว่าอยู่ต่ำกว่าเรดาร์ อันตรายเริ่มตอนที่ไม้ใหญ่พอจะคุ้มแรงบอท

อะไรเปลี่ยนไปในปี 2026

ปีนี้ฝั่งตั้งรับก็ขยับเยอะ มีสามอย่างที่กำลังเปลี่ยนเกมของบอทแซนด์วิชบน Solana

  • Jito DontFront บังคับให้ไม้ของคุณอยู่หัวแถวสุดของ bundle ปิดท่าซื้อตัดหน้าแบบง่าย ๆ ไปได้ ช่วยได้เยอะ แต่ไม่ได้หยุดทุกรูปแบบที่กว้างกว่านั้น
  • JitoBAM หรือ mempool แบบเข้ารหัส เก็บไม้ของคุณเป็นความลับด้วยฮาร์ดแวร์ที่ปลอดภัย จนถึงวินาทีที่มันทำงานจริง บอทวางแผนกับสิ่งที่มันอ่านไม่ได้ไม่ถูก ตอนนี้กำลังทยอยเปิดใช้
  • อัปเกรด Alpenglow ที่ยังทำอยู่ ดึงจุดที่ธุรกรรมกลายเป็นถาวรหรือ finality ลงมาต่ำกว่าราว 150 มิลลิวินาที เร็วกว่าเดิมราว 100 เท่า ช่องเวลาที่บอทอาศัยอยู่จึงถูกบีบ

ไม่มีอันไหนเป็นปุ่มวิเศษ การป้องกันเป็นการซ้อนหลายชั้น และชั้นไหนเหมาะกับใครขึ้นกับขนาดไม้และความลึกของพูล

สถานการณ์ของคุณการป้องกันที่พอดี
ไม้เล็ก ต่ำกว่าราว 500 ดอลลาร์slippage แคบอย่างเดียวมักพอ บอทมักข้ามคุณไป
ไม้เดี่ยวก้อนใหญ่ ตั้งแต่ 1,000 ดอลลาร์ขึ้นไปslippage แคบ บวกการซอยไม้ข้ามหลายกระเป๋าเงิน
เทรดมีมคอยน์ใหม่ที่พูลบางดูพูลก่อน แล้วตั้ง 2% ถึง 3%
เข้าพร้อมกันตอนเปิดตัว สำหรับคนที่ชำนาญแล้วทำ bundle ผนึกของคุณเอง เพื่อไม่ให้สไนเปอร์แทรกเข้ามา

ขั้นสูง สำหรับคนเปิดตัวโทเคนและคนรันหลายกระเป๋าเงิน

หัวข้อนี้เป็นของคนที่กำลังเปิดตัวโทเคนหรือคุมกระเป๋าเงินหลายใบพร้อมกัน ถ้าคุณเทรดปกติ ข้ามไปได้เลย

ตอนเปิดตัวโทเคนแล้วอยากให้กระเป๋าเงินหลายใบของคุณเข้าให้สวย เส้นทางที่เปิดโล่งจะเหลือช่องให้สไนเปอร์ ซึ่งคือบอทที่แข่งกันซื้อวินาทีที่โทเคนมีชีวิต

การส่ง bundle ผนึกของคุณเอง ซึ่งเป็นชุดลำดับตายตัวที่ validator รับทั้งชุดหรือไม่รับเลย เท่ากับล็อกลำดับไม้ของคุณไว้ ไม่มีบอทข้างนอกแทรกเข้ามาระหว่างกลางได้ วันเปิดตัวกระเป๋าเงินทุกใบจึงลงพร้อมกัน วิธีที่บอทพวกนี้ทำงานอยู่ในบทความเรื่อง sniper bot ทำงานอย่างไร

ภาพแถวกระเป๋าเงินที่ไหลรวมเข้าเป็น bundle ผนึกเดียว โดยมีเงาบอทจาง ๆ ถูกกันไว้นอกวงเล็บ

เครื่องมือเทรดแบบบันเดิล ซื้อจากหลายกระเป๋าเงินในบล็อกเดียวกันผ่าน Jito bundle รองรับ Raydium, Pump.fun และ Moonshot แนวคิดลำดับผนึกอันเดียวกันใช้กับขาออกได้ด้วย ค่าธรรมเนียมปัจจุบันแสดงอยู่บนหน้าเครื่องมือ

สิ่งที่ดูเหมือนการป้องกันแต่ไม่ใช่

มีทริกยอดนิยมไม่กี่อย่างที่ให้แค่ความรู้สึกปลอดภัยปลอม

  • ปิดการตรวจ preflight การปิดด่านตรวจก่อนส่งไม่ได้ซ่อนไม้ของคุณจากบอท มันแค่ถอดราวกันตกออกหนึ่งชั้น
  • เทรดตอนตีสาม บอทไม่นอน มันคือซอฟต์แวร์ที่รันบนเซิร์ฟเวอร์ยี่สิบสี่ชั่วโมง ชั่วโมงที่เงียบสำหรับคนคือชั่วโมงปกติของมัน
  • ตราที่เขียนว่าปลอดแซนด์วิช ภาษาการตลาดไม่ใช่การรับประกัน ถ้าถามว่ามันทำงานอย่างไรแล้วคำตอบคลุมเครือ ให้มองว่าเป็นของประดับ
  • ตั้ง slippage 0.1% กับทุกอย่าง บนพูลลึกก็พอไหว แต่บนมีมคอยน์ที่บาง มันแค่ทำให้ไม้พังตลอดเวลาในขณะที่คุณคิดว่าตัวเองปลอดภัย

แซนด์วิช front-running และ back-running ต่างกันอย่างไร

สามคำนี้ถูกใช้ปนกันบ่อย แต่อธิบายท่าที่ต่างกันของบอท

  • front-running คือคำสั่งซื้อเดี่ยวที่วางไว้หน้าไม้ของคุณ บอทเข้าก่อนแล้วขี่ราคาที่ไม้ของคุณดันขึ้น
  • back-running คือคำสั่งเดี่ยวที่วางไว้หลังไม้ของคุณ มักเพื่อเก็บช่องว่างราคาที่ไม้ของคุณเปิดไว้ และบ่อยครั้งไม่ได้ทำให้คุณเสียอะไรโดยตรง
  • การโจมตีแบบแซนด์วิช คือทำทั้งสองอย่างพร้อมกัน บอทซื้อตัดหน้า ปล่อยให้ไม้ของคุณดันราคาขึ้น แล้วขายกลับเข้ามาในช่อง slippage ที่คุณเปิดไว้เอง

ทุกแซนด์วิชมี front-running อยู่ข้างใน แต่ไม่ใช่ทุก front-running จะเป็นแซนด์วิช ขาขายปิดท้ายจะคุ้มก็ต่อเมื่อเพดานของคุณเหลือช่องพอให้มัน บีบช่องนั้นแล้วแซนด์วิชก็ไม่คุ้มแรงบอทอีกต่อไป

คำถามที่พบบ่อยเรื่องการโจมตีแบบแซนด์วิช

โดนแซนด์วิชแล้วขอเงินคืนได้ไหม

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

ไม้เล็ก ๆ โดนแซนด์วิชด้วยหรือเปล่า

นาน ๆ ครั้ง บอทแซนด์วิชส่วนใหญ่ข้ามไม้ที่ต่ำกว่าราว 500 ถึง 1,000 ดอลลาร์ เพราะค่าธรรมเนียมเครือข่ายกับทิปกินกำไรจนหมด สวอป 100 ดอลลาร์ที่ตั้ง slippage สมเหตุสมผลมักไม่คุ้มแรงบอท

ใช้ RPC ส่วนตัวแล้วกันแซนด์วิชได้ไหม

ได้บางส่วน Solana ไม่มี mempool สาธารณะ รูรั่วจึงมาจากผู้ให้บริการที่แชร์ออเดอร์โฟลว์ และจากคิวของ validator ที่สร้างบล็อก ผู้ให้บริการที่เก็บไม้ของคุณเงียบไว้ช่วยลดการเปิดเผยได้ แต่งานหนักส่วนใหญ่ยังเป็นของ slippage ที่แคบ

Jito กันการโจมตีแบบแซนด์วิชได้ไหม

ได้บางส่วน กฎหัวแถวอย่าง DontFront ดันไม้ของคุณไปอยู่หน้าสุดของ bundle จึงปิดท่าซื้อตัดหน้าแบบคลาสสิก แต่มันไม่ลบทุกรูปแบบ และไม่ได้มาแทนการตั้ง slippage ให้พอดี ถ้าเป็นสวอปเดี่ยวธรรมดา คุณไม่ต้องใช้ bundle เลย

ควรตั้ง slippage แคบแค่ไหน

พูลเป็นคนตอบ บนคู่ลึกอย่าง SOL กับ USDC ที่ 0.5% ถึง 1% จับได้และยังกันราคาแย่ให้ด้วย โทเคนกลางที่ตั้งตัวแล้วใช้ 1% ถึง 2% ส่วนมีมคอยน์ที่เพิ่งออกอยู่ที่ 2% ถึง 3% ถ้าไม้หนึ่งต้องกว้างกว่านั้นมากถึงจะผ่าน ให้ลดขนาดคำสั่งแทนการเปิดเพดาน

ไม้ถัดไปควรเริ่มจากอะไร

สามอย่างพอ จับเพดานให้ตรงกับความลึกของพูล ซอยเงินก้อนใหญ่เป็นหลายชิ้น และถ้าเป็นโทเคนที่เพิ่งเจอ ให้ดูการกระจายของผู้ถือก่อน ส่วน bundle ผนึกเก็บไว้ใช้ตอนเปิดตัวโทเคนก็พอ

สรุปสำหรับเทรดเดอร์ทั่วไป

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

วิธีอ่านความลึกของพูลอยู่ในบทความเรื่องความลึกของ liquidity pool ส่วนจะเลือกสวอปที่ไหนดูได้จากการเทียบ Jupiter, Raydium และ Orca

บทความนี้มีไว้เพื่อให้ความรู้ ไม่ใช่คำแนะนำทางการเงิน การเทรดโทเคนมีความเสี่ยงจริงรวมถึงการสูญเงินทั้งก้อน และไม่มีการป้องกันใดลบความเสี่ยงนั้นออกไปได้ หาข้อมูลเอง ตัดสินใจเอง และเทรดเท่าที่รับความเสียหายไหว

J
ผู้เขียน
J Tools Editorial

โพสต์จากทีม J Tools

ดูโพสต์ทั้งหมดของ J Tools Editorial →

โพสต์ที่เกี่ยวข้อง