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

Front-running บนเชน

Front-running บนเชนคือการใช้ข้อมูลของธุรกรรมที่รอดำเนินการเพื่อให้ธุรกรรมอีกชุดได้รับการประมวลผลก่อนและทำกำไร บทความนี้อธิบายผลของพูลธุรกรรมสาธารณะ การจัดลำดับ MEV slippage และการส่งแบบส่วนตัว

อัปเดต

เนื้อหานี้จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำหรือคำชี้แนะด้านการลงทุน การลงทุนอาจทำให้เกิดการขาดทุนได้

คำตอบโดยตรง

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

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

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

กลไกการทำงาน

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

Front-runner แบบทั่วไปมองหาคำสั่งเรียกที่สามารถคัดลอกมูลค่าได้ หากธุรกรรมเปิดเผยคำตอบหรือสิทธิ์ที่ไม่ได้ผูกกับผู้รับที่กำหนด บัญชีอื่นอาจสร้างคำสั่งเรียกซ้ำและพยายามให้ดำเนินการก่อน สัญญาสามารถป้องกันด้วยรูปแบบ commit-reveal และผูกสิทธิ์รับกับผู้รับเฉพาะ การบอกให้ผู้ใช้เพิ่มค่าธรรมเนียมเพียงอย่างเดียวไม่ช่วยปกป้องข้อมูลที่เปิดเผยแล้ว

ฟิลด์ค่าธรรมเนียมของ Ethereum เช่น maxPriorityFeePerGas และ maxFeePerGas มีผลต่อจำนวนที่ผู้ส่งยอมจ่าย แต่ไม่ได้ทำให้เนื้อหาธุรกรรมเป็นส่วนตัว และ Builder อาจประเมินบันเดิลแทนการเรียงทุกธุรกรรมด้วยฟิลด์ค่าธรรมเนียมเดียว ดังนั้น Front-running จึงเป็นปัญหาเรื่องข้อมูลและการจัดลำดับ ไม่ใช่แค่การแข่งขันราคา Gas

ตัวอย่าง

สมมติว่าพูล AMM มี 100 ETH และ 200,000 USDC ผู้ใช้ส่งธุรกรรมสาธารณะเพื่อซื้อ ETH ด้วย 10,000 USDC โดยตั้งค่าความคลาดเคลื่อน 5% ธุรกรรมที่รออยู่เปิดเผยทิศทาง ขนาด และผลลัพธ์ขั้นต่ำที่ยอมรับได้

Searcher จำลอง Swap แล้วส่งคำสั่งซื้อให้ดำเนินการก่อน ตามด้วยคำสั่งขายให้ดำเนินการหลัง หากทั้งสองรายการถูกจัดไว้รอบธุรกรรมของผู้ใช้ ผู้ใช้จะได้รับ ETH น้อยกว่ากรณีไม่มี sandwich แต่ยังอยู่ในขอบเขต 5% ส่วน Searcher เก็บส่วนต่างหลังหักค่าธรรมเนียม

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

ความเสี่ยงและการลดความเสี่ยง

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

  • กำหนดผลลัพธ์ขั้นต่ำหรือขีดจำกัดราคาที่สมเหตุสมผลตามความลึกของพูลและสภาวะปัจจุบัน อย่าขยาย slippage เพียงเพื่อบังคับให้ธุรกรรมสำเร็จ
  • ตรวจสอบผลกระทบต่อราคา สภาพคล่อง กฎการโอนโทเคน และเส้นทางก่อนลงนาม โดยเฉพาะธุรกรรมขนาดใหญ่ในพูลที่ตื้น
  • ใช้บริการส่งแบบส่วนตัวหรือป้องกัน MEV ที่น่าเชื่อถือเมื่อเหมาะสม พร้อมตรวจสอบการครอบคลุม Builder พฤติกรรมเมื่อเกิดข้อผิดพลาด นโยบายความเป็นส่วนตัว และสมมติฐานด้านความไว้วางใจ
  • ในการออกแบบโปรโตคอล อย่าใส่ความลับที่ให้สิทธิ์แก่ผู้มาก่อนไว้ในข้อมูลธุรกรรม ควรใช้การผูกกับผู้รับ commit-reveal การประมูลแบบเป็นชุด หรือกลไกที่เหมาะกับงาน

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

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

ความเชื่อผิด 1: จ่าย Gas มากขึ้นแล้วจะป้องกัน Front-running ได้

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

ความเชื่อผิด 2: การดำเนินการที่เสียเปรียบทุกครั้งคือการโจมตีแบบ sandwich

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

ความเชื่อผิด 3: Slippage เป็นศูนย์ปลอดภัยที่สุดเสมอ

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

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

แหล่งข้อมูล

การนำทาง

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