สวอป DEX: ผลกระทบต่อราคา สลิปเพจ และ MEV
เรียนรู้ว่าความลึกของพูลส่งผลต่อผลกระทบด้านราคาอย่างไร จำนวนรับขั้นต่ำใช้จำกัดสวอปที่รอดำเนินการอย่างไร และเหตุใดค่าความคลาดเคลื่อนที่กว้างจึงอาจยอมให้ได้ผลการดำเนินการที่แย่ลง
ในคู่มือนี้ผลกระทบต่อราคา สลิปเพจ และค่าความคลาดเคลื่อนตอบคนละคำถาม
สรุปสั้น
ราคาเสนอของ DEX เปลี่ยนได้จากสองสาเหตุ คือสวอปของคุณทำให้ราคาพูลขยับเอง หรือมีธุรกรรมอื่นทำให้ราคาเปลี่ยนก่อนธุรกรรมของคุณจะดำเนินการ ผลกระทบต่อราคาอธิบายสาเหตุแรก ส่วนสลิปเพจคือการเปลี่ยนแปลงระหว่างราคาเสนอและผลลัพธ์จริง ค่าความคลาดเคลื่อนของสลิปเพจกำหนดขอบเขตของผลลัพธ์ แต่ไม่ได้รับประกันราคาที่ดีกว่า
ผลกระทบต่อราคา สลิปเพจ และค่าความคลาดเคลื่อนตอบคนละคำถาม
ผลกระทบต่อราคาเกิดขึ้นเมื่อคำสั่งของคุณมีขนาดใหญ่เมื่อเทียบกับสภาพคล่องที่ใช้ได้ และตัวคำสั่งทำให้ราคาพูลเปลี่ยนไป ราคาเสนอที่สมจริงรวมผลนี้ไว้แล้ว โดยคำสั่งขนาดใหญ่ในพูลที่มีสภาพคล่องตื้นมักได้ราคาเฉลี่ยแย่กว่าคำสั่งเล็ก สลิปเพจคือส่วนต่างระหว่างจำนวนที่คาดไว้ตอนสร้างราคาเสนอกับผลที่ได้เมื่อธุรกรรมดำเนินการ สวอปอื่น การเคลื่อนไหวของตลาด ความล่าช้า หรือเส้นทางที่ต่างออกไปอาจเปลี่ยนผลลัพธ์ระหว่างรอ
ค่าความคลาดเคลื่อนของสลิปเพจเป็นเงื่อนไขที่สวอปต้องผ่าน สำหรับสวอปที่กำหนดจำนวนโทเคนขาเข้าไว้แน่นอน มักระบุเป็นจำนวนรับขั้นต่ำ หากผลการดำเนินการต่ำกว่าค่านั้น สัญญาอาจย้อนธุรกรรมได้ ค่านี้ไม่ได้ลบผลกระทบต่อราคาที่รวมอยู่ในราคาเสนอแล้ว และไม่ได้บอกว่าจะเกิดสลิปเพจมากเท่าใด คู่มือ Uniswap เรื่องผลกระทบต่อราคาและสลิปเพจของราคา ก็แยกสองแนวคิดนี้เช่นกัน แต่ละอินเทอร์เฟซอาจใช้วิธีคำนวณหรือป้ายกำกับต่างกัน
เหตุใดราคาเสนอของ AMM จึงแย่ลงเมื่อคำสั่งใหญ่ขึ้น
ตลาดที่ใช้สมุดคำสั่งจับคู่คำสั่งซื้อและขายที่รออยู่ในราคาต่าง ๆ ส่วนผู้ดูแลสภาพคล่องอัตโนมัติแบบผลคูณคงที่คำนวณสวอปจากเงินสำรองของโทเคนในพูล ในแบบจำลองอย่างง่ายที่มีสองโทเคน จะมีความสัมพันธ์ x × y = k การซื้อโทเคนหนึ่งจำนวนมากขึ้นทำให้โทเคนนั้นออกจากพูลมากขึ้นและเพิ่มโทเคนอีกชนิดเข้ามา อัตราแลกเปลี่ยนจึงเปลี่ยนระหว่างธุรกรรม ยิ่งคำสั่งมีขนาดใหญ่เมื่อเทียบกับสภาพคล่องที่ใช้ได้ ราคาเฉลี่ยก็ยิ่งแย่ลง
นี่เป็นแบบจำลอง ไม่ใช่กฎสากลของ DEX ทุกแห่ง เอกสารสำหรับนักพัฒนาของ Uniswap อธิบายโครงสร้างผลคูณคงที่ของ v2 และแยกจากสภาพคล่องแบบกระจุกตัวตามช่วงราคาใน v3 และ v4 ซึ่งอาจมี hooks และกฎค่าธรรมเนียมแบบอื่นด้วย ราคาเสนออาจรวมหลายพูลหรือหลายแพลตฟอร์มไว้ด้วยกัน ให้เปรียบเทียบจำนวนที่คาดว่าจะได้รับสำหรับขนาดคำสั่งและเส้นทางนี้โดยเฉพาะ แทนการดูราคาล่าสุดในกราฟหรือมูลค่ารวมในพูล ดูกลไกได้ในเอกสารสวอปของ Uniswap v2

