Skip to content
คู่มือออปชันทั้งหมด
ราคาอ้างอิงใน DeFiอ่าน 8 นาที

ออราเคิลราคา DeFi รวมและเผยแพร่ราคาอย่างไร

เรียนรู้การรวมข้อมูลสังเกตการณ์ เงื่อนไขอัปเดตจาก heartbeat และ deviation การตรวจหน่วยและข้อมูลเก่า ตลอดจนข้อจำกัดของการตรวจ sequencer บน L2

ในคู่มือนี้ออราเคิลเผยแพร่ค่าอ้างอิง ไม่ใช่ราคาที่รับประกันว่าจะซื้อขายได้

สรุปสั้น

ออราเคิลราคานำค่าอ้างอิงจากภายนอกเข้าสู่สมาร์ตคอนแทรกต์ ในรูปแบบ push feed ที่พบได้ทั่วไป ข้อมูลสังเกตการณ์หลายรายการนอกเชนจะถูกรวมเป็นรายงานที่ลงนาม เผยแพร่บนเชน แล้วโปรโตคอลอ่านคำตอบล่าสุด ค่าเบี่ยงเบนและ heartbeat มีผลต่อเวลาการเผยแพร่ ส่วนผู้ใช้ข้อมูลต้องตรวจ decimals หน่วยสกุลอ้างอิง `updatedAt` และสถานะ sequencer บน L2 บางเครือข่าย การควบคุมเหล่านี้ลดความเสี่ยงเฉพาะด้าน แต่ไม่ได้พิสูจน์ว่าราคาถูกต้อง ใหม่พอสำหรับทุกงาน หรือปลอดภัยสำหรับทุกธุรกรรม

ออราเคิลเผยแพร่ค่าอ้างอิง ไม่ใช่ราคาที่รับประกันว่าจะซื้อขายได้

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

คำว่า “ราคา” อาจหมายถึงคู่สินทรัพย์กับสกุลเงินอ้างอิง อัตราแลกคืนที่โปรโตคอลกำหนด หรือค่าชนิดอื่น ไม่ได้หมายถึงราคาที่ขายสถานะขนาดใหญ่ได้โดยอัตโนมัติ อ่าน คู่มือผลกระทบด้านราคาและ slippage ของ DEX swap และ mark price เทียบกับราคาซื้อขายล่าสุด เพิ่มเติม บทความนี้เน้น push feed บน EVM ที่ใช้ทั่วไป ไม่ใช่กฎเดียวของ DeFi ทั้งหมด

ข้อมูลสังเกตการณ์กลายเป็นคำตอบบนเชนได้อย่างไร

ใน Offchain Reporting ของ Chainlink โหนดออราเคิลแลกเปลี่ยนข้อมูลสังเกตการณ์นอกเชนและตกลงเรื่องรายงาน ควอรัมลงนาม ผู้ส่งส่งธุรกรรม และ aggregator ตรวจลายเซ็นก่อนเปิดเผยคำตอบ หมายเลขรอบ และเวลา เอกสาร Offchain Reporting อธิบายว่าระบบเผยแพร่ค่ามัธยฐานของข้อมูลสังเกตการณ์อย่างไร

สัญญาผู้ใช้มักไม่รวมข้อมูลใหม่ทั้งหมด แต่เรียก latestRoundData() จากที่อยู่ proxy ของฟีด aggregator ที่อยู่หลัง proxy อาจเปลี่ยนได้ ตรวจเครือข่ายและฟีดใน คู่มือ EVM และ เอกสาร API โหนดจำนวนมากไม่ได้รับรองว่าแหล่งข้อมูลเป็นอิสระ เพราะอาจใช้ตลาดหรือผู้ให้บริการเดียวกัน

ภาพไร้ข้อความแสดงข้อมูลสังเกตการณ์ตลาดผ่านเครือข่ายโหนดไปรวมในฟีดราคา แล้วผ่านประตูตรวจสอบไปยังคลังหลักประกัน
ระบบรวมข้อมูลก่อนที่โปรโตคอลจะอ่านฟีด ความใหม่ของราคาและสถานะซีเควนเซอร์เป็นการตรวจสอบคนละส่วน

Heartbeat และ deviation กำหนดเงื่อนไขการเผยแพร่

push feed หลายรายการใช้ทั้งค่า deviation และ heartbeat การเปลี่ยนแปลงเป็นเปอร์เซ็นต์ที่กำหนดจากคำตอบล่าสุดอาจเรียกรายงานใหม่ ส่วน heartbeat อาจขออัปเดตเมื่อเวลาผ่านไปแม้ราคาไม่เปลี่ยนมาก รายการ Data Feeds ปัจจุบัน และ หน้าที่อยู่ของฟีด แสดงค่าตามสินทรัพย์ เครือข่าย และฟีด

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

อ่าน answer, decimals และหน่วยสกุลอ้างอิงให้ถูกต้อง

