﻿---
title: "ราคาออราเคิลล้าสมัย"
description: "ราคาออราเคิลล้าสมัยสำหรับผู้ใช้ข้อมูลเมื่อเวลาที่อัปเดตตามเอกสารเก่ากว่าอายุสูงสุดที่การกระทำนั้นยอมรับได้ การจัดการที่ปลอดภัยยังต้องตรวจสอบความถูกต้องของฟีด ซีเควนเซอร์ แหล่งสำรอง และการกู้คืนอย่างมีการควบคุม"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ราคาออราเคิลล้าสมัย

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

<a id="answer"></a>

## คำตอบโดยตรง

ค่าออราเคิลล้าสมัยสำหรับการกระทำหนึ่งของผู้ใช้ข้อมูลเมื่อ `age = consumerClock - sourceTimestamp` มากกว่า `maxAge` ที่กำหนดไว้สำหรับการกระทำนั้น ราคาที่ไม่เปลี่ยนแปลงยังอาจเป็นข้อมูลปัจจุบัน ส่วนค่าที่เพิ่งเผยแพร่ก็ยังอาจผิดจากสภาพเศรษฐกิจ ผู้ใช้ข้อมูลจึงต้องปฏิเสธเวลาที่ไม่มีค่า อยู่ในอนาคต หรือคำตอบที่ไม่ถูกต้องก่อน แล้วจึงใช้นโยบายยอมรับที่เจาะจงกับฟีด สินทรัพย์ เชน เวลาทำการของตลาด และการกระทำ

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

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

<a id="mechanism"></a>

## กลไกการทำงาน

1. ระบุเชน บล็อกและนาฬิกา สัญญาและการกระทำของผู้ใช้ข้อมูล พร็อกซีและแอกกรีเกเตอร์ของฟีด คู่สินทรัพย์และทศนิยม รุ่นอินเทอร์เฟซ การตั้งค่าแหล่งสำรอง และสถานะการอัปเกรดให้ชัดเจน
2. อ่านค่าตอบกลับตามอินเทอร์เฟซที่ติดตั้งจริงและรองรับกรณีเรียกย้อนกลับหรือไม่มีข้อมูล ตรวจสอบคำตอบ สถานะหรือค่าความเชื่อมั่นเมื่อเกี่ยวข้อง รวมทั้ง `sourceTimestamp != 0` และ `sourceTimestamp <= consumerClock` ก่อนลบค่า
3. บันทึกรอบการอัปเดต เกณฑ์ความเบี่ยงเบน เวลาทำการตลาด และการตั้งค่าเผยแพร่ แล้วกำหนด `maxAge` แยกสำหรับแต่ละการกระทำ ระบุขอบเขตให้ชัด เช่น ยอมรับ `age <= maxAge` และปฏิเสธ `age > maxAge`
4. บน L2 ที่รองรับ ให้ตรวจสอบการเริ่มต้นและสถานะของฟีดซีเควนเซอร์ คำนวณเวลาหลังฟื้นตัวจากฟิลด์ที่เอกสารระบุ และบังคับใช้ระยะผ่อนผันที่กำหนด ก่อนตรวจความสดใหม่ของราคาแยกต่างหาก
5. ติดตามทุกองค์ประกอบที่จำเป็นของราคาแบบประกอบ ราคาอัตราส่วน และราคาสำรอง ปรับทิศทางและหน่วยให้เป็นมาตรฐาน และจำกัดความสดใหม่ที่มีผลด้วยองค์ประกอบจำเป็นที่เก่าที่สุด ไม่ใช่เวลาล่าสุด
6. กำหนดสถานะปกติ ลดระดับ และหยุดชั่วคราวแยกตามการกระทำ การกู้ใหม่ การสร้างสินทรัพย์ หรือการเพิ่มเลเวอเรจอาจถูกปิด ขณะที่ยังอนุญาตการชำระหนี้หรือเพิ่มหลักประกัน ทดสอบราคาล้าสมัย ราคาสำรอง และราคาหลังฟื้นตัวกับความเสี่ยง สภาพคล่อง และขีดความสามารถของผู้ชำระบัญชี
7. เฝ้าติดตามการเปลี่ยนแปลงแหล่งข้อมูลและพร็อกซี ความล่าช้า อัตราการปฏิเสธ สถานะซีเควนเซอร์ ความต่างระหว่างแหล่ง และเวลาทำการตลาด พร้อมซ้อมเหตุขัดข้อง แหล่งสำรองล้มเหลว ราคากระโดดหลังฟื้นตัว การชำระบัญชีกระจุกตัว MEV การบันทึกหนี้สูญ และการกลับสู่โหมดปกติ

สำหรับอินเทอร์เฟซแบบ Chainlink ฟังก์ชัน `latestRoundData()` อาจแสดงรหัสรอบ คำตอบที่มีเครื่องหมาย เวลาเริ่ม เวลาปรับปรุง และฟิลด์รอบแบบเดิม API ปัจจุบันระบุว่า `answeredInRound` เลิกใช้แล้ว จึงไม่ควรนำการตรวจอสมการในอดีตมาเป็นกฎสากลในปัจจุบัน ต้องตรวจพร็อกซี แอกกรีเกเตอร์ และการติดตั้งจริง เวลาอัปเดตบอกเพียงว่าระบบปรับสถานะฟีดตามเอกสารเมื่อใด ไม่ได้หมายความว่าราคานั้นซื้อขายได้ทุกขนาด ส่วน `block.timestamp` ใน Solidity คือเวลาของบล็อกปัจจุบันภายใต้ข้อจำกัดฉันทามติ ไม่ใช่ออราเคิลเวลาภายนอก

