For the complete documentation index, see llms.txt. This page is also available as Markdown.

Thực hành tốt nhất

Các mẫu xác thực, API trạng thái sức khỏe, kiểm tra staleness, và danh sách kiểm tra tích hợp để sử dụng nguồn giá Chiliz Chain một cách an toàn.

Luôn Xác Thực Trước Khi Sử Dụng Giá

latestRoundData() revert với NoDataAvailable() nếu không có round nào tồn tại, nhưng không thực thi kiểm tra staleness hoặc tạm dừng — nó trả về các giá trị đã lưu trữ như nguyên bản. Trước khi sử dụng bất kỳ giá trị giá nào, luôn thực hiện ba kiểm tra sau:

  1. Kiểm tra tạm dừng: gọi paused() và từ chối nếu nguồn giá bị tạm dừng.

  2. Giá trị dương: yêu cầu answer > 0.

  3. Kiểm tra staleness: kiểm soát bằng getHealthStatus().isHealthy.

Ví dụ getSafePrice() trong Đọc Giá triển khai cả ba.

API Trạng Thái Sức Khỏe

Mỗi PriceFeed cung cấp một view getHealthStatus() tổng hợp thông tin về độ tươi mới trong một lần gọi:

function getHealthStatus()
    external view
    returns (
        uint256 lastUpdateTimestamp,
        uint256 totalRounds,
        uint256 timeSinceLastUpdate,
        bool isHealthy
    );
Trường
Mô tả

lastUpdateTimestamp

updatedAt của round gần nhất

totalRounds

Tổng số round đã ghi

timeSinceLastUpdate

block.timestamp - lastUpdateTimestamp (hoặc block.timestamp nếu không có dữ liệu)

isHealthy

true nếu timeSinceLastUpdate <= updateInterval × healthFactor

Health factor được khởi tạo là 2 theo mặc định nhưng có thể cấu hình theo từng nguồn giá bởi quản trị viên oracle qua setHealthFactor(). Không hardcode 2 — đọc trực tiếp từ hợp đồng:

Cửa sổ sức khỏe là updateInterval × healthFactor, cả hai được cấu hình theo từng nguồn giá — updateInterval là khoảng cách tối thiểu on-chain nhỏ, không phải heartbeat. Nó thay đổi theo từng nguồn giá: CHZ/USDC sử dụng cửa sổ 5s × 720 = 1 giờ, PEPPER/CHZ sử dụng cửa sổ 10s × 720 = 2 giờ, trong khi pipeline off-chain đẩy theo heartbeat khoảng 1 giờ. Đừng bao giờ dùng updateInterval một mình làm cơ sở staleness — kiểm soát bằng isHealthy — xem getSafePrice() trong Đọc Giá để biết mẫu đầy đủ.

Sử dụng getAllOracleHealthStatus() trên OracleFactoryReader để theo dõi mọi nguồn giá trong hệ thống cùng một lúc — hữu ích cho dashboard và cảnh báo off-chain.

Cache decimals()

Mỗi cặp có độ chính xác thập phân riêng — luôn gọi decimals() để xác nhận trước khi diễn giải giá trị giá. Decimals được thiết lập khi triển khai và không bao giờ thay đổi, vì vậy hãy đọc chúng một lần khi khởi tạo hợp đồng thay vì mỗi lần đọc giá:

Xử Lý Trạng Thái Tạm Dừng Một Cách Thanh Lịch

Trong trường hợp khẩn cấp, quản lý oracle có thể tạm dừng một nguồn giá. Xử lý revert kết quả một cách rõ ràng thay vì âm thầm sử dụng giá trị xấu:

Sử Dụng Tracker Trong Quá Trình Phát Triển

Price Oracle Tracker cho phép bạn so sánh giá on-chain với CoinMarketCap và CoinGecko theo thời gian thực, giúp dễ dàng xác thực độ chính xác của nguồn giá trong quá trình tích hợp. Nó cũng hiển thị trạng thái sức khỏe trực tiếp, thông số heartbeat, và địa chỉ hợp đồng riêng lẻ cho mọi cặp.

Danh Sách Kiểm Tra Tích Hợp

Cập nhật lần cuối

Nội dung này có hữu ích không?