﻿---
title: "Oracle TWAP"
description: "Un oracle TWAP calcule une référence pondérée dans le temps à partir d’observations cumulées propres au protocole ; prix arithmétiques v2 et ticks moyens v3 diffèrent par leurs mathématiques et leurs limites."
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

> À des fins éducatives uniquement ; ne constitue ni un conseil en investissement ni une recommandation d’investissement. Les investissements peuvent entraîner des pertes.

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

## Réponse directe

Un oracle de prix moyen pondéré dans le temps calcule une référence à partir d’observations cumulées sur un intervalle défini. Il n’existe pas de formule universelle. Uniswap v2 cumule le prix marginal linéaire du pool dans chaque sens ; les différences entre extrémités produisent donc des TWAP arithmétiques. Uniswap v3 cumule le tick, coordonnée logarithmique du prix ; le tick moyen arithmétique correspond ainsi à un prix relatif moyen géométrique.

Le résultat n’a de sens qu’après avoir fixé blockchain, pool, implémentation, niveau de frais, ordre des tokens, sens base/cotation, décimales, extrémités, durée, historique rempli et arrondi. Une lecture réussie ne prouve ni juste valeur ni profondeur exécutable. Une fenêtre plus longue dilue une brève distorsion mais accroît le retard et n’empêche ni manipulation prolongée, ni lacunes de liquidité concentrée, ni contrôle du proposant ou séquenceur, ni reorg, ni consommateur dont la valeur extractible dépasse le coût de manipulation.

Fraîcheur des observations et fraîcheur du marché sont distinctes. Une moyenne calculée maintenant peut conserver un ancien régime ; un pool actif peut rester peu liquide ou détaché des marchés externes. Le consommateur doit donc contrôler historique, liquidité et divergence, imposer des limites par action et définir un fonctionnement dégradé ou suspendu.

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

## Fonctionnement

1. Fixer blockchain et bloc, factory et adresse du pool, version et niveau de frais, `token0` et `token1`, décimales, sens base/cotation, action, fenêtre et valeur exposée.
2. Identifier l’objet cumulé et ses unités : `price0Cumulative` ou `price1Cumulative` linéaire v2, `tickCumulative` v3 ou autre statistique documentée. Ne pas transposer l’arithmétique.
3. Vérifier horodatages, durée positive, plus ancien historique initialisé, cardinalité actuelle et règles contrefactuelles. `observationCardinalityNext` est une capacité cible, pas un historique déjà rempli.
4. En v2, diviser la variation du prix cumulatif par les secondes et normaliser virgule fixe et décimales. Calculer chaque sens séparément ; le TWAP arithmétique inverse n’est généralement pas le réciproque du direct.
5. En v3, appeler l’interface documentée, diviser la variation du tick par la fenêtre, arrondir un quotient négatif non exact vers moins l’infini comme `OracleLibrary`, puis convertir par `price = 1.0001^tick`.
6. Mesurer liquidité in-range, harmonique, wide-range, par niveau et externe. Tester chemins sur un et plusieurs blocs, frais, arbitrage, ordonnancement, censure, perte de débouclage, reorg, retard et valeur extractible.
7. Comparer TWAP, spot et références indépendantes sous des limites explicites ; surveiller historique, liquidité, upgrades et blockchain, puis tester historique insuffisant, divergence, pause, repli, liquidation et reprise.

Uniswap v2 conserve deux cumuls directionnels. Uniswap v3 stocke ses observations dans un tampon circulaire et peut interpoler ou construire un cumul courant contrefactuel. Ces extrémités sont une arithmétique valide, non la preuve d’une transaction à cet instant. Accroître la cardinalité réserve de l’espace futur sans remplir le passé.

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

## Exemples détaillés

