Skip to content
Semua panduan opsi dan kontrak berjangka
Acuan harga DeFi8 menit baca

Cara oracle harga DeFi mengagregasi dan menerbitkan harga

Pelajari agregasi observasi, pemicu heartbeat dan deviasi, satuan serta pemeriksaan data usang, dan batas pemeriksaan sequencer L2.

Dalam panduan iniOracle menerbitkan acuan, bukan harga pasar yang dapat dieksekusi

Ringkasan singkat

Oracle harga membawa acuan eksternal ke kontrak pintar. Dalam desain push-feed yang umum, beberapa observasi offchain digabung dalam laporan bertanda tangan, diterbitkan onchain, lalu protokol membaca jawaban terbaru. Deviasi dan heartbeat memengaruhi waktu penerbitan; konsumen juga harus memeriksa decimals, unit kuotasi, `updatedAt`, dan status sequencer pada sebagian L2. Kontrol ini mengurangi risiko tertentu, tetapi tidak membuktikan bahwa harga benar, cukup baru untuk semua penggunaan, atau aman untuk setiap transaksi.

Oracle menerbitkan acuan, bukan harga pasar yang dapat dieksekusi

Oracle menghubungkan informasi di luar blockchain dengan kode yang berjalan onchain. Protokol pinjaman dapat membaca feed untuk menilai agunan; kontrak derivatif dapat memakai acuan untuk penyelesaian atau batas risiko. Kontrak membaca nilai dalam state chain, tetapi tidak memeriksa semua order book eksternal untuk menentukan sendiri harga yang adil.

“Harga” dapat berarti pasangan aset dan mata uang kuotasi, tingkat penebusan yang ditentukan protokol, atau ukuran lain. Nilainya tidak otomatis sama dengan harga jual untuk posisi besar. Panduan dampak harga dan slippage swap DEX serta mark price dibanding perdagangan terakhir membahas perbedaan lain. Panduan ini berfokus pada push feed EVM umum, bukan aturan universal DeFi.

Bagaimana observasi menjadi jawaban onchain

Pada desain Offchain Reporting Chainlink, node oracle bertukar observasi offchain dan menyepakati laporan. Quorum menandatangani laporan; transmitter mengirimkannya dalam transaksi; aggregator memverifikasi tanda tangan lalu menampilkan jawaban, ID ronde, dan timestamp. Dokumentasi Offchain Reporting menjelaskan median observasi yang diterbitkan desain tersebut.

Consumer contract biasanya tidak mengulang seluruh agregasi, tetapi memanggil latestRoundData() pada alamat proxy feed. Aggregator di balik proxy dapat berubah. Cocokkan network dan feed di panduan EVM dan referensi API. Banyak node tidak memastikan sumber data mandiri; beberapa operator mungkin memakai bursa atau provider yang sama.

Adegan tanpa teks memperlihatkan pengamatan pasar melewati jaringan node menuju feed harga, lalu gerbang pemeriksaan menuju brankas agunan.
Pengamatan digabung sebelum protokol membaca feed; kesegaran harga dan status sequencer merupakan pemeriksaan terpisah.

Heartbeat dan deviasi mengatur pemicu penerbitan

Banyak push feed menggabungkan ambang deviasi dan heartbeat. Perubahan persentase tertentu dari jawaban terakhir dapat memicu laporan baru; heartbeat dapat meminta update setelah jeda waktu meski tidak ada perubahan besar. Direktori Data Feeds dan halaman alamat feed memuat parameter sesuai aset, jaringan, dan feed.

Parameter tersebut khusus feed, bukan janji update setiap N detik. Perubahan kecil mungkin tidak melewati ambang deviasi; laporan yang diminta masih perlu diamati, dikirim, dan dimasukkan ke blok. Jadi heartbeat tidak menjamin waktu kedatangan persis atau mencegah nilai usang. Protokol harus menentukan usia maksimum sesuai kecepatan aset dan fungsinya.

Pahami answer, decimals, dan unit kuotasi

latestRoundData() mengembalikan ID ronde, answer, startedAt, updatedAt, dan answeredInRound; referensi API menandai field terakhir sebagai deprecated. answer adalah bilangan fixed-point, bukan selalu angka dolar yang mudah dibaca. Periksa decimals() dan deskripsi feed yang dipilih. Jika feed BTC/USD hipotetis mengembalikan 6,725,000,000,000 dengan 8 decimals, nilainya $67.250 per BTC.

Decimals feed berbeda dari decimals token. Jumlah ERC-20 dapat memakai 18 decimals, sedangkan jawaban harga memakai 8; skala tiap angka sesuai satuannya sebelum dikalikan. BTC/USD berarti dolar per bitcoin; USD/BTC adalah unit kebalikannya. Untuk membuat pasangan turunan, skala kedua feed lalu bagi dalam urutan yang benar; contoh denominasi harga menunjukkan BTC/EUR dari BTC/USD dan EUR/USD.

Pemeriksaan data usang adalah aturan aplikasi

updatedAt menunjukkan waktu update ronde terbaru. Consumer dapat membandingkannya dengan timestamp blok saat ini dan menolak jawaban yang lebih tua dari batas aplikasi. Bergantung feed, periksa juga waktu nonzero, jawaban positif untuk aset dengan harga positif, dan batas yang masuk akal. Batas yang terlalu ketat dapat menolak pergerakan pasar yang sah.

