﻿---
title: "Oracle TWAP"
description: "Oracle TWAP memperoleh acuan berbobot waktu dari observasi kumulatif yang spesifik terhadap protokol; harga aritmetis v2 dan tick rata-rata v3 memiliki batas matematika, riwayat, likuiditas, dan manipulasi yang berbeda."
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.

# Oracle TWAP

> Hanya untuk tujuan edukasi; bukan merupakan nasihat investasi atau rekomendasi investasi. Investasi dapat mengakibatkan kerugian.

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

## Jawaban langsung

Oracle harga rata-rata berbobot waktu memperoleh acuan dari observasi kumulatif selama interval yang dinyatakan. Tidak ada satu rumus universal. Uniswap v2 mengakumulasi harga marjinal linear untuk setiap arah pada pool, sehingga selisih titik akhir menghasilkan TWAP aritmetis. Uniswap v3 mengakumulasi tick, yaitu koordinat harga logaritmis, sehingga tick rata-rata aritmetis dipetakan menjadi harga relatif rata-rata geometris.

Hasil baru bermakna setelah menetapkan jaringan, pool, implementasi, tingkat biaya, urutan token, arah aset dasar/kotasi, desimal, titik akhir, waktu berlalu, riwayat yang terisi, dan pembulatan. Pembacaan yang berhasil tidak membuktikan nilai wajar maupun kedalaman eksekusi. Jendela yang lebih panjang mengencerkan distorsi singkat tetapi menambah jeda, serta tidak mengalahkan manipulasi berkelanjutan, celah likuiditas terkonsentrasi, kendali pengusul blok atau sequencer, reorganisasi, maupun konsumen dengan nilai yang dapat diekstraksi melebihi biaya manipulasi.

Kemutakhiran observasi dan kemutakhiran pasar adalah hal terpisah. Rata-rata yang dihitung sekarang dapat sengaja mempertahankan rezim harga lama; pool aktif tetap dapat memiliki likuiditas tipis atau terpisah dari pasar eksternal. Karena itu, konsumen memerlukan pemeriksaan riwayat, likuiditas dan deviasi, batas khusus tindakan, serta perilaku yang jelas ketika terdegradasi atau dijeda.

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

## Cara kerjanya

1. Tetapkan jaringan dan blok, pabrik dan alamat pool, versi protokol dan tingkat biaya, `token0` dan `token1`, desimal, arah aset dasar/kotasi, tindakan konsumen, jendela, dan nilai yang dipertaruhkan.
2. Identifikasi objek yang diakumulasi beserta satuannya: `price0Cumulative` atau `price1Cumulative` linear pada v2, `tickCumulative` pada v3, atau statistik terdokumentasi milik protokol lain. Jangan memindahkan aritmetika antarimplementasi.
3. Verifikasi stempel waktu titik akhir, waktu berlalu positif, riwayat terlama yang telah diinisialisasi, kardinalitas observasi saat ini, serta aturan interpolasi atau kontrafaktual. `observationCardinalityNext` adalah kapasitas sasaran, bukan riwayat yang sudah terisi.
4. Untuk v2, bagi perubahan harga kumulatif dengan detik yang berlalu, lalu normalkan satuan titik tetap dan desimal token. Hitung setiap arah kotasi secara independen; TWAP aritmetis terbalik umumnya bukan kebalikan dari TWAP arah maju.
5. Untuk v3, panggil antarmuka observasi terdokumentasi, bagi perubahan tick kumulatif dengan jendela, bulatkan hasil bagi negatif yang tidak bulat menuju negatif tak terhingga seperti `OracleLibrary`, lalu petakan tick rata-rata menjadi kotasi ternormalisasi memakai `price = 1.0001^tick`.
6. Ukur likuiditas aktif dalam rentang, harmonis, rentang luas, tingkat biaya, dan pasar eksternal. Uji jalur satu dan multiblok, biaya, arbitrase, pengurutan, sensor, kerugian pembalikan, reorganisasi, jeda, serta nilai konsumen yang dapat diekstraksi.
7. Bandingkan TWAP dengan spot dan acuan independen dalam batas kemutakhiran serta deviasi yang eksplisit; pantau riwayat, rentang likuiditas, peningkatan pool dan kondisi jaringan, serta latih jalur riwayat tidak cukup, divergensi, jeda, cadangan, likuidasi, dan pemulihan.