ตัวอย่างคำนวณ: สวอป 10,000 USDC กับพูลที่มีสภาพคล่องตื้น
สมมติว่าพูลตัวอย่างมี 100 ETH และ 200,000 USDC ไม่มีค่าธรรมเนียมสวอปหรือการเปลี่ยนแปลงราคาจากภายนอก และเป็นไปตามเส้นโค้งผลคูณคงที่ อัตราเริ่มต้นคือ 200,000 ÷ 100 = 2,000 USDC ต่อ ETH เมื่อนำเข้า 10,000 USDC เงินสำรอง USDC เพิ่มเป็น 210,000 เพื่อรักษาผลคูณ เงินสำรอง ETH ลดลงเป็น 20,000,000 ÷ 210,000 หรือประมาณ 95.238095 ETH ผู้ใช้ได้รับประมาณ 4.761905 ETH
ที่อัตราเริ่มต้น 10,000 USDC จะซื้อได้ 5 ETH ส่วนต่าง 0.238095 ETH คิดเป็นประมาณ 4.76% ของจำนวนที่ได้หากไม่มีผลกระทบต่อราคา ราคาเฉลี่ยที่ดำเนินการคือ 10,000 ÷ 4.761905 = 2,100 USDC ต่อ ETH สูงกว่าอัตราก่อนสวอป 5% ราคาส่วนเพิ่มของพูลหลังธุรกรรมคือ 210,000 ÷ 95.238095 = 2,205 USDC ต่อ ETH ส่วนต่างจากจำนวนที่ไม่มีผลกระทบ ราคาเฉลี่ย และราคาส่วนเพิ่มใหม่เป็นการเปรียบเทียบคนละแบบ ราคาเสนอจริงยังรวมค่าธรรมเนียมและรูปแบบสภาพคล่องของเส้นทางด้วย นี่เป็นการคำนวณสมมติ ไม่ใช่การคาดการณ์ตลาด
แยกค่าธรรมเนียมพูลออกจากผลของเส้นโค้ง
ใช้เงินสำรองสมมติชุดเดิม แต่สมมติว่ามีค่าธรรมเนียม 0.30% จากจำนวนขาเข้าตามวิธีคิดค่าธรรมเนียมแบบหนึ่ง จำนวนที่ใช้คำนวณราคาแบบผลคูณคงที่จึงเป็น 10,000 × (1 − 0.003) = 9,970 USDC ผลลัพธ์คือ 100 × 9,970 ÷ (200,000 + 9,970) หรือประมาณ 4.748297 ETH ซึ่งน้อยกว่าผลลัพธ์ 4.761905 ETH ที่ไม่คิดค่าธรรมเนียมบนเส้นโค้งเดียวกันประมาณ 0.013607 ETH เมื่อเทียบกับ 5 ETH ตามอัตราเริ่มต้น ส่วนต่างรวมอยู่ที่ประมาณ 0.251703 ETH หากใช้ผลลัพธ์แบบไม่คิดค่าธรรมเนียมเป็นขั้นกลาง จะจัดส่วนต่างประมาณ 0.238095 ETH ให้กับผลของเส้นโค้ง และอีก 0.013607 ETH ให้กับการปรับค่าธรรมเนียม การแบ่งเช่นนี้ขึ้นอยู่กับฐานเปรียบเทียบที่เลือก
อัตรา 0.30% เป็นเพียงสมมติฐาน ไม่ใช่ค่าธรรมเนียมมาตรฐานของ DEX ทุกแห่ง การปรับจำนวนขาเข้านี้สอดคล้องกับวิธีคำนวณค่าธรรมเนียมในไลบรารี getAmountOut ของ Uniswap v2 อย่างไรก็ตาม สัญญาบันทึกจำนวนขาเข้าทั้งหมดไว้ในเงินสำรอง ดังนั้นการใช้ 9,970 USDC เป็นจำนวนขาเข้าที่มีผลในสูตรไม่ได้หมายความว่ามีเงินเพียงเท่านี้เข้าสู่พูล พูลอื่นอาจใช้อัตราหรือฐานคิดค่าธรรมเนียมต่างกัน หรือรวมหลายรายการเข้าด้วยกัน เส้นทางหลายช่วงอาจมีค่าธรรมเนียมในแต่ละพูล นอกเหนือจากค่าอินเทอร์เฟซและค่าเครือข่าย ตรวจสอบเส้นทางจริงและรายละเอียดค่าธรรมเนียม แทนการนำเปอร์เซ็นต์นี้ไปใช้กับทุกสวอป
จำนวนรับขั้นต่ำคือขอบเขต ไม่ใช่ผลที่เสนอไว้
สมมติว่าเส้นทางเสนอ 4.7619 ETH สำหรับจำนวนขาเข้าเดียวกัน และอินเทอร์เฟซกำหนดค่าความคลาดเคลื่อน 1% จำนวนรับขั้นต่ำจะอยู่ที่ประมาณ 4.7143 ETH: 4.7619 × (1 − 0.01) หากดำเนินการแล้วได้ 4.72 ETH ก็ผ่านขอบเขต แต่ถ้าได้ 4.70 ETH จะต่ำกว่าเกณฑ์และสวอปอาจถูกย้อนตามเงื่อนไขป้องกันของเส้นทางนั้น ราคาเสนอหลักยังคงเป็น 4.7619 ETH จำนวนขั้นต่ำเป็นเพียงผลลัพธ์ที่แย่ที่สุดซึ่งธุรกรรมที่ส่งไปยอมรับได้
ขอบเขตที่แคบกว่าอาจทำให้สวอปที่ถูกต้องล้มเหลวเมื่อราคาเปลี่ยนระหว่างเครือข่ายติดขัดหรือเมื่อราคาเสนอเก่าเกินไป ขอบเขตที่กว้างกว่าจะยอมรับผลที่แย่ลงก่อนธุรกรรมถูกปฏิเสธ เอกสารสำหรับนักพัฒนาของ Uniswap อธิบายผลลัพธ์ขั้นต่ำว่าเป็นเงื่อนไขป้องกัน แต่การตั้งค่าและวิธีที่ธุรกรรมล้มเหลวขึ้นอยู่กับเราเตอร์หรือผลิตภัณฑ์ ธุรกรรมที่ถูกรวมในบล็อกแล้วถูกย้อนอาจยังมีค่าใช้จ่ายเครือข่ายตามเชนและขั้นตอน อย่าเพิ่มค่าความคลาดเคลื่อนเพียงเพื่อให้ข้อความผิดพลาดหายไป ให้ตรวจว่าราคาเสนอ โทเคน เส้นทาง ค่าธรรมเนียม หรือสภาวะเครือข่ายเปลี่ยนไปหรือไม่ก่อน
ระหว่างรอมีความเคลื่อนไหวที่ไม่ได้อยู่ในราคาเสนอ
ระหว่างลงนามและถูกรวมในบล็อก สวอปอื่นอาจเปลี่ยนเงินสำรองได้ การทำอาร์บิทราจอาจขยับราคาพูลให้ใกล้กับราคาในตลาดอื่น ส่วนความเคลื่อนไหวรวดเร็วอาจทำให้ราคาเสนอเดิมไม่สมจริง แม้คำสั่งของคุณไม่เปลี่ยน จำนวนสุดท้ายที่ได้รับก็อาจเปลี่ยนได้ การเสนอค่า gas สูงขึ้นอาจมีผลต่อลำดับความสำคัญในการรวมธุรกรรมในบางเชน แต่ไม่รับประกันเวลาหรือราคา วันหมดอายุอาจปฏิเสธธุรกรรมที่รอนานเกินไป แต่ไม่ได้รักษาราคาเสนอเดิมไว้
แยกค่าประมาณตอนขอราคาออกจากข้อมูลธุรกรรมสุดท้าย ผลกระทบต่อราคาคือผลที่คาดว่าคำสั่งจะมีต่อสภาพคล่องของเส้นทาง การเปลี่ยนแปลงเพิ่มเติมหลังสร้างราคาเสนอคือสลิปเพจการดำเนินการตามค่าอ้างอิงที่อินเทอร์เฟซใช้ บางอินเทอร์เฟซรวมสองอย่างไว้ในคำเตือนเดียวหรือใช้เกณฑ์เปรียบเทียบอื่น หากต้องการตรวจย้อนหลัง ให้จดราคาเสนอ เวลา เส้นทาง และจำนวนรับขั้นต่ำก่อนลงนาม
ค่าความคลาดเคลื่อนที่กว้างอาจเปิดช่องให้ sandwich MEV
Sandwich เป็นรูปแบบหนึ่งของมูลค่าที่ดึงออกมาได้สูงสุด (MEV) ผู้ค้นหาโอกาสเห็นสวอปที่รอดำเนินการ ส่งธุรกรรมก่อนหน้าเพื่อขยับราคาพูลให้เสียเปรียบผู้ใช้ ปล่อยให้สวอปของผู้ใช้ทำงาน แล้วส่งธุรกรรมทิศทางตรงกันข้ามเพื่อปิดสถานะ ผู้ใช้อาจได้รับมากกว่าขั้นต่ำที่ตั้งไว้ แต่ยังได้ราคาแย่กว่าราคาเสนอเริ่มต้น ขอบเขตผลลัพธ์ที่เข้มงวดอาจย้อนการดำเนินการที่ไม่เป็นผลดีบางกรณี แต่ไม่หยุดทุกกลยุทธ์จัดลำดับธุรกรรมหรือการเคลื่อนไหวปกติของตลาด
คู่มือ MEV ของ Ethereum.org อธิบายการจัดลำดับแบบ sandwich และเหตุใดผู้ใช้ที่ได้รับผลกระทบจึงได้ราคาแย่ลง MEV ไม่ได้เป็นการโจมตีทั้งหมด: อาร์บิทราจอาจทำให้ราคาพูลเข้าใกล้ตลาดอื่น แต่ sandwich อาจทำให้ผลการดำเนินการของผู้ใช้แย่ลง เส้นทางธุรกรรมส่วนตัวอย่าง Flashbots Protect อธิบายมาตรการป้องกันและเงื่อนไขของตนเอง ขอบเขตขึ้นกับเชนและผู้ให้บริการ ไม่รับประกันราคาเฉพาะ และเพิ่มการพึ่งพาเส้นทางธุรกรรมอีกทางหนึ่ง ตรวจสอบเครือข่ายและเงื่อนไขที่รองรับในปัจจุบัน
ค่าธรรมเนียม พฤติกรรมโทเคน และเส้นทางเปลี่ยนผลรวม
จำนวนโทเคนที่ได้รับไม่ใช่ต้นทุนทั้งหมดของสวอป ให้แยกค่าธรรมเนียมพูล ค่าธรรมเนียมอินเทอร์เฟซที่อาจมี ค่าเครือข่าย ผลกระทบต่อราคาที่รวมในราคาเสนอแล้ว สลิปเพจตอนดำเนินการ และค่าธรรมเนียมโอนหรือซื้อขายเฉพาะโทเคน โทเคนบางชนิดมีพฤติกรรมการโอนที่ไม่เป็นมาตรฐาน สวอปอาจล้มเหลวหรือโอนจำนวนต่างจากที่สมมติไว้สำหรับ ERC-20 ทั่วไป การอนุมัติโทเคนอาจเป็นธุรกรรมแยกและมีค่าเครือข่ายของตนเอง
ตัวรวบรวมเส้นทางอาจแบ่งสวอประหว่างหลายพูลหรือใช้โทเคนตัวกลางเพื่อเพิ่มจำนวนที่เสนอ การทำเช่นนี้อาจลดผลกระทบของเส้นทางหนึ่ง แต่เพิ่มการเรียกสัญญา ค่าธรรมเนียม หรือความเสี่ยงเฉพาะโทเคน ราคาเสนอไม่ได้รับประกันการดำเนินการที่ดีที่สุดในทุกแพลตฟอร์ม เปรียบเทียบจำนวนขาเข้าที่แน่นอน ผลลัพธ์คาดการณ์ จำนวนรับขั้นต่ำ เส้นทางผ่านพูล รายการค่าธรรมเนียม เครือข่าย และวันหมดอายุ อ่านเพิ่มเติมในคู่มือเรื่องการอนุมัติโทเคน, ค่าธรรมเนียม gas ของ Ethereum และบริดจ์กับโทเคน wrapped
ตรวจราคาเสนอก่อนลงนาม แล้วเทียบกับใบยืนยันธุรกรรม
ก่อนลงนาม ให้ตรวจเครือข่ายและที่อยู่สัญญาโทเคน จำนวนขาเข้า เส้นทางและความลึกของพูล ผลกระทบต่อราคาที่แสดง จำนวนรับที่คาดไว้และขั้นต่ำ การตั้งค่าสลิปเพจ วันหมดอายุ ค่าธรรมเนียมพูล อินเทอร์เฟซ และเครือข่าย รวมถึงคำเตือนเกี่ยวกับโทเคน หากจำนวนรับดูน้อยผิดปกติ ให้เปรียบเทียบกับตัวอย่างขาเข้าที่เล็กลงหรือเส้นทางอื่น หากธุรกรรมล้มเหลว ให้ตรวจสาเหตุก่อนส่งใหม่ ความพยายามที่ล้มเหลวอาจมีค่าเครือข่ายตามเชนและขั้นตอน
หลังการทำงาน ให้เปรียบเทียบจำนวนโทเคนจริงในใบยืนยันธุรกรรมกับราคาเสนอและจำนวนรับขั้นต่ำ แล้วจดเส้นทาง ค่าธรรมเนียม ค่าเครือข่าย และเวลา อย่าเข้าใจจำนวนขั้นต่ำว่าเป็นจำนวนที่คาดว่าจะได้ หรือคิดว่าสวอปสำเร็จแล้วแปลว่าป้องกันการดำเนินการที่ไม่เป็นผลดีได้ทั้งหมด ตัวอย่างในบทความนี้ใช้พูลผลคูณคงที่ที่ไม่มีค่าธรรมเนียม สภาพคล่องแบบกระจุกตัว เส้นทางหลายช่วง ภาษีโทเคน ราคาออราเคิล และการจัดลำดับธุรกรรมของแต่ละเชนอาจให้ผลลัพธ์ต่างกัน
แยกการป้องกันแบบกำหนดขาเข้าคงที่กับขาออกคงที่
ในตัวอย่างก่อนหน้า กำหนดขาเข้าไว้ที่ 10,000 USDC และตั้งจำนวน ETH ขั้นต่ำที่จะได้รับ จำนวนขาเข้าไม่เปลี่ยน หากผลต่ำกว่าขอบเขต ธุรกรรมอาจถูกปฏิเสธ ส่วนสวอปที่กำหนดขาออกคงที่เริ่มจากการระบุจำนวน ETH ที่ต้องการ จำนวน USDC ที่ต้องใช้จึงอาจสูงกว่าค่าประมาณ และมักกำหนดจำนวนขาเข้าสูงสุด เอกสารนักพัฒนาของ Uniswap แยกจำนวนขาออกขั้นต่ำสำหรับขาเข้าคงที่ออกจากจำนวนขาเข้าสูงสุดสำหรับขาออกคงที่
ดังนั้น ตัวเลข 1% บนหน้าจอจึงไม่ได้ปกป้องจำนวนเดียวกันในทุกสวอป ตรวจว่ากำหนดขาเข้าหรือขาออกไว้ตายตัว โทเคนใดเป็นฐานของขอบเขตล่างหรือบน และตัวรวบรวมเส้นทางรวมเส้นทางกับค่าธรรมเนียมไว้ในราคาเสนอหรือไม่ จำนวนรับขั้นต่ำเป็นเงื่อนไขในหน่วยโทเคน ไม่ใช่การรับประกันมูลค่าเป็นดอลลาร์ หากราคาตลาดของโทเคนที่ได้รับลดลงพร้อมกัน มูลค่าเป็นดอลลาร์ก็เปลี่ยนได้แม้สวอปผ่านเงื่อนไขขั้นต่ำ ธุรกรรมสำเร็จไม่ได้หมายความว่าราคาเสนอได้รับการรับประกัน
คำถามที่พบบ่อย
Q1ผลกระทบต่อราคาและสลิปเพจเป็นสิ่งเดียวกันหรือไม่?
ไม่ใช่ ผลกระทบต่อราคามาจากคำสั่งของคุณเมื่อเทียบกับสภาพคล่องพูล ส่วนสลิปเพจคือความต่างระหว่างราคาเสนอกับผลจริงตามเกณฑ์อ้างอิงของอินเทอร์เฟซ
Q2ตั้งสลิปเพจ 1% หมายความว่าจะขาดทุน 1% หรือไม่?
ไม่ โดยทั่วไปค่านี้กำหนดขอบเขตการดำเนินการเมื่อเทียบกับราคาเสนอ ผลอาจดีกว่า สวอปอาจถูกย้อน หรืออาจดำเนินการใกล้ขอบเขตที่อนุญาต
Q3ค่าความคลาดเคลื่อนที่แคบลงหยุดการโจมตีแบบ sandwich ได้หรือไม่?
อาจลดช่วงผลลัพธ์ที่ธุรกรรมยอมรับ แต่ไม่ได้กำจัด MEV หรือการเปลี่ยนแปลงของตลาดตามปกติ เส้นทางส่วนตัวก็มีขอบเขตและเงื่อนไขของตนเอง
แหล่งข้อมูลและการอ่านเพิ่มเติม
รายงานปัญหา
เราจะเตรียมอีเมลพร้อมลิงก์บทความนี้ Mark จะได้รับรายงานเมื่อคุณส่งอีเมลแล้วเท่านั้น
ตรวจสอบอย่างรวดเร็ว
อ่านคู่มือจบแล้ว ลองตอบคำถาม 3 ข้อ
คำถาม 01
ผลกระทบต่อราคาใน AMM วัดอะไร?
เลือกคำตอบเพื่อดูคำอธิบาย