คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
ซีรีส์ Chainlink Oracle (ส่วนที่ 2)
ZAN Team
特邀专栏作者
2025-04-16 01:30
บทความนี้มีประมาณ 1380 คำ การอ่านทั้งหมดใช้เวลาประมาณ 2 นาที
เมื่อผู้บริโภคร้องขอบริการ Oracle ออราเคิลอาจไม่ตอบสนองได้ทันเวลาเนื่องจากเหตุผลหลายประการ ส่งผลให้เกิดจุดล้มเหลวเพียงจุดเดียว...

Oracle แบบกระจายราคา

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

สามารถดูซอร์สโค้ดของสัญญาตัวรวบรวมได้บน Etherscan: https://etherscan.io/address/0xae74faa92cb67a95ebcab07358bc222e33a34da7#readContract

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

ออราเคิลนอกเครือข่ายแต่ละรายการสามารถให้ข้อมูลราคาเพื่อตอบสนองต่อคำขอจากผู้ใช้ในตัวรวบรวมได้ด้วยการเรียกใช้เมธอด transmit ออราเคิลนอกเครือข่ายเหล่านี้เป็นบัญชี EOA ที่ให้ข้อมูลราคาไม่เพียงแต่กับผู้รวบรวม BTC/USD เท่านั้น แต่ยังอาจให้ข้อมูลราคากับผู้รวบรวมอื่นๆ เช่น ETH/USD อีกด้วย

สัญญาแบบออนไลน์:

1. ก่อนอื่น ให้อ่านสถานะสัญญาปัจจุบันและดำเนินการตรวจสอบชุดหนึ่ง:

2. หลังจากผ่านขั้นตอนเหล่านี้ทั้งหมดแล้ว คุณสามารถทำการเตรียมงานบางส่วนได้:

3. จากนั้นใช้ ecrecover() เพื่อตรวจสอบข้อมูลลายเซ็นแต่ละรายการและตรวจสอบว่าค่าแฮชเป็นแฮชของ _report ในขณะเดียวกันก็จำเป็นต้องตรวจสอบว่าบทบาทของผู้ลงนามคือ Signer หรือไม่ และตรวจสอบการซ้ำซ้อนของลายเซ็น

4. สุดท้าย ตรวจสอบว่าข้อสังเกตเป็นไปตามลำดับหรือไม่ จากนั้นเลือกค่ามัธยฐานจากการสังเกตที่เรียงลำดับแล้ว และตรวจสอบให้แน่ใจว่าค่ามัธยฐานจะไม่เกินเกณฑ์บนและล่าง เมื่อทุกอย่างเรียบร้อยดีแล้ว ให้บันทึกคำตอบของออราเคิลใน s_transmissions นอกจากนี้จะต้องตรวจสอบคำตอบด้วย:

ที่นี่ หลังจากการโทรหลายครั้ง (โดยมีสัญญา Proxy อยู่ตรงกลาง) ในที่สุดวิธีการตรวจสอบของสัญญา UniswapAnchoredView (โอราเคิลราคาที่ใช้โดย Compound) จะถูกเรียก:

สิ่งสำคัญคือการเปรียบเทียบว่าค่าเบี่ยงเบนราคาที่กำหนดโดยออราเคิลจากทั้งสองฝ่ายนั้นอยู่ในช่วงหรือไม่:

การลงทะเบียนฟีด

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

Feed Registry สามารถเข้าใจได้ง่ายๆ ว่าเป็นตัวรวบรวม PriceFeeds มีการรวม priceFeeds หลายรายการไว้ ด้วยสิ่งนี้ ผู้ใช้ไม่จำเป็นต้องตั้งค่า priceFeeds เอง และสามารถอ่านข้อมูลราคาโดยตรงผ่าน Feed Registry ดังแสดงด้านล่าง:

กลไกการป้อนราคา

ประการแรก ราคาในฟีดราคาจะได้รับจากการรวบรวมข้อมูลในหลายระดับ จริงๆ แล้ว มีชั้นการรวบรวมข้อมูลสามชั้น ได้แก่ การรวมแหล่งข้อมูล การรวมตัวดำเนินการโหนด และการรวมเครือข่ายออราเคิล

ข้อมูลราคาเดิมส่วนใหญ่มาจากแพลตฟอร์มการซื้อขายแบบรวมศูนย์ เช่น Binance, Huobi และ Coinbase เช่นเดียวกับแพลตฟอร์มการซื้อขายแบบกระจายอำนาจ เช่น Uniswap และ Sushi มีผู้ให้บริการบางรายที่เชี่ยวชาญในการรวบรวมข้อมูล (เช่น Amberdata และ Coingecko) ซึ่งรวบรวมข้อมูลราคาแบบดิบจากแพลตฟอร์มการซื้อขายเหล่านี้ และประมวลผลและรวมแหล่งข้อมูลเหล่านี้ เช่น การคำนวณถ่วงน้ำหนักตามปริมาณการซื้อขาย สภาพคล่อง และความแตกต่างของเวลา

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

เลเยอร์ที่สองคือการรวมข้อมูลที่ทำโดย Chainlink Node Operators ผู้ดำเนินการโหนด Chainlink แต่ละรายจะมีหน้าที่หลักในการรันซอฟต์แวร์หลักของ Chainlink ที่ใช้ในการรับและเผยแพร่ข้อมูลตลาดภายนอกบนบล็อคเชน ผู้ดำเนินการโหนดจะรับข้อมูลราคาจากบริการรวบรวมข้อมูลอิสระหลายรายการและหาค่ามัธยฐานระหว่างข้อมูลเหล่านั้น โดยจะลบค่าผิดปกติและระยะเวลาหยุดทำงานของ API

เลเยอร์สุดท้ายคือการรวมเครือข่ายออราเคิลทั้งหมด มีหลายวิธีในการรวมข้อมูล แต่วิธีการรวมข้อมูลที่นิยมใช้มากที่สุดคือการใช้ค่ามัธยฐานของข้อมูลเมื่อจำนวนโหนดที่ตอบสนองถึงค่าที่ตั้งไว้ล่วงหน้า ตัวอย่างเช่น หากมีโหนดทั้งหมด 31 โหนด และค่าที่ตั้งไว้ล่วงหน้าคือ 21 นั่นก็คือ หลังจากได้รับการตอบกลับจากโหนด 21 โหนดแล้ว ค่ามัธยฐานของข้อมูลราคาของโหนดเหล่านี้จะถูกนำมาใช้เป็นราคาสุดท้าย อย่างไรก็ตาม ผลลัพธ์ราคาในแต่ละรอบจะไม่ได้รับการอัปเดตบนเครือข่าย ข้อมูลเหล่านี้จะได้รับการอัปเดตเมื่อตรงตามพารามิเตอร์ทริกเกอร์ 1 ใน 2 ตัว ได้แก่ เกณฑ์ค่าเบี่ยงเบนและเกณฑ์การเต้นของหัวใจ นอกจากนี้ค่าของพารามิเตอร์ทั้งสองนี้อาจแตกต่างกันสำหรับ PriceFeeds ที่แตกต่างกัน

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

บทความนี้เขียนโดย XiG (บัญชี X @SHXiGi ) ของทีม ZAN (บัญชี X @zan_team )

Chainlink
ออราเคิล
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
เมื่อผู้บริโภคร้องขอบริการ Oracle ออราเคิลอาจไม่ตอบสนองได้ทันเวลาเนื่องจากเหตุผลหลายประการ ส่งผลให้เกิดจุดล้มเหลวเพียงจุดเดียว...
คลังบทความของผู้เขียน
ZAN Team
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android