Uniswap v2 menyimpan dua nilai kumulatif berarah dan memajukannya seiring waktu. Uniswap v3 menyimpan observasi dalam penyangga melingkar dan dapat menginterpolasi antarobservasi atau membentuk nilai kumulatif kontrafaktual terkini. Titik akhir bentukan tersebut valid dalam aritmetika protokol, tetapi bukan bukti transaksi terjadi pada saat itu. Meningkatkan kardinalitas menyediakan ruang untuk observasi masa depan; tindakan itu tidak mengisi riwayat lama secara surut.

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

## Contoh terhitung

- **Harga kumulatif v2.** Jika `C_start = 1,000,000 price-seconds`, `C_end = 1,360,000 price-seconds`, dan `elapsed = 3,600 seconds`, maka `TWAP = (1,360,000 - 1,000,000) / 3,600 = 100 quote/base`. Titik akhir, arah, skala, dan stempel waktu merupakan bagian dari hasil.
- **Jebakan kebalikan.** Harga arah maju adalah `100` selama `900 seconds` dan `400` selama `900 seconds`, sehingga TWAP aritmetisnya `250`. Harga spot terbalik adalah `0.01` dan `0.0025`; TWAP aritmetisnya `0.00625`, yang kebalikannya `160`, bukan `250`. Operasi merata-ratakan dan membalik tidak komutatif.
- **Tick rata-rata negatif.** Misalkan `tickCumulativeDelta = -39,601` selama `3,600 seconds`. Pembagian bertanda Solidity memotong hasil menjadi `-11` dengan sisa, tetapi pustaka v3 membulatkan ke bawah menjadi `meanTick = -12`. Harga geometris relatif adalah `1.0001^-12 = 0.998800779636`. Kesalahan tanda atau pembulatan secara sistematis mengubah sisi kotasi.
- **Pengenceran dan jeda.** Pool berada pada `100` selama `1,740 seconds` dan `400` selama `60 seconds` dalam jendela `1,800-second`. TWAP aritmetis bergaya v2 adalah `(100 * 1,740 + 400 * 60) / 1,800 = 110`; rata-rata geometris bergaya v3 adalah `100^(29/30) * 400^(1/30) = 104.7294122821`. Keduanya berbeda dari spot saat ini `400` dan satu sama lain; kedua angka itu sendiri tidak menyatakan biaya manipulasi atau ukuran yang dapat dieksekusi.

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

## Risiko