latestRoundData() คืนหมายเลขรอบ answer, startedAt, updatedAt และ answeredInRound; เอกสาร API ระบุว่าฟิลด์สุดท้ายเลิกแนะนำแล้ว answer เป็นจำนวนเต็มแบบ fixed-point ไม่จำเป็นต้องเป็นจำนวนดอลลาร์ที่อ่านได้ทันที อ่าน decimals() และคำอธิบายของฟีดนั้น ตัวอย่างสมมติฟีด BTC/USD ที่มี 8 decimals และคืน 6,725,000,000,000 หมายถึง $67,250 ต่อ BTC

decimals ของฟีดกับ decimals ของโทเคนเป็นคนละหน่วย ปริมาณ ERC-20 อาจใช้ 18 decimals แต่คำตอบราคาใช้ 8 จึงต้องปรับสเกลแต่ละค่าตามหน่วยของตัวเองก่อนคูณ BTC/USD หมายถึงดอลลาร์ต่อบิตคอยน์ ส่วน USD/BTC เป็นหน่วยกลับกัน การคำนวณคู่ราคาอนุพันธ์ต้องปรับสเกลทั้งสองฟีดและหารตามลำดับที่ถูกต้อง ตัวอย่างเปลี่ยนหน่วยราคา แสดง BTC/EUR จาก BTC/USD และ EUR/USD

การตรวจข้อมูลเก่าเป็นกฎของแอปพลิเคชัน

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

สมมติตลาดกู้ยืมมีหลักประกัน 4 หน่วยและใช้สัดส่วน 75% คำตอบล่าสุด 200,000,000,000 ที่ 8 decimals เท่ากับ $2,000 ต่อหน่วย เพดานกู้คือ 4 × $2,000 × 75% = $6,000 หากตลาดลดเหลือ $1,820 คือปรับลง 9% เมื่อสมมติ deviation 10% และ heartbeat 60 นาที อาจยังไม่มีการร้องขอรายงานใหม่ หากใช้ราคาต่ำกว่า เพดานคือ $5,460

หากแอปปฏิเสธราคาที่เกิน 5 นาทีและรอบนี้เก่า 20 นาที แอปอาจหยุดการกู้ใหม่แทนการใช้ค่า $2,000 การตรวจนี้ไม่ได้อัปเดตฟีด แต่เปลี่ยนว่าการกระทำใดทำได้เมื่อข้อมูลเกินอายุที่ยอมรับได้ การกู้ ถอน ชำระบัญชี และคืนหนี้อาจตอบสนองต่างกัน เพราะการหยุดทุกอย่างก็สร้างความเสียหายได้เช่นกัน ตัวเลขและเงื่อนไขเป็นตัวอย่างสมมติ ไม่ใช่การตั้งค่าปัจจุบันหรือคำแนะนำ

การตรวจ sequencer L2 จัดการความเสี่ยงการหยุดทำงานอีกแบบ

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

Chainlink ระบุฟีดสถานะ sequencer L2 แยกต่างหาก: answer == 0 หมายถึงทำงาน และ answer == 1 หมายถึงหยุด startedAt บันทึกเวลาที่สถานะเปลี่ยน ตัวอย่างผู้ใช้ข้อมูลตรวจสถานะและรอ grace period ที่แอปกำหนดหลังกลับมาทำงานก่อนอ่านราคา ดูที่อยู่และพฤติกรรมเครือข่ายใน คู่มือ L2 Sequencer Uptime Feeds grace period ไม่ได้รับรองว่าราคาอัปเดตหรือธุรกรรมค้างเสร็จสิ้น

การควบคุมเหล่านี้ไม่รับประกันผลลัพธ์ที่ถูกต้องหรือยุติธรรม

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

ไม่มี trigger ใดลบช่องว่างราคา ความแออัด หรือข้อผิดพลาดในการปรับสเกล เลือกคู่ ตรวจความใหม่ และชำระบัญชีได้ คำแนะนำเลือก Data Feeds คุณภาพ ให้ประเมินสภาพคล่องและการพึ่งพาแหล่งข้อมูล พร้อมออกแบบรับมือข้อมูลเก่า ล่าช้า หายไป หรือผิดคาด ความเสี่ยงของสัญญา governance bridge หลักประกัน และการชำระบัญชียังคงอยู่ ราคา oracle ของ stablecoin ก็ไม่รับรองการแลกคืนที่ par; อ่าน คู่มือ depeg

ติดตามเส้นทางราคาทั้งหมดก่อนพึ่งพา

ระบุ chain, feed proxy, คู่สินทรัพย์, สกุลเงินอ้างอิง, decimals ของ answer และที่อยู่สัญญา ตรวจว่าคำอธิบายตรงกับสินทรัพย์และอย่าคัดลอกที่อยู่จากเครือข่ายอื่น หากต้องติดตามใกล้ชิดให้ดูรูปแบบแหล่งข้อมูลและประวัติอัปเดต Chainlink ระบุว่า aggregator อาจต่างกันตามเครือข่าย จึงควรตรวจโค้ดและการตั้งค่า