<a id="example"></a>

## ตัวอย่างคำนวณ

- **ขอบเขตอายุสูงสุด** กำหนด `consumerClock = 1,800,000,000` และ `sourceTimestamp = 1,799,999,100` จึงได้ `age = 900 seconds = 15 minutes` นโยบาย `maxAge = 600 seconds` ปฏิเสธเพราะเกิน `300 seconds` ส่วนนโยบาย `maxAge = 1,200 seconds` ยอมรับโดยเหลือระยะ `300 seconds` ค่าจากฟีดเดียวกันจึงอาจใช้ได้กับการกระทำหนึ่งแต่ล้าสมัยสำหรับอีกการกระทำ
- **ตัวกระตุ้นไม่ใช่ความสดใหม่** ราคาที่เผยแพร่ล่าสุดคือ `100.00` เกณฑ์ความเบี่ยงเบนคือ `1%` และรอบการอัปเดตคือ `3,600 seconds` หลัง `2,700 seconds` ราคาตลาดที่สังเกตได้ `100.80` ต่างเพียง `0.8%` จึงยังไม่เข้าเงื่อนไขตัวกระตุ้นตัวอย่าง เมื่อราคาเป็น `101.20` ความเบี่ยงเบนเท่ากับ `1.2%` และอาจเริ่มเผยแพร่ แต่ผู้ใช้ข้อมูลยังอ่าน `100.00` จนกว่ารายงานใหม่ที่ถูกต้องจะรวมอยู่บนเชน
- **ด่านสองชั้นบน L2** ฟีดรายงานว่าซีเควนเซอร์ทำงาน โดยมี `startedAt = 1,799,996,400`, `consumerClock = 1,800,000,000` และ `grace = 3,600 seconds` เวลาที่ผ่านไปจึงเท่ากับ `3,600 seconds` พอดี ภายใต้นโยบายที่ปิดกั้นขณะ `elapsed <= grace` การกระทำยังถูกปิดและจะเริ่มมีสิทธิ์เมื่อ `3,601 seconds` ทั้งนี้ยังต้องผ่านการตรวจเวลาราคา คำตอบ และเงื่อนไขอื่นของผู้ใช้ข้อมูลแยกต่างหาก
- **ราคากระโดดหลังฟื้นตัว** หากมีหลักประกัน `10 ETH` หนี้ `12,000 USD` และเกณฑ์ชำระบัญชี `75%` ราคาเก่า `2,000 USD/ETH` ให้ `healthFactor = 10 * 2,000 * 0.75 / 12,000 = 1.25` เมื่อราคากลับมาเป็น `1,400 USD/ETH` ค่าจะเป็น `0.875` บัญชีจึงเข้าเงื่อนไขชำระบัญชีตามข้อมูลตัวอย่าง แต่การดำเนินการจริงยังขึ้นกับกฎโปรโตคอล สภาพคล่อง ผู้ชำระบัญชี ค่าแก๊ส ลำดับ และความพร้อมของเชน

<a id="risks"></a>

## ความเสี่ยง

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

<a id="misconceptions"></a>

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

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

<a id="related"></a>

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

- [ออราเคิล](/th/crypto/oracle/)
- [การโจมตีออราเคิล](/th/crypto/oracle-attack/)
- [การรับมือเมื่อซีเควนเซอร์หยุดทำงาน](/th/crypto/sequencer-downtime-response/)

<a id="sources"></a>

## แหล่งข้อมูล

- [Chainlink Data Feeds](https://docs.chain.link/data-feeds) - Chainlink Documentation (เข้าถึงเมื่อ: 2026-08-13)
- [Data Feeds API Reference](https://docs.chain.link/data-feeds/api-reference) - Chainlink Documentation (เข้าถึงเมื่อ: 2026-08-13)
- [Developer Responsibilities](https://docs.chain.link/data-feeds/developer-responsibilities) - Chainlink Documentation (เข้าถึงเมื่อ: 2026-08-13)
- [L2 Sequencer Uptime Feeds](https://docs.chain.link/data-feeds/l2-sequencer-feeds) - Chainlink Documentation (เข้าถึงเมื่อ: 2026-08-13)
- [How to Use Real-Time Data in EVM Contracts](https://docs.pyth.network/price-feeds/core/use-real-time-data/pull-integration/evm) - Pyth Developer Hub (เข้าถึงเมื่อ: 2026-08-13)
- [Best Practices](https://docs.pyth.network/price-feeds/core/best-practices) - Pyth Developer Hub (เข้าถึงเมื่อ: 2026-08-13)
- [Units and Globally Available Variables](https://docs.soliditylang.org/en/latest/units-and-global-variables.html) - Solidity Documentation (เข้าถึงเมื่อ: 2026-08-13)
- [SC03:2026 Price Oracle Manipulation](https://scs.owasp.org/sctop10/SC03-PriceOracleManipulation/) - OWASP Smart Contract Security (เข้าถึงเมื่อ: 2026-08-13)

Source: https://wiki.fcontext.com/th/crypto/oracle-price-staleness/index.mdx
