ในโลกที่พัฒนาอย่างรวดเร็วของ DeFi การสร้างความมั่นใจในความเสถียรของโปรโตคอลและความปลอดภัยเป็นสิ่งสําคัญ ในระหว่างการตรวจสอบความปลอดภัยล่าสุดของโครงการ CDP ฉันสังเกตว่าช่องโหว่เฉพาะอาจเกิดขึ้นได้อย่างไรภายใต้การกําหนดค่าบางอย่าง แม้ว่าการตั้งค่าพารามิเตอร์ปัจจุบันในโครงการนี้จะแข็งแกร่ง แต่การทําความเข้าใจความเสี่ยงที่อาจเกิดขึ้นเหล่านี้เป็นสิ่งสําคัญสําหรับการรักษาความสมบูรณ์ของโปรโตคอล
บทความนี้มีจุดมุ่งหมายที่จะสำรวจบทบาทที่สำคัญของค่าธรรมเนียมการยืมครั้งเดียวและค่าธรรมเนียมการแลกคืนในบริบทนี้ โดยการสำรวจสถานการณ์การล่วงล้ำที่เฉพาะเจาะจงที่อาจเกิดขึ้นได้โดยไม่มีค่าธรรมเนียมเหล่านี้ ฉันจะสาธิตว่าโครงสร้างค่าธรรมเนียมที่เหมาะสมเป็นสิ่งสำคัญในการป้องกันการโจมตีที่ทำให้ระบบสั่นสะท้าน ซึ่งจะทำให้มั่นใจได้ว่าความมั่นคงระยะยาวและความเป็นไปได้ของโปรโตคอล
นำแรงบันดาลจากหนึ่งในโปรโตคอลเดิม ๆ คือ Liquity และผลิตภัณฑ์ที่มาจากมัน มีรายได้มากมายจากโมเดล CDP (Collateralized Debt Position) ที่สร้าง stablecoins ดีเซ็นทรัลได้ผ่านการ over-collateralization โมเดลเหล่านี้มักจะรวมกลุ่มของกลไกที่ซับซ้อนและซับซ้อนที่ออกแบบมาเพื่อรักษา peg กับดอลลาร์สหรัฐในขณะที่ยังรักษาความปลอดภัยของโปรโตคอลในเหตุการณ์ต่าง ๆ โดยการลดความเสี่ยงของหนี้เสีย โปรโตคอลเหล่านี้แตกต่างกันด้วยการปรับแต่งสำคัญเช่นการสร้างสรรค์สิทธิกระตุ้นเศรษฐกิจที่ปรับให้เข้ากับวัตถุประสงค์ของโปรโตคอลโดยเฉพาะ
ค่าธรรมเนียมการแลกคืนเป็นค่าธรรมเนียมที่เรียกเก็บเมื่อผู้ใช้แลกคืน stablecoin ของโปรโตคอลสำหรับสินทรัพย์หลัก ค่าธรรมเนียมนี้ถูกออกแบบมาเพื่อปรับสภาพมูลค่าของ stablecoin โดยทำให้กระบวนการแลกคืนแพงขึ้นเมื่อการแลกคืนเกิดขึ้นบ่อยครั้ง ซึ่งจะป้องกันการแลกคืนอย่างเกินไปซึ่งอาจทำให้โปรโตคอลเสียเสมอ
ค่าธรรมเนียมการแลกคืนคำนวณจาก baseRate ของโปรโตคอลซึ่งเป็นพารามิเตอร์ที่ปรับเปลี่ยนได้โดยอัตโนมัติตามกิจกรรมล่าสุดภายในระบบ โดยเฉพาะ baseRate จะเพิ่มขึ้นเมื่อมีการแลกคืน ทำให้การแลกคืนที่เกิดขึ้นต่อมามีค่าสูงขึ้น
การเพิ่มนี้สัมพันธ์กับส่วนแบ่งของการจัดหาสกุลเงินเหรียญที่มีความเสถียรทั้งหมดที่ได้รับการแลกเปลี่ยน ตลอดเวลาหากไม่มีการแลกเปลี่ยนเกิดขึ้น อัตราฐานจะเสื่อมสลายกลับสู่ศูนย์อย่างช้าๆ โดยมีระหว่างชีวิตประมาณ 12 ชั่วโมง
ค่าธรรมเนียมการแลกคืนถูกคำนวณโดยใช้สูตร:
ตัวอย่างเช่น หากอัตราฐานคือ 1% และผู้ใช้แลกคืน stablecoins 100 เมื่อราคาของหลักทรัพย์คือ $50,000 ค่าธรรมเนียมการแลกคืนจะเป็น:
ดังนั้นผู้ใช้จะได้รับหลักประกันเล็กน้อยน้อยกว่าหลังคำนวณค่าธรรมเนียมการแลกเปลี่ยน กลไกนี้ทำให้การแลกเปลี่ยนยังคงเป็นสิ่งที่สมเหตุสมผลทางเศรษฐกิจในขณะที่ปกป้องโปรโตคอลจากกิจกรรมอาร์บิเทรจที่ทำให้ระบบเสื่อมเสีย
ค่ายืมเป็นค่าธรรมเนียมสำหรับการยืม stablecoin ต่อครั้งที่ว่าที่เรียกเก็บเมื่อผู้ใช้ยืม stablecoin ต่อกับหลักประกันของตน ค่าธรรมเนียมนี้จะขึ้นอยู่กับอัตราฐานเช่นเดียวกับอัตราฐาน แต่จะใช้ในขณะที่ stablecoin ถูกเบิกจากโครงสร้าง Trove ของผู้ใช้ (สัญญาคลังสินทรัพย์และหนี้ของผู้ใช้)
ค่ายืมเงินคำนวณตามวิธีต่อไปนี้:
ตัวอย่างเช่น หากผู้ใช้ต้องการยืม stablecoins 4,000 หน่วยและอัตราเบสเรทถูกตั้งค่าที่ 0.5% ค่าธรรมเนียมจะเป็น:
ค่าธรรมเนียมนี้ถูกเพิ่มในหนี้ของผู้ใช้ ซึ่งหมายความว่าหนี้รวมของพวกเขาจะเป็นจำนวนเงินที่ยืมบวกกับค่าธรรมเนียม (ตัวอย่างเช่น 4,000 stablecoins + 20 stablecoins = 4,020 stablecoins)
ค่าธรรมเนียมเหล่านี้ยังทำหน้าที่เป็นตัวหนึ่งที่มีผลต่อการผูกติดอย่างอ่อนโยน โดยมีผลต่อราคาของสเตเบิ้ลคอยน์โดยอ้อมโดยทำให้มันน้อยน้อยที่จะยืมหรือแลกเปลี่ยนภายใต้เงื่อนไขบางอย่าง ซึ่งจะช่วยให้สเตเบิ้ลคอยน์ผูกติดกับ $1 อย่างใกล้ชิด
ตอนนี้เรามาสำรวจว่าอะไรสามารถเกิดขึ้นได้หากค่าธรรมเนียมสำคัญเหล่านี้ถูกลบหรือตั้งเป็นศูนย์
หากไม่มีค่าธรรมเนียมการไถ่ถอนเพียงครั้งเดียวโปรโตคอลสามารถเปลี่ยนเป็น DEX สวอปแบบ zero-slippage โดยไม่ได้ตั้งใจ ในสถานการณ์เช่นนี้ผู้ถือ stablecoin ขนาดใหญ่สามารถใช้ประโยชน์จากกลไกการไถ่ถอนเพื่อแลกเปลี่ยน stablecoins เป็นหลักประกันโดยไม่ต้องเสียค่าใช้จ่ายจํานวนมากทําการซื้อขายเก็งกําไรขนาดใหญ่ได้อย่างมีประสิทธิภาพ สิ่งนี้อาจนําไปสู่ผลลัพธ์เชิงลบหลายประการเนื่องจากในสภาพแวดล้อมที่ไม่มีความคลาดเคลื่อนนี้การไถ่ถอนขนาดใหญ่จะไม่เพียง แต่ระบายสภาพคล่องของโปรโตคอล แต่ยังบังคับให้ผู้กู้ขายหลักประกันในราคาตลาดปัจจุบัน แม้ว่าหนี้ของพวกเขาจะลดลงตามลําดับ แต่การชําระบัญชีแบบบังคับนี้อาจเพิ่มต้นทุนการดําเนินงานสําหรับผู้ใช้โดยเฉพาะอย่างยิ่งหาก stablecoin ซื้อขายต่ํากว่า $ 1
นอกจากนี้ยังมีความเสี่ยงของ oracle front-running: หากผู้ใช้สังเกตเห็นว่าธุรกรรมกําลังจะอัปเดตราคาหลักประกัน oracle เพื่อสะท้อนราคาที่สูงขึ้นพวกเขาสามารถแลก stablecoin จํานวนมากได้อย่างรวดเร็วก่อนการอัปเดตราคา เมื่อราคาหลักประกันได้รับการอัปเดตและเพิ่มขึ้นผู้ใช้สามารถขายหลักประกันที่ไถ่ถอนได้ในราคากําไรโดยเสร็จสิ้นรอบการเก็งกําไร การปฏิบัตินี้ไม่เพียง แต่ใช้ประโยชน์จากโปรโตคอล แต่ยังทําให้ผู้กู้เสียเปรียบเนื่องจากพวกเขาอาจถูกบังคับให้ขายหลักประกันในราคาที่ไม่เอื้ออํานวย
หนึ่งในสถานการณ์การรู้จักที่ง่ายที่สุดเกี่ยวข้องกับการปรับการเรียกคืนค่าธรรมเนียมเพื่อลดต้นทุน ในโปรโตคอลที่ไม่มีค่ายืมครั้งเดียวผู้ใช้สามารถยืมจำนวนมากของ stablecoin โดยเจ๊งเจาะเส้นของหนี้รวมของโปรโตคอล โดยเทียบกับขนาดของหนี้ทั้งหมด หลังจากที่หนี้ถูกเจ๊งเจาะเส้น พวกเขาสามารถแลกเปลี่ยน stablecoin ของพวกเขากับค่าธรรมเนียมที่ต่ำลงได้
การจัดการนี้บ่อนทําลายโครงสร้างค่าธรรมเนียมที่ตั้งใจไว้ของโปรโตคอลซึ่งนําไปสู่รายได้ที่ลดลงสําหรับโปรโตคอลและอาจทําให้ระบบไม่เสถียร ตัวอย่างเช่นผู้โจมตีสามารถใช้เงินกู้แฟลชเพื่อยืมหลักประกันจํานวนมากซึ่งพวกเขาใช้เพื่อสร้าง stablecoins จํานวนมากซึ่งจะเป็นการเพิ่มหนี้ทั้งหมดของระบบ จากนั้นพวกเขาดําเนินการไถ่ถอนโดยได้รับประโยชน์จากค่าธรรมเนียมที่ลดลงเนื่องจากหนี้ที่สูงเกินจริงและในที่สุดก็ชําระคืนเงินกู้แฟลชออกจากโปรโตคอลที่มีรายได้น้อยกว่าที่คาดไว้และอาจนําไปสู่ความไม่แน่นอนเพิ่มเติมสําหรับผู้ใช้ที่อาจไม่ได้คาดหวังว่าจะถูกกําหนดเป้าหมายเพื่อไถ่ถอน
ข้อช่องโหว่ที่สำคัญอีกอย่างเกิดขึ้นจากความสามารถในการบังคับโปรโตคอลเข้าสู่โหมดการกู้คืนในบล็อกเดียว ซึ่งทำให้สามารถละลายตำแหน่งที่มีอัตราส่วนค้ำประกันที่สมบูรณ์ก่อนหน้านี้ ช่องโหว่นี้จำเป็นต้องพึ่งพาการให้ยืมแฟลชและการปรับเวลาการโจมตีรอบรอบราคาออรัคเกิดขึ้น
การโจมตีเกิดขึ้นดังนี้:
ภัยคุกคามจะใช้เงินกู้แบบแฟลชก่อนเพื่อยืมเงินหลายๆ จำนวนของหลักประกัน ซึ่งจากนั้นจะฝากเป็นหลักประกันในโปรโตคอล โดยใช้หลักประกันนี้ภัยคุกคามจะยืม stablecoins ที่อัตราส่วนหลักประกันขั้นต่ำ (MCR) ภัยคุกคามสามารถดำเนินการนี้เพื่อลดอัตราส่วนหลักประกันรวม (TCR) ลงไปยัง 150% ที่เป็นพิธีการเรียกคืน
ผู้โจมตีรอการอัปเดตของออราเคิลที่แสดงให้เห็นถึงการลดลงของราคาหลักประกัน โดยที่ราคาใหม่ที่ต่ำลงถูกอัปเดตในระบบ มูลค่าของหลักประกันลดลง ทำให้ TCR ลดลงต่ำกว่า 150%
ด้วย TCR ตอนนี้ต่ำกว่า 150% โปรโตคอลเข้าสู่โหมดฟื้นฟูโดยอัตโนมัติ ในสถานะนี้ โปรโตคอลอนุญาตให้ล่ายาของ Troves ที่มี Collateral Ratios (CR) ต่ำกว่า TCR ใหม่ ผู้โจมตีจึงสามารถดำเนินการล้ายา Troves ของผู้ใช้อื่นที่ตอนนี้มี CR ต่ำกว่า TCR โดยส่งผลให้พวกเขาเสียหายและได้รับผลตอบแทนจากการล้ายา
ขยายจากเหตุการณ์โจมตีก่อนหน้านี้ การโจมตีขั้นสูงนี้อนุญาตให้ผู้โจมตีบังคับโปรโตคอลเข้าสู่โหมดฟื้นฟูผ่านกระบวนการแลกเปลี่ยนที่ระมัดระวัง ไม่เหมือนการโจมตีก่อนหน้านี้ที่อาจทำให้ระบบกลับไปสู่โหมดปกติชั่วคราวหลังจากการละลายลม วิธีนี้จะให้ระบบอยู่ในโหมดฟื้นฟูต่อเนื่องซึ่งอนุญาตให้ผู้โจมตีลอกเลียนแบบช่องโหว่อย่างต่อเนื่อง
ปัญหาหลักซึ่งเกิดขึ้นเมื่อระบบรองรับหลักประกันหลายประเภทซึ่งแต่ละประเภทจัดการโดย Trove Managers ที่แตกต่างกันอยู่ในศักยภาพที่อัตราส่วนหลักประกันรวม (TCR) ทั่วทั้งระบบจะลดลงหลังจากการไถ่ถอนแม้ว่าสุขภาพของ Trove Managers แต่ละคนจะดีขึ้นก็ตาม ผลลัพธ์ที่สวนทางกันนี้เป็นผลมาจากการทํางานร่วมกันที่ซับซ้อนระหว่างอัตราส่วนหลักประกันระดับโลกและระดับท้องถิ่น
ตัวอย่างเช่น พิจารณาสถานการณ์ที่ TCR ของระบบอยู่ที่ 150%
หากผู้ใช้ได้แลกคืนกับ Trove ด้วยอัตราส่วนหลักประกัน 160% ซึ่งทำให้ Trove นั้นปิด การคำนวณที่ได้จะทำให้ TCR ลดลงต่ำกว่า 150% ซึ่งจะเป็นสาเหตุให้เกิดโหมดการกู้คืน
การโจมตีเกิดขึ้นดังนี้:
ผู้โจมตีเปิดตำแหน่งขั้นต่ำด้วยอัตราส่วนหลักประกันเล็กน้อยกว่า 150% ใน Trove ที่เลือกอย่างรอบคอบ การตั้งค่านี้เป็นสิ่งสำคัญสำหรับการตรวจสอบว่าการไถ่ถอนในขั้นตอนต่อไปจะส่งผลให้ TCR ต่ำกว่าเกณฑ์สำคัญอย่างมีประสิทธิภาพ
ผู้โจมตีใช้ flash loan เพื่อเปิดตำแหน่งอื่นๆ ด้วยอัตราส่วนหลักประกันที่เป็น Minimum Collateral Ratio (MCR) 110% ใน Trove Manager ใดก็ได้ โดยนำระบบ Total Collateral Ratio (TCR) ลงมาที่ 150% แม้ว่าจะเป็นขั้นตอนที่จะทำให้ระบบเข้าสู่ Recovery Mode
ผู้โจมตีจึงแลกคืนตำแหน่งที่เปิดขึ้นในขั้นตอนแรก เนื่องจากตำแหน่งนี้มีอัตราส่วนการค้ำประกันเงินยืมเล็กน้อยกว่า 150% การแลกคืนมันทำให้อัตราส่วนการค้ำประกันเงินยืมต่ำกว่า 150% ทำให้เกิดโหมดการกู้คืน การแลกคืนไม่เพียงแต่มีผลต่อเฉพาะ Trove ที่กำลังถูกแลกคืน แต่ยังทำให้เกิดผลกระทบต่อระบบทั้งหมดที่ทำให้ TCR เข้าสู่โหมดการกู้คืน
กับระบบที่อยู่ในโหมดกู้คืนตอนนี้ ผู้โจมตีสามารถขายทรัพย์สินใด ๆ ที่มีอัตราส่วนหลักประกันต่ำกว่า 150% การขายเหล่านี้อาจทำให้ TCR กลับสู่ระดับที่มากกว่า 150%
ผู้โจมตีสามารถทำซ้ำขั้นตอนตามที่จำเป็น โดยรักษาระบบในสถานะของโหมดการกู้คืนเพื่อใช้ประโยชน์จาก Troves ที่มีอัตราส่วนหลักทรัพย์ต่ำกว่า 150% อย่างต่อเนื่อง
ค่าธรรมเนียมการไถ่ถอนครั้งเดียวและค่าธรรมเนียมการกู้ยืมมีบทบาทสําคัญในการลดความเสี่ยงที่เกี่ยวข้องกับเวกเตอร์การโจมตีที่อธิบายไว้ข้างต้น ด้วยการแนะนําค่าใช้จ่ายในการกู้ยืมและไถ่ถอนค่าธรรมเนียมเหล่านี้ทําให้ผู้โจมตีไม่สามารถดําเนินการจัดการที่ทํากําไรได้จํานวนมากในกรณีส่วนใหญ่
ตัวอย่างเช่น ในสถานการณ์การปรับแก้ค่าธรรมเนียมการแลกเปลี่ยน ค่าธรรมเนียมการยืมครั้งเดียวจะเพิ่มค่าใช้จ่ายในการบรรเทาหนี้ของระบบ ทำให้ไม่คุ้มค่าที่จะใช้การปลอมแปลงค่าธรรมเนียมการแลกเปลี่ยน ในทางเดียวกัน ในสถานการณ์ที่ผู้โจมตีพยายามเรียกคืนโหมดการกู้คืนค่าธรรมเนียมการยืมจะทำหน้าที่เป็นอุปการะโดยการเพิ่มค่าใช้จ่ายในการรับหนี้จำนวนมากเพื่อปรับเปลี่ยน TCR
เมื่อ DeFi พัฒนาขึ้นโปรโตคอลจะเผชิญกับการโจมตีที่ซับซ้อนมากขึ้น สิ่งสําคัญคือต้องเข้าใจว่าคุณลักษณะต่างๆ มีปฏิสัมพันธ์กันอย่างไรและอาจสร้างช่องโหว่ การรักษาความปลอดภัยที่มีประสิทธิภาพจําเป็นต้องมีความเข้าใจอย่างลึกซึ้งว่าส่วนประกอบของระบบต่างๆ มีปฏิสัมพันธ์กันอย่างไร รวมถึงให้ความสนใจกับการตั้งค่าและพารามิเตอร์ที่ควบคุมการโต้ตอบเหล่านี้อย่างรอบคอบ ด้วยการคาดการณ์เชิงรุกถึงวิธีที่คุณสมบัติสามารถรวมกันเพื่อสร้างช่องโหว่นักออกแบบสามารถสร้างโปรโตคอลที่ไม่เพียง แต่ปลอดภัย แต่ยังมีความยืดหยุ่นและปรับให้เข้ากับความท้าทายในอนาคต
分享
ในโลกที่พัฒนาอย่างรวดเร็วของ DeFi การสร้างความมั่นใจในความเสถียรของโปรโตคอลและความปลอดภัยเป็นสิ่งสําคัญ ในระหว่างการตรวจสอบความปลอดภัยล่าสุดของโครงการ CDP ฉันสังเกตว่าช่องโหว่เฉพาะอาจเกิดขึ้นได้อย่างไรภายใต้การกําหนดค่าบางอย่าง แม้ว่าการตั้งค่าพารามิเตอร์ปัจจุบันในโครงการนี้จะแข็งแกร่ง แต่การทําความเข้าใจความเสี่ยงที่อาจเกิดขึ้นเหล่านี้เป็นสิ่งสําคัญสําหรับการรักษาความสมบูรณ์ของโปรโตคอล
บทความนี้มีจุดมุ่งหมายที่จะสำรวจบทบาทที่สำคัญของค่าธรรมเนียมการยืมครั้งเดียวและค่าธรรมเนียมการแลกคืนในบริบทนี้ โดยการสำรวจสถานการณ์การล่วงล้ำที่เฉพาะเจาะจงที่อาจเกิดขึ้นได้โดยไม่มีค่าธรรมเนียมเหล่านี้ ฉันจะสาธิตว่าโครงสร้างค่าธรรมเนียมที่เหมาะสมเป็นสิ่งสำคัญในการป้องกันการโจมตีที่ทำให้ระบบสั่นสะท้าน ซึ่งจะทำให้มั่นใจได้ว่าความมั่นคงระยะยาวและความเป็นไปได้ของโปรโตคอล
นำแรงบันดาลจากหนึ่งในโปรโตคอลเดิม ๆ คือ Liquity และผลิตภัณฑ์ที่มาจากมัน มีรายได้มากมายจากโมเดล CDP (Collateralized Debt Position) ที่สร้าง stablecoins ดีเซ็นทรัลได้ผ่านการ over-collateralization โมเดลเหล่านี้มักจะรวมกลุ่มของกลไกที่ซับซ้อนและซับซ้อนที่ออกแบบมาเพื่อรักษา peg กับดอลลาร์สหรัฐในขณะที่ยังรักษาความปลอดภัยของโปรโตคอลในเหตุการณ์ต่าง ๆ โดยการลดความเสี่ยงของหนี้เสีย โปรโตคอลเหล่านี้แตกต่างกันด้วยการปรับแต่งสำคัญเช่นการสร้างสรรค์สิทธิกระตุ้นเศรษฐกิจที่ปรับให้เข้ากับวัตถุประสงค์ของโปรโตคอลโดยเฉพาะ
ค่าธรรมเนียมการแลกคืนเป็นค่าธรรมเนียมที่เรียกเก็บเมื่อผู้ใช้แลกคืน stablecoin ของโปรโตคอลสำหรับสินทรัพย์หลัก ค่าธรรมเนียมนี้ถูกออกแบบมาเพื่อปรับสภาพมูลค่าของ stablecoin โดยทำให้กระบวนการแลกคืนแพงขึ้นเมื่อการแลกคืนเกิดขึ้นบ่อยครั้ง ซึ่งจะป้องกันการแลกคืนอย่างเกินไปซึ่งอาจทำให้โปรโตคอลเสียเสมอ
ค่าธรรมเนียมการแลกคืนคำนวณจาก baseRate ของโปรโตคอลซึ่งเป็นพารามิเตอร์ที่ปรับเปลี่ยนได้โดยอัตโนมัติตามกิจกรรมล่าสุดภายในระบบ โดยเฉพาะ baseRate จะเพิ่มขึ้นเมื่อมีการแลกคืน ทำให้การแลกคืนที่เกิดขึ้นต่อมามีค่าสูงขึ้น
การเพิ่มนี้สัมพันธ์กับส่วนแบ่งของการจัดหาสกุลเงินเหรียญที่มีความเสถียรทั้งหมดที่ได้รับการแลกเปลี่ยน ตลอดเวลาหากไม่มีการแลกเปลี่ยนเกิดขึ้น อัตราฐานจะเสื่อมสลายกลับสู่ศูนย์อย่างช้าๆ โดยมีระหว่างชีวิตประมาณ 12 ชั่วโมง
ค่าธรรมเนียมการแลกคืนถูกคำนวณโดยใช้สูตร:
ตัวอย่างเช่น หากอัตราฐานคือ 1% และผู้ใช้แลกคืน stablecoins 100 เมื่อราคาของหลักทรัพย์คือ $50,000 ค่าธรรมเนียมการแลกคืนจะเป็น:
ดังนั้นผู้ใช้จะได้รับหลักประกันเล็กน้อยน้อยกว่าหลังคำนวณค่าธรรมเนียมการแลกเปลี่ยน กลไกนี้ทำให้การแลกเปลี่ยนยังคงเป็นสิ่งที่สมเหตุสมผลทางเศรษฐกิจในขณะที่ปกป้องโปรโตคอลจากกิจกรรมอาร์บิเทรจที่ทำให้ระบบเสื่อมเสีย
ค่ายืมเป็นค่าธรรมเนียมสำหรับการยืม stablecoin ต่อครั้งที่ว่าที่เรียกเก็บเมื่อผู้ใช้ยืม stablecoin ต่อกับหลักประกันของตน ค่าธรรมเนียมนี้จะขึ้นอยู่กับอัตราฐานเช่นเดียวกับอัตราฐาน แต่จะใช้ในขณะที่ stablecoin ถูกเบิกจากโครงสร้าง Trove ของผู้ใช้ (สัญญาคลังสินทรัพย์และหนี้ของผู้ใช้)
ค่ายืมเงินคำนวณตามวิธีต่อไปนี้:
ตัวอย่างเช่น หากผู้ใช้ต้องการยืม stablecoins 4,000 หน่วยและอัตราเบสเรทถูกตั้งค่าที่ 0.5% ค่าธรรมเนียมจะเป็น:
ค่าธรรมเนียมนี้ถูกเพิ่มในหนี้ของผู้ใช้ ซึ่งหมายความว่าหนี้รวมของพวกเขาจะเป็นจำนวนเงินที่ยืมบวกกับค่าธรรมเนียม (ตัวอย่างเช่น 4,000 stablecoins + 20 stablecoins = 4,020 stablecoins)
ค่าธรรมเนียมเหล่านี้ยังทำหน้าที่เป็นตัวหนึ่งที่มีผลต่อการผูกติดอย่างอ่อนโยน โดยมีผลต่อราคาของสเตเบิ้ลคอยน์โดยอ้อมโดยทำให้มันน้อยน้อยที่จะยืมหรือแลกเปลี่ยนภายใต้เงื่อนไขบางอย่าง ซึ่งจะช่วยให้สเตเบิ้ลคอยน์ผูกติดกับ $1 อย่างใกล้ชิด
ตอนนี้เรามาสำรวจว่าอะไรสามารถเกิดขึ้นได้หากค่าธรรมเนียมสำคัญเหล่านี้ถูกลบหรือตั้งเป็นศูนย์
หากไม่มีค่าธรรมเนียมการไถ่ถอนเพียงครั้งเดียวโปรโตคอลสามารถเปลี่ยนเป็น DEX สวอปแบบ zero-slippage โดยไม่ได้ตั้งใจ ในสถานการณ์เช่นนี้ผู้ถือ stablecoin ขนาดใหญ่สามารถใช้ประโยชน์จากกลไกการไถ่ถอนเพื่อแลกเปลี่ยน stablecoins เป็นหลักประกันโดยไม่ต้องเสียค่าใช้จ่ายจํานวนมากทําการซื้อขายเก็งกําไรขนาดใหญ่ได้อย่างมีประสิทธิภาพ สิ่งนี้อาจนําไปสู่ผลลัพธ์เชิงลบหลายประการเนื่องจากในสภาพแวดล้อมที่ไม่มีความคลาดเคลื่อนนี้การไถ่ถอนขนาดใหญ่จะไม่เพียง แต่ระบายสภาพคล่องของโปรโตคอล แต่ยังบังคับให้ผู้กู้ขายหลักประกันในราคาตลาดปัจจุบัน แม้ว่าหนี้ของพวกเขาจะลดลงตามลําดับ แต่การชําระบัญชีแบบบังคับนี้อาจเพิ่มต้นทุนการดําเนินงานสําหรับผู้ใช้โดยเฉพาะอย่างยิ่งหาก stablecoin ซื้อขายต่ํากว่า $ 1
นอกจากนี้ยังมีความเสี่ยงของ oracle front-running: หากผู้ใช้สังเกตเห็นว่าธุรกรรมกําลังจะอัปเดตราคาหลักประกัน oracle เพื่อสะท้อนราคาที่สูงขึ้นพวกเขาสามารถแลก stablecoin จํานวนมากได้อย่างรวดเร็วก่อนการอัปเดตราคา เมื่อราคาหลักประกันได้รับการอัปเดตและเพิ่มขึ้นผู้ใช้สามารถขายหลักประกันที่ไถ่ถอนได้ในราคากําไรโดยเสร็จสิ้นรอบการเก็งกําไร การปฏิบัตินี้ไม่เพียง แต่ใช้ประโยชน์จากโปรโตคอล แต่ยังทําให้ผู้กู้เสียเปรียบเนื่องจากพวกเขาอาจถูกบังคับให้ขายหลักประกันในราคาที่ไม่เอื้ออํานวย
หนึ่งในสถานการณ์การรู้จักที่ง่ายที่สุดเกี่ยวข้องกับการปรับการเรียกคืนค่าธรรมเนียมเพื่อลดต้นทุน ในโปรโตคอลที่ไม่มีค่ายืมครั้งเดียวผู้ใช้สามารถยืมจำนวนมากของ stablecoin โดยเจ๊งเจาะเส้นของหนี้รวมของโปรโตคอล โดยเทียบกับขนาดของหนี้ทั้งหมด หลังจากที่หนี้ถูกเจ๊งเจาะเส้น พวกเขาสามารถแลกเปลี่ยน stablecoin ของพวกเขากับค่าธรรมเนียมที่ต่ำลงได้
การจัดการนี้บ่อนทําลายโครงสร้างค่าธรรมเนียมที่ตั้งใจไว้ของโปรโตคอลซึ่งนําไปสู่รายได้ที่ลดลงสําหรับโปรโตคอลและอาจทําให้ระบบไม่เสถียร ตัวอย่างเช่นผู้โจมตีสามารถใช้เงินกู้แฟลชเพื่อยืมหลักประกันจํานวนมากซึ่งพวกเขาใช้เพื่อสร้าง stablecoins จํานวนมากซึ่งจะเป็นการเพิ่มหนี้ทั้งหมดของระบบ จากนั้นพวกเขาดําเนินการไถ่ถอนโดยได้รับประโยชน์จากค่าธรรมเนียมที่ลดลงเนื่องจากหนี้ที่สูงเกินจริงและในที่สุดก็ชําระคืนเงินกู้แฟลชออกจากโปรโตคอลที่มีรายได้น้อยกว่าที่คาดไว้และอาจนําไปสู่ความไม่แน่นอนเพิ่มเติมสําหรับผู้ใช้ที่อาจไม่ได้คาดหวังว่าจะถูกกําหนดเป้าหมายเพื่อไถ่ถอน
ข้อช่องโหว่ที่สำคัญอีกอย่างเกิดขึ้นจากความสามารถในการบังคับโปรโตคอลเข้าสู่โหมดการกู้คืนในบล็อกเดียว ซึ่งทำให้สามารถละลายตำแหน่งที่มีอัตราส่วนค้ำประกันที่สมบูรณ์ก่อนหน้านี้ ช่องโหว่นี้จำเป็นต้องพึ่งพาการให้ยืมแฟลชและการปรับเวลาการโจมตีรอบรอบราคาออรัคเกิดขึ้น
การโจมตีเกิดขึ้นดังนี้:
ภัยคุกคามจะใช้เงินกู้แบบแฟลชก่อนเพื่อยืมเงินหลายๆ จำนวนของหลักประกัน ซึ่งจากนั้นจะฝากเป็นหลักประกันในโปรโตคอล โดยใช้หลักประกันนี้ภัยคุกคามจะยืม stablecoins ที่อัตราส่วนหลักประกันขั้นต่ำ (MCR) ภัยคุกคามสามารถดำเนินการนี้เพื่อลดอัตราส่วนหลักประกันรวม (TCR) ลงไปยัง 150% ที่เป็นพิธีการเรียกคืน
ผู้โจมตีรอการอัปเดตของออราเคิลที่แสดงให้เห็นถึงการลดลงของราคาหลักประกัน โดยที่ราคาใหม่ที่ต่ำลงถูกอัปเดตในระบบ มูลค่าของหลักประกันลดลง ทำให้ TCR ลดลงต่ำกว่า 150%
ด้วย TCR ตอนนี้ต่ำกว่า 150% โปรโตคอลเข้าสู่โหมดฟื้นฟูโดยอัตโนมัติ ในสถานะนี้ โปรโตคอลอนุญาตให้ล่ายาของ Troves ที่มี Collateral Ratios (CR) ต่ำกว่า TCR ใหม่ ผู้โจมตีจึงสามารถดำเนินการล้ายา Troves ของผู้ใช้อื่นที่ตอนนี้มี CR ต่ำกว่า TCR โดยส่งผลให้พวกเขาเสียหายและได้รับผลตอบแทนจากการล้ายา
ขยายจากเหตุการณ์โจมตีก่อนหน้านี้ การโจมตีขั้นสูงนี้อนุญาตให้ผู้โจมตีบังคับโปรโตคอลเข้าสู่โหมดฟื้นฟูผ่านกระบวนการแลกเปลี่ยนที่ระมัดระวัง ไม่เหมือนการโจมตีก่อนหน้านี้ที่อาจทำให้ระบบกลับไปสู่โหมดปกติชั่วคราวหลังจากการละลายลม วิธีนี้จะให้ระบบอยู่ในโหมดฟื้นฟูต่อเนื่องซึ่งอนุญาตให้ผู้โจมตีลอกเลียนแบบช่องโหว่อย่างต่อเนื่อง
ปัญหาหลักซึ่งเกิดขึ้นเมื่อระบบรองรับหลักประกันหลายประเภทซึ่งแต่ละประเภทจัดการโดย Trove Managers ที่แตกต่างกันอยู่ในศักยภาพที่อัตราส่วนหลักประกันรวม (TCR) ทั่วทั้งระบบจะลดลงหลังจากการไถ่ถอนแม้ว่าสุขภาพของ Trove Managers แต่ละคนจะดีขึ้นก็ตาม ผลลัพธ์ที่สวนทางกันนี้เป็นผลมาจากการทํางานร่วมกันที่ซับซ้อนระหว่างอัตราส่วนหลักประกันระดับโลกและระดับท้องถิ่น
ตัวอย่างเช่น พิจารณาสถานการณ์ที่ TCR ของระบบอยู่ที่ 150%
หากผู้ใช้ได้แลกคืนกับ Trove ด้วยอัตราส่วนหลักประกัน 160% ซึ่งทำให้ Trove นั้นปิด การคำนวณที่ได้จะทำให้ TCR ลดลงต่ำกว่า 150% ซึ่งจะเป็นสาเหตุให้เกิดโหมดการกู้คืน
การโจมตีเกิดขึ้นดังนี้:
ผู้โจมตีเปิดตำแหน่งขั้นต่ำด้วยอัตราส่วนหลักประกันเล็กน้อยกว่า 150% ใน Trove ที่เลือกอย่างรอบคอบ การตั้งค่านี้เป็นสิ่งสำคัญสำหรับการตรวจสอบว่าการไถ่ถอนในขั้นตอนต่อไปจะส่งผลให้ TCR ต่ำกว่าเกณฑ์สำคัญอย่างมีประสิทธิภาพ
ผู้โจมตีใช้ flash loan เพื่อเปิดตำแหน่งอื่นๆ ด้วยอัตราส่วนหลักประกันที่เป็น Minimum Collateral Ratio (MCR) 110% ใน Trove Manager ใดก็ได้ โดยนำระบบ Total Collateral Ratio (TCR) ลงมาที่ 150% แม้ว่าจะเป็นขั้นตอนที่จะทำให้ระบบเข้าสู่ Recovery Mode
ผู้โจมตีจึงแลกคืนตำแหน่งที่เปิดขึ้นในขั้นตอนแรก เนื่องจากตำแหน่งนี้มีอัตราส่วนการค้ำประกันเงินยืมเล็กน้อยกว่า 150% การแลกคืนมันทำให้อัตราส่วนการค้ำประกันเงินยืมต่ำกว่า 150% ทำให้เกิดโหมดการกู้คืน การแลกคืนไม่เพียงแต่มีผลต่อเฉพาะ Trove ที่กำลังถูกแลกคืน แต่ยังทำให้เกิดผลกระทบต่อระบบทั้งหมดที่ทำให้ TCR เข้าสู่โหมดการกู้คืน
กับระบบที่อยู่ในโหมดกู้คืนตอนนี้ ผู้โจมตีสามารถขายทรัพย์สินใด ๆ ที่มีอัตราส่วนหลักประกันต่ำกว่า 150% การขายเหล่านี้อาจทำให้ TCR กลับสู่ระดับที่มากกว่า 150%
ผู้โจมตีสามารถทำซ้ำขั้นตอนตามที่จำเป็น โดยรักษาระบบในสถานะของโหมดการกู้คืนเพื่อใช้ประโยชน์จาก Troves ที่มีอัตราส่วนหลักทรัพย์ต่ำกว่า 150% อย่างต่อเนื่อง
ค่าธรรมเนียมการไถ่ถอนครั้งเดียวและค่าธรรมเนียมการกู้ยืมมีบทบาทสําคัญในการลดความเสี่ยงที่เกี่ยวข้องกับเวกเตอร์การโจมตีที่อธิบายไว้ข้างต้น ด้วยการแนะนําค่าใช้จ่ายในการกู้ยืมและไถ่ถอนค่าธรรมเนียมเหล่านี้ทําให้ผู้โจมตีไม่สามารถดําเนินการจัดการที่ทํากําไรได้จํานวนมากในกรณีส่วนใหญ่
ตัวอย่างเช่น ในสถานการณ์การปรับแก้ค่าธรรมเนียมการแลกเปลี่ยน ค่าธรรมเนียมการยืมครั้งเดียวจะเพิ่มค่าใช้จ่ายในการบรรเทาหนี้ของระบบ ทำให้ไม่คุ้มค่าที่จะใช้การปลอมแปลงค่าธรรมเนียมการแลกเปลี่ยน ในทางเดียวกัน ในสถานการณ์ที่ผู้โจมตีพยายามเรียกคืนโหมดการกู้คืนค่าธรรมเนียมการยืมจะทำหน้าที่เป็นอุปการะโดยการเพิ่มค่าใช้จ่ายในการรับหนี้จำนวนมากเพื่อปรับเปลี่ยน TCR
เมื่อ DeFi พัฒนาขึ้นโปรโตคอลจะเผชิญกับการโจมตีที่ซับซ้อนมากขึ้น สิ่งสําคัญคือต้องเข้าใจว่าคุณลักษณะต่างๆ มีปฏิสัมพันธ์กันอย่างไรและอาจสร้างช่องโหว่ การรักษาความปลอดภัยที่มีประสิทธิภาพจําเป็นต้องมีความเข้าใจอย่างลึกซึ้งว่าส่วนประกอบของระบบต่างๆ มีปฏิสัมพันธ์กันอย่างไร รวมถึงให้ความสนใจกับการตั้งค่าและพารามิเตอร์ที่ควบคุมการโต้ตอบเหล่านี้อย่างรอบคอบ ด้วยการคาดการณ์เชิงรุกถึงวิธีที่คุณสมบัติสามารถรวมกันเพื่อสร้างช่องโหว่นักออกแบบสามารถสร้างโปรโตคอลที่ไม่เพียง แต่ปลอดภัย แต่ยังมีความยืดหยุ่นและปรับให้เข้ากับความท้าทายในอนาคต