- **Prix cumulatif v2.** Si `C_start = 1,000,000 price-seconds`, `C_end = 1,360,000 price-seconds` et `elapsed = 3,600 seconds`, alors `TWAP = (1,360,000 - 1,000,000) / 3,600 = 100 quote/base`. Extrémités, sens, échelle et horodatages font partie du résultat.
- **Piège du réciproque.** Le prix direct vaut `100` pendant `900 seconds` et `400` pendant `900 seconds`, donc TWAP `250`. Les spots inverses sont `0.01` et `0.0025`, avec TWAP `0.00625`, dont le réciproque est `160`, pas `250`. Moyenne et inversion ne commutent pas.
- **Tick moyen négatif.** Soit `tickCumulativeDelta = -39,601` sur `3,600 seconds`. La division signée Solidity tronque à `-11`, mais l’auxiliaire v3 arrondit à `meanTick = -12`. Le prix géométrique relatif vaut `1.0001^-12 = 0.998800779636`. Une erreur de signe ou d’arrondi biaise la cotation.
- **Dilution et retard.** Le pool reste à `100` pendant `1,740 seconds` et à `400` pendant `60 seconds` dans une fenêtre de `1,800-second`. TWAP arithmétique v2 : `(100 * 1,740 + 400 * 60) / 1,800 = 110` ; moyenne géométrique v3 : `100^(29/30) * 400^(1/30) = 104.7294122821`. Tous deux diffèrent du spot `400` ; aucun ne donne seul coût ou taille exécutable.

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

## Risques

- Blockchain, factory, pool, frais, implémentation ou upgrade incorrects.
- Sens base/cotation ou `token0`/`token1` inversé.
- Décimales, virgule fixe ou normalisation erronées.
- Prix arithmétique v2 et géométrique v3 confondus.
- TWAP inverse calculé comme réciproque du direct.
- Mauvaises extrémités, durée, fenêtre ou bloc courant.
- Arithmétique temporelle nulle, négative ou spécifique mal gérée.
- Historique demandé antérieur à la plus vieille observation initialisée.
- `observationCardinalityNext` confondue avec `observationCardinality` remplie.
- Observations interpolées ou contrefactuelles prises pour des trades.
- Tick négatif arrondi vers zéro plutôt que moins l’infini.
- Conversion, plage entière, overflow ou arrondi dangereux.
- Liquidité active ou harmonique insuffisante pour l’exposition.
- Profondeur wide-range absente, retirée ou ignorée.
- Liquidité fragmentée entre pools, niveaux, blockchains ou marchés.
- Fenêtre courte sensible à une manipulation atomique ou transitoire.
- Fenêtre longue retardant revalorisation, depeg ou migration.
- Proposant multibloc, séquenceur, censure, MEV ou reorg accroissent le contrôle.
- TWAP pris pour juste valeur récente ou prix exécutable sans contrôle.
- Exposition supérieure au coût de manipulation et reprise dangereuse.

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

## Idées reçues

- **« TWAP signifie toujours moyenne arithmétique des prix. »** v3 moyenne les ticks et produit un prix relatif moyen géométrique.
- **« La cotation inverse vaut toujours un divisé par le TWAP direct. »** Cette symétrie ne vaut pas pour des prix linéaires moyennés séparément.
- **« Une fenêtre plus longue rend toute manipulation impossible. »** Elle échange sensibilité brève contre retard et reste influençable par un contrôle prolongé.
- **« Augmenter la cardinalité crée immédiatement plus d’historique. »** Cela accroît seulement la capacité future ; les observations doivent ensuite être initialisées.
- **« Une lecture récente prouve une juste valeur exécutable. »** Le succès de l’interface ne prouve ni fraîcheur économique, ni profondeur, ni exposition sûre.

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

## Sujets connexes

- [Teneur de marché automatisé](/fr/crypto/amm/)
- [Attaques d’oracle](/fr/crypto/oracle-attack/)
- [Prix d’oracle obsolètes](/fr/crypto/oracle-price-staleness/)

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

## Sources

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

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