Bayangkan pasar pinjaman hipotetis menerima empat unit agunan dengan faktor 75%. Jawaban terakhir 200,000,000,000 dengan 8 decimals berarti $2.000 per unit, sehingga batas pinjaman 4 × $2.000 × 75% = $6.000. Jika pasar turun ke $1.820, penurunannya 9%. Dengan asumsi deviasi 10% dan heartbeat 60 menit, laporan baru mungkin belum diminta; memakai harga lebih rendah memberi batas $5.460.

Jika aplikasi menolak harga lebih dari lima menit dan ronde ini berumur dua puluh menit, pinjaman baru dapat dihentikan alih-alih memakai angka $2.000. Pemeriksaan tidak memperbarui feed; pemeriksaan mengubah tindakan yang diizinkan saat data melewati usia batas. Pinjaman, penarikan, likuidasi, dan pembayaran kembali dapat memiliki respons berbeda karena menghentikan semua tindakan juga berisiko. Angka dan pemicu hanya ilustrasi, bukan konfigurasi feed terkini atau rekomendasi.

Pemeriksaan sequencer L2 menangani risiko gangguan berbeda

Pada banyak L2, pengguna mengirim transaksi melalui sequencer. Saat gangguan atau pemulihan, transaksi bisa tertunda, penggunaan normal terhenti, dan order yang menunggu dapat dieksekusi setelah kondisi pasar berubah. Jawaban harga L2 yang tampak baru tidak membuktikan jalur eksekusi tersedia atau semua pengguna sempat bertindak bersama.

Chainlink mendokumentasikan feed status sequencer L2 terpisah: answer == 0 berarti aktif dan answer == 1 berarti mati. startedAt menyimpan waktu perubahan status; contoh consumer memeriksa status lalu menunggu masa tenggang yang ditetapkan aplikasi setelah pemulihan sebelum membaca harga. Periksa address dan perilaku jaringan di panduan L2 Sequencer Uptime Feeds. Masa tenggang tidak menjamin harga diperbarui atau transaksi tertunda selesai.

Kontrol ini tidak menjamin hasil benar atau adil

Quorum, median, deviasi, heartbeat, batas usia, dan status sequencer masing-masing menjawab pertanyaan terbatas. Itu tidak menjamin likuiditas, identitas aset yang benar, provider independen, atau harga eksekusi untuk ukuran tertentu. Timestamp baru dapat menyertai nilai salah atau dimanipulasi; nilai lama mungkin masih dekat dengan pasar yang tenang.

Tidak ada pemicu yang menghapus gap harga, kemacetan, atau bug scaling, pasangan, freshness, dan likuidasi. Panduan pemilihan Data Feeds berkualitas menyarankan evaluasi likuiditas dan dependensi serta penanganan data usang, tertunda, hilang, atau tak terduga. Risiko kontrak, tata kelola, bridge, agunan, dan likuidasi tetap ada. Harga oracle stablecoin juga tidak menjamin penebusan setara nominal; baca panduan depeg.

Telusuri seluruh jalur harga sebelum mengandalkannya

Identifikasi chain, feed proxy, pasangan aset, mata uang kuotasi, decimals jawaban, dan alamat kontrak. Cocokkan deskripsi dengan aset yang dimaksud dan jangan menyalin alamat dari jaringan lain. Tinjau model sumber dan riwayat update bila penggunaan membutuhkan pemantauan lebih ketat. Chainlink menyebut aggregator dapat berbeda antarjaringan sehingga kode serta konfigurasi perlu diperiksa.

Kemudian telusuri penggunaan jawaban: skala jumlah dan unit harga, periksa updatedAt, umur maksimum, dan respons pada nilai tidak valid. Pada L2, verifikasi feed uptime, timestamp pemulihan, masa tenggang, dan transaksi tertunda. Tinjau kasus feed usang serta gangguan/pemulihan pada logika kontrak sebenarnya. Untuk membandingkan kolom harga, lihat mark price versus perdagangan terakhir.

Pertanyaan umum

Q1Apakah heartbeat memastikan harga selalu lebih baru dari interval itu?

Tidak. Itu pemicu waktu dalam desain feed, bukan jaminan publikasi dan inklusi blok pada waktu tepat atau kecocokan dengan pasar langsung. Periksa updatedAt dan tetapkan kebijakan freshness yang sesuai.

Q2Bisakah feed oracle median tetap salah?

Bisa. Median dapat membatasi beberapa outlier, tetapi tidak memperbaiki sumber bersama yang bermasalah, pasar tipis, pasangan keliru, atau bug pada logika consumer.

Q3Apakah feed uptime sequencer L2 sama dengan pemeriksaan harga usang?

Tidak. Feed uptime melaporkan status sequencer dan waktu perubahan; stale check membandingkan updatedAt harga dengan waktu sekarang. Aplikasi mungkin membutuhkan keduanya dan masa tenggang pemulihan.

Sumber dan bacaan lanjutan

Laporkan masalah

Kami akan menyiapkan email berisi tautan artikel ini. Mark menerima laporan setelah Anda mengirimkannya

Cek cepat

Sudah membaca panduannya? Uji diri dengan 3 pertanyaan

Pertanyaan 1 / 3

Pertanyaan 01

Feed BTC/USD dengan 8 decimals memberi `6,725,000,000,000`. Berapa harga setelah diskalakan?

Pilih jawaban untuk melihat penjelasannya

Glosarium opsi