- Jaringan, pabrik, pool, tingkat biaya, implementasi, atau status peningkatan salah.
- Arah aset dasar/kotasi atau orientasi `token0`/`token1` terbalik.
- Desimal token, skala titik tetap, atau normalisasi kotasi salah.
- Harga aritmetis v2 dan harga geometris v3 diperlakukan sebagai statistik yang sama.
- TWAP aritmetis terbalik dihitung sebagai kebalikan TWAP arah maju.
- Titik akhir kumulatif, waktu berlalu, batas jendela, atau blok saat ini salah.
- Aritmetika stempel waktu nol, negatif, tergulung, atau khusus implementasi salah ditangani.
- Riwayat yang diminta lebih lama daripada observasi terlama yang diinisialisasi.
- `observationCardinalityNext` disalahartikan sebagai `observationCardinality` yang telah terisi.
- Observasi interpolasi atau kontrafaktual disalahartikan sebagai transaksi nyata.
- Tick rata-rata negatif dibulatkan menuju nol, bukan negatif tak terhingga.
- Konversi tick, rentang integer, overflow, atau pembulatan kotasi tidak aman.
- Likuiditas aktif dalam rentang atau harmonis terlalu tipis bagi eksposur yang dilindungi.
- Kedalaman rentang luas tidak ada, ditarik, atau diabaikan dalam analisis manipulasi.
- Likuiditas terpecah antara pool, tingkat biaya, jaringan, atau pasar berkorelasi.
- Jendela pendek tetap sensitif terhadap manipulasi satu blok, atomik, atau sementara.
- Jendela panjang tertinggal dari perubahan harga nyata, pelepasan patokan, atau migrasi likuiditas.
- Kondisi pengusul multiblok, sequencer, sensor, kemacetan, MEV, atau reorganisasi mengurangi koreksi atau meningkatkan kendali.
- TWAP dianggap nilai wajar mutakhir atau harga yang dapat dieksekusi pada ukuran berapa pun tanpa pemeriksaan deviasi dan kedalaman.
- Eksposur konsumen melebihi biaya manipulasi, sementara cadangan, pemutus sirkuit, jeda, likuidasi, dan pemulihan tidak aman.

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

## Kesalahpahaman umum

- **"TWAP selalu berarti rata-rata aritmetis harga."** v3 merata-ratakan tick sehingga menghasilkan harga relatif rata-rata geometris.
- **"Kotasi terbalik selalu satu dibagi TWAP arah maju."** Simetri tersebut tidak berlaku pada harga linear yang dirata-ratakan secara terpisah.
- **"Jendela lebih panjang membuat manipulasi mustahil."** Jendela itu menukar sensitivitas distorsi singkat dengan jeda dan tetap dapat dipengaruhi kendali berkelanjutan atau likuiditas lemah.
- **"Meningkatkan kardinalitas langsung menciptakan lebih banyak riwayat."** Hal itu hanya menambah kapasitas masa depan; observasi harus diinisialisasi setelahnya.
- **"Pembacaan oracle yang baru dan berhasil membuktikan nilai pasar wajar dan dapat dieksekusi."** Keberhasilan antarmuka tidak menetapkan kemutakhiran ekonomi, kedalaman, independensi, atau keamanan eksposur konsumen.

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

## Topik terkait

- [Pembuat pasar otomatis](/id/crypto/amm/)
- [Serangan oracle](/id/crypto/oracle-attack/)
- [Harga oracle kedaluwarsa](/id/crypto/oracle-price-staleness/)

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

## Sumber

- [Uniswap v2 Core](https://app.uniswap.org/whitepaper.pdf) - Uniswap (diakses: 2026-08-13)
- [Oracles](https://developers.uniswap.org/docs/protocols/v2/concepts/oracles) - Uniswap Developers (diakses: 2026-08-13)
- [Uniswap v3 Core](https://uniswap.org/whitepaper-v3.pdf) - Uniswap (diakses: 2026-08-13)
- [Price Oracles](https://developers.uniswap.org/docs/protocols/v3/concepts/price-oracles) - Uniswap Developers (diakses: 2026-08-13)
- [Oracle.sol](https://github.com/Uniswap/v3-core/blob/main/contracts/libraries/Oracle.sol) - Uniswap v3 Core (diakses: 2026-08-13)
- [OracleLibrary.sol](https://github.com/Uniswap/v3-periphery/blob/main/contracts/libraries/OracleLibrary.sol) - Uniswap v3 Periphery (diakses: 2026-08-13)
- [Uniswap v3 TWAP Oracles in Proof of Stake](https://blog.uniswap.org/uniswap-v3-oracles) - Uniswap Labs (diakses: 2026-08-13)
- [SC03:2026 Price Oracle Manipulation](https://scs.owasp.org/sctop10/SC03-PriceOracleManipulation/) - OWASP Smart Contract Security (diakses: 2026-08-13)

Source: https://wiki.fcontext.com/id/crypto/oracle-twap/index.mdx