จากนั้นติดตามว่า answer ถูกใช้อย่างไร: ปรับหน่วย ตรวจ updatedAt กำหนดอายุสูงสุด และตอบสนองต่อค่าที่ไม่ถูกต้อง บน L2 ให้ตรวจ uptime feed เวลา recovery grace period และธุรกรรมที่ล่าช้า ทบทวนกรณีข้อมูลเก่าและหยุด/กลับมาทำงานด้วย logic สัญญาจริง สำหรับความหมายของช่องราคา ดู mark price เทียบราคาซื้อขายล่าสุด

คำถามที่พบบ่อย

Q1heartbeat รับรองว่าราคาจะไม่เก่ากว่าช่วงเวลานั้นหรือไม่?

ไม่ใช่ นี่คือ trigger ตามเวลาในการออกแบบฟีด ไม่ได้รับรองเวลาที่แน่นอนในการเผยแพร่และรวมบล็อกหรือการตรงกับตลาดสด ให้ตรวจ updatedAt และกำหนดนโยบาย freshness ให้เหมาะสม

Q2ฟีด oracle แบบมัธยฐานยังผิดได้ไหม?

ได้ มัธยฐานลดผลของค่าผิดปกติบางส่วน แต่ไม่แก้ปัญหาแหล่งข้อมูลร่วม ตลาดบาง คู่ราคาผิด หรือบั๊กในตรรกะผู้ใช้ฟีด

Q3ฟีด uptime sequencer L2 เหมือนกับการตรวจราคาเก่าหรือไม่?

ไม่เหมือน ฟีด uptime รายงานสถานะ sequencer และเวลาเปลี่ยน ส่วนการตรวจความเก่าเทียบ updatedAt ของราคากับเวลาปัจจุบัน แอปอาจต้องใช้ทั้งสองอย่างและ grace period

แหล่งข้อมูลและการอ่านเพิ่มเติม

รายงานปัญหา

เราจะเตรียมอีเมลพร้อมลิงก์บทความนี้ Mark จะได้รับรายงานเมื่อคุณส่งอีเมลแล้วเท่านั้น

ตรวจสอบอย่างรวดเร็ว

อ่านคู่มือจบแล้ว ลองตอบคำถาม 3 ข้อ

คำถาม 1 / 3

คำถาม 01

ฟีด BTC/USD ที่มี 8 decimals คืน `6,725,000,000,000` ราคาหลังปรับสเกลเท่าไร?

เลือกคำตอบเพื่อดูคำอธิบาย

อภิธานศัพท์ออปชัน

กลไกการทำงานของสวอป DEXสวอป DEX: ผลกระทบต่อราคา สลิปเพจ และ MEVเรียนรู้ว่าความลึกของพูลส่งผลต่อผลกระทบด้านราคาอย่างไร จำนวนรับขั้นต่ำใช้จำกัดสวอปที่รอดำเนินการอย่างไร และเหตุใดค่าความคลาดเคลื่อนที่กว้างจึงอาจยอมให้ได้ผลการดำเนินการที่แย่ลงสามราคา สามหน้าที่ที่ต่างกันMark Price เทียบกับราคาซื้อขายล่าสุดในคริปโต: ทำไมการล้างสถานะจึงต่างกันเปรียบเทียบราคา Index, Mark และราคาซื้อขายล่าสุดของสัญญา Perpetual เพื่อดูว่าราคาใดอาจใช้เรียกหลักประกันหรือกระตุ้น Stop และเหตุใดจึงต่างจากกราฟกลไกของสเตเบิลคอยน์ทำไมสเตเบิลคอยน์จึงหลุดจากราคาอ้างอิง: การไถ่ถอน เงินสำรอง และความเสี่ยงของผู้ถือเรียนรู้ว่าราคาเป้าหมายของสเตเบิลคอยน์ต่างจากราคาตลาดอย่างไร การเข้าถึงสิทธิไถ่ถอนหมายถึงอะไร และเงินสำรอง สภาพคล่อง การดูแลสินทรัพย์ ตลอดจนความเสี่ยงของเครือข่ายอาจทำให้ราคาหลุดจากระดับอ้างอิงได้อย่างไรกลไกออปชันการถูกใช้สิทธิ์ออปชันคืออะไรทำความเข้าใจว่าการถูก assign เปลี่ยน short call หรือ put ให้เป็นภาระผูกพันต่อหุ้นได้อย่างไร เกิดขึ้นเมื่อใด และเตรียมเงินสดกับหุ้นอย่างไรจำนวนสัญญาที่อนุญาตไม่ใช่งบประมาณความเสี่ยงPosition limits เทียบกับ exercise limits ของออปชันอธิบายอย่างไรเรียนรู้ว่า position limits ของออปชันที่จดทะเบียนต่างจาก exercise limits อย่างไร เหตุใดการรวมฝั่งเดียวกันและการรายงานจึงสำคัญ และเหตุใดมาร์จินหรือ buying power จึงไม่บอกว่าจำนวนหนึ่งได้รับอนุญาต