ข้ามไปยังเนื้อหา

การโจมตีแบบแซนด์วิช

วิธีที่ผู้ค้นหาวางธุรกรรมก่อนและหลัง swap ที่รอดำเนินการ ทำให้ผู้ใช้ได้ราคาแย่ลง และดึงมูลค่าจากลำดับธุรกรรม

อัปเดต

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

คำตอบโดยตรง

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

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

วิธีการทำงาน

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

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

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

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

การส่งแบบส่วนตัว กระแสคำสั่งที่มีการป้องกัน การประมูลแบบชุด การดำเนินการตาม intent และการแบ่งคำสั่งอาจลดความเสี่ยงในบางระบบ การป้องกันขึ้นกับตัวกลางที่เห็นคำสั่ง ขอบเขตของ builder พฤติกรรม fallback สภาพคล่อง ค่าธรรมเนียม และการนำไปใช้ ป้าย “ส่วนตัว” หรือ “ป้องกัน MEV” จึงไม่ใช่การรับประกันสากล

ตัวอย่าง

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

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

ความเสี่ยง

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

มาตรการลดความเสี่ยงมีข้อแลกเปลี่ยน คำสั่งเล็กลงอาจเสียค่าธรรมเนียมรวมมากขึ้นหรือเปิดเผยกลยุทธ์ที่ทำซ้ำ ข้อจำกัดเข้มงวดอาจเพิ่มการ revert เส้นทางส่วนตัวเพิ่มคำถามเรื่องความไว้วางใจ การเซ็นเซอร์ log และ fallback ส่วนอินเทอร์เฟซที่มีการป้องกันอาจครอบคลุมเฉพาะบางเครือข่ายหรือเส้นทาง ควรตรวจจำนวนรับขั้นต่ำที่ลงนาม กำหนดเวลา เส้นทาง นโยบาย endpoint receipt และ finality ที่ต้องการ แทนการพึ่งป้ายการป้องกัน

ความเข้าใจผิดที่พบบ่อย

  • การเคลื่อนไหวของราคาที่เสียเปรียบทุกครั้งคือการโจมตีแบบแซนด์วิช ผลกระทบต่อราคาตามปกติ การเคลื่อนไหวของตลาด การเปลี่ยนเส้นทาง และการทำอาร์บิทราจก็ทำให้ผลต่างจากราคาประเมินได้ การระบุว่าเป็นแซนด์วิชต้องมีหลักฐานลำดับธุรกรรม
  • ผู้โจมตีเพียงขโมยโทเค็นจากกระเป๋า แซนด์วิชทั่วไปเปลี่ยนสถานะพูลรอบ swap ที่ได้รับอนุญาต ธุรกรรมของผู้โจมตีไม่จำเป็นต้องโอนสินทรัพย์โดยตรงจากกระเป๋าของผู้ใช้
  • ตั้งค่าความทนทานต่อ slippage เท่าใดก็ป้องกันได้ จำนวนรับขั้นต่ำจำกัดความเสียหายที่ยอมรับ แต่ผู้ค้นหายังปรับการโจมตีให้ swap สำเร็จใกล้ขอบเขตนั้นได้
  • การส่งแบบส่วนตัวกำจัด MEV อาจซ่อนคำสั่งจากพูลสาธารณะ แต่ผู้ให้บริการ RPC relay builder solver หรือ fallback สาธารณะยังอาจเห็นหรือมีอิทธิพลต่อคำสั่ง
  • Receipt ที่สำเร็จพิสูจน์ว่าดำเนินการอย่างเป็นธรรม ความสำเร็จพิสูจน์เพียงว่าเงื่อนไขสัญญาผ่าน ไม่ได้พิสูจน์ว่าผู้ใช้ได้ราคาดีที่สุดหรือหลีกเลี่ยงลำดับที่สร้างความเสียหาย

หัวข้อที่เกี่ยวข้อง

แหล่งที่มา

การนำทาง

ค้นหาในวิกิ...