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

วิธีเลือกช่วงเวลา TWAP

เลือกช่วงเวลาย้อนหลังของ TWAP โดยทดสอบต้นทุนการบิดเบือน ความลึกของตลาด ความล่าช้า ข้อมูลสังเกตการณ์ และมูลค่าความเสี่ยงของโปรโตคอล แทนการใช้ระยะเวลาตายตัว

อัปเดต

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

คำตอบโดยตรง

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

นี่คือการกำหนดงบความเสี่ยง ไม่ใช่การเลือกระหว่าง 5 นาที 30 นาที หรือ 1 ชั่วโมง โปรโตคอลควรบันทึกพูลต้นทาง วิธีหาค่าเฉลี่ย ค่าคลาดเคลื่อนและความล่าช้าสูงสุด มูลค่าที่ดึงออกได้ ต้นทุนการโจมตี ประวัติข้อมูล และพฤติกรรมสำรอง ต้องวิเคราะห์ใหม่เมื่อสภาพคล่อง แรงจูงใจ การสร้างบล็อก เพดานหลักประกัน หรือโครงสร้างตลาดเปลี่ยนไป

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

ออราเคิลแบบตัวสะสมบันทึกราคาตามเวลา สำหรับตัวสะสมเลขคณิต ค่าเฉลี่ยจาก t1 ถึง t2 คือ:

TWAP(t1,t2) = (cumulativePrice(t2) - cumulativePrice(t1)) / (t2 - t1)

Uniswap v2 สะสมราคาที่จุดเริ่มต้นของแต่ละบล็อก และผู้ใช้เก็บค่าตัวสะสมสองค่า ส่วน Uniswap v3 เก็บค่าตัวสังเกต tick สะสม การแปลง tick เฉลี่ยจึงให้ค่าเฉลี่ย เรขาคณิต ถ่วงน้ำหนักตามเวลา วิธีเฉลี่ย ทิศทางราคา ความจุข้อมูล การปัดเศษ และการอัปเดตเป็นส่วนหนึ่งของข้อกำหนด อย่าถือว่า TWAP ทุกแบบเป็นค่าเฉลี่ยเลขคณิตของราคาสปอต

ใช้กระบวนการต่อไปนี้:

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

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

ตัวอย่าง

สมมติ TWAP เลขคณิตอย่างง่าย และราคาตลาดเปลี่ยนทันทีจาก 100 เป็น 70 แล้วคงที่ที่ 70 หลัง 15 นาที หน้าต่างเลื่อน 30 นาทีมีราคาแต่ละค่าค่าละ 15 นาที:

(15 x 100 + 15 x 70) / 30 = 85

เมื่อครบ 30 นาที ข้อมูลเก่า 100 จึงออกทั้งหมดและ TWAP ถึง 70 หน้าต่าง 5 นาทีถึง 70 หลัง 5 นาที แต่ผู้โจมตีก็ต้องคงการบิดเบือนสั้นลงเช่นกัน ในตลาดกู้ยืม การตีมูลค่าหลักประกันใกล้ 85 ขณะที่ราคาที่ซื้อขายได้ใกล้ 70 อาจทำให้ชำระบัญชีล่าช้าและเกิดหนี้เสีย ส่วนกรณีใช้อื่นอาจยอมรับค่าที่ช้ากว่าได้

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

ความเสี่ยงและมาตรการควบคุม

  • ช่วงเวลาสั้นเกินไป: บล็อกที่บิดเบือนเพียงไม่กี่บล็อกอาจทำให้โจมตีมีกำไร ควรเสริมแหล่งหรือตลาด ลดความเสี่ยง หรือใช้ราคาอ้างอิงที่หลากหลายขึ้น
  • ช่วงเวลายาวเกินไป: ออราเคิลตามหลังการกระโดดจริง ทำให้ชำระบัญชีช้าเมื่อราคาลงหรือประเมินหลักประกันต่ำเมื่อราคาขึ้น วัดความล่าช้ากรณีเลวร้ายและใช้พารามิเตอร์ระมัดระวัง
  • วัดสภาพคล่องผิด: TVL อาจไม่ทำงาน กระจุกตัว แบ่งข้างเดียว หรืออยู่นอกเส้นทางโจมตี ใช้ความลึกที่ซื้อขายได้ ณ tick และราคาที่เกี่ยวข้อง
  • ข้อมูลสังเกตการณ์ล้มเหลว: ประวัติไม่พอ ข้อมูลเก่า ความจุไม่เริ่มต้น เวลา พูล หรือทิศทางผิดทำให้สูตรใช้ไม่ได้ ให้ revert หรือเข้าสู่สถานะปลอดภัยที่บันทึกไว้ อย่าแทนค่าเงียบๆ
  • แบบจำลองผู้โจมตีไม่ครบ: สภาพคล่องแฟลช ผู้เสนอบล็อกต่อเนื่อง การจัดลำดับ และกำไรข้ามโปรโตคอลลดต้นทุนสุทธิ ต้องทดสอบภาวะกดดัน ไม่ถือว่า “ค่าธรรมเนียมคูณนาที” เป็นหลักฐาน
  • ธรรมาภิบาลและตลาดเปลี่ยน: การย้ายสภาพคล่อง เปลี่ยนค่าธรรมเนียม เพิ่มหลักประกัน ขยายเพดาน อัปเกรด หรือเปลี่ยนเชนอาจทำให้ผลเดิมใช้ไม่ได้ ควรเฝ้าดูข้อมูลและตั้งเกณฑ์ทบทวน
  • ระบบสำรองล้มเหลว: แหล่งอิสระอาจต่างด้านตลาด ทศนิยม ความล่าช้า และรูปแบบขัดข้อง ต้องระบุว่าจะหยุด ปฏิเสธ จำกัด หรือสลับเมื่อใด และทดสอบบนเชน

ก่อนใช้งาน ให้เผยแพร่หน่วย ทิศทางราคา วิธีเฉลี่ย ช่วงเวลา ประวัติขั้นต่ำ เกณฑ์พูล เพดานความเสี่ยง และพฤติกรรมเมื่อขัดข้อง หลังใช้งานให้เฝ้าดูความเบี่ยงเบนจากราคาอ้างอิงและข้อมูลเศรษฐกิจของแบบจำลองโจมตี

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

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

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

แหล่งที่มา

การนำทาง

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