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

การหยุดฉุกเฉินของโปรโตคอล DeFi

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

อัปเดต

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

คำตอบโดยตรง

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

เครื่องมือ Pausable ของ OpenZeppelin มีสถานะหยุด ตัวปรับแต่ง whenNotPaused และ whenPaused รวมถึงเหตุการณ์ Paused(account) และ Unpaused(account) โปรโตคอลยังต้องเชื่อมการตรวจสอบกับฟังก์ชันและป้องกันช่องทางสั่งหยุดกับเปิดเอง โปรโตคอลเฉพาะอาจใช้หลายแฟล็ก การแช่แข็งรายตลาด เพดาน หรือเครื่องสถานะ

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

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

  1. ตรวจพบตัวกระตุ้น ระบบติดตาม ผู้ร่วมพัฒนา ผู้ตรวจสอบ หรือผู้ใช้อาจพบข้อบกพร่องของโค้ด ออราเคิลล้มเหลว ยอดคงเหลือเปลี่ยนผิดปกติ การโจมตีธรรมาภิบาล หรือตลาดผิดปกติ
  2. บัญชีที่ได้รับอนุญาตส่งธุรกรรม อาจเป็นเจ้าของ ผู้พิทักษ์ มัลติซิก บทบาทควบคุมสิทธิ์ ผู้ดำเนินการธรรมาภิบาล หรือสัญญาอื่น ชื่อไม่ใช่สิทธิ์ จึงต้องตรวจเส้นทางอนุญาตและผู้ดูแลพร็อกซีที่ติดตั้งจริง
  3. สัญญาเปลี่ยนสถานะ สวิตช์รวมอาจปิดทุกฟังก์ชันที่ป้องกัน ส่วนการควบคุมละเอียดอาจหยุดเพียงตลาดหรือการทำงานเดียว ฟังก์ชันที่ไม่มีการตรวจนั้นยังทำงาน
  4. สถานะและเหตุการณ์เป็นหลักฐาน อ่านตัวแปรหรือ getter การหยุด อินพุตและใบรับธุรกรรม เหตุการณ์ เวลาในบล็อก และผู้เรียก เหตุการณ์ช่วยสร้างประวัติ แต่พื้นที่จัดเก็บปัจจุบันกำหนดสถานะขณะนี้
  5. การบัญชีอาจดำเนินต่อ ดัชนีดอกเบี้ย funding รางวัล การอัปเดตออราเคิล คิวถอน หรือเวลาชำระบัญชีอาจเดินต่อ หยุด หรือสะสมแล้วตามทันภายหลัง ไม่มีพฤติกรรมมาตรฐานเดียว
  6. ดำเนินการตอบสนองและแก้ไข ผู้ดำเนินการอาจตรวจสอบ สื่อสาร เพิกถอนบทบาท เปลี่ยนพารามิเตอร์ อัปเกรดโค้ด เติมส่วนขาด หรือให้ถอนฉุกเฉิน แต่ละงานต้องมีอำนาจและการตรวจสอบของตนเอง
  7. การเปิดใหม่เป็นอีกอำนาจพิเศษ ตรวจว่าใครยกเลิกการหยุด มี timelock หรือการลงคะแนนหรือไม่ โค้ดและการตั้งค่าเปลี่ยนอะไร การทดสอบหรือการตรวจสอบครอบคลุมเพียงใด และการอนุมัติหรือสัญญาเก่ายังเสี่ยงหรือไม่

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

ตัวอย่าง

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

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

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

ความเสี่ยง

  • อำนาจกว้างเกินไป คีย์หยุดอาจอัปเกรดโค้ด เปลี่ยนออราเคิล สร้างสินทรัพย์ ย้ายเงินสำรอง หรือให้บทบาทได้ด้วย ระบุทุกสิทธิ์และอย่าคิดว่าผู้พิทักษ์ทำได้เพียงหยุด
  • ผู้ลงนามถูกเจาะหรือไม่พร้อม คีย์ที่ถูกขโมยอาจหยุดบริการโดยเจตนา ผู้ลงนามมัลติซิกที่ไม่พร้อมหรือพึ่งระบบเดียวกันอาจขัดขวางการหยุดหรือเปิดที่ทันเวลา
  • ทางเลี่ยงที่ซ่อนอยู่ ผู้ดูแลพร็อกซี โมดูล ช่องทางอื่น ผู้ดำเนินการข้ามเชน หรือฟังก์ชันไร้การป้องกันอาจเลี่ยงการควบคุม
  • ถอนออกไม่ได้แต่ภาระยังเดินต่อ การถอนอาจหยุดขณะที่ดอกเบี้ย funding ตำแหน่งคิว หรือภาระอื่นเปลี่ยน อ่านกฎบัญชีก่อนดำเนินการ
  • เปิดใหม่ไม่ปลอดภัย อาจยกเลิกการหยุดก่อนตรวจครบทั้งสาเหตุ ตัวตนของ deployment การตั้งค่าออราเคิล เงินสำรอง และระบบที่พึ่งพา
  • ฟิชชิงระหว่างเหตุการณ์ หน้า “กู้คืน” หรือ “ย้าย” ปลอมอาจขอ seed phrase คีย์ส่วนตัว ลายเซ็น หรือการอนุมัติไม่จำกัด อย่าเปิดเผยความลับกู้คืน และตรวจทุกที่อยู่กับการอนุมัติแยกกัน
  • ความมั่นใจผิด การหยุดลดความเสี่ยงเฉพาะเส้นทางที่ป้องกันจริง ไม่ใช่หลักฐานความสามารถชำระหนี้ การตรวจสอบ ประกัน หรือการรับประกันกู้คืนความเสียหาย

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

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

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

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

แหล่งที่มา

การนำทาง

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