﻿---
title: "Oráculo TWAP"
description: "Um oráculo TWAP deriva uma referência ponderada no tempo de observações acumuladas específicas do protocolo; preços aritméticos da v2 e ticks médios da v3 têm matemática e limites distintos."
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.

# Oráculo TWAP

> Somente para fins educacionais; não constitui recomendação nem aconselhamento de investimento. Investir pode causar perdas.

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

## Resposta direta

Um oráculo de preço médio ponderado no tempo deriva uma referência de observações acumuladas em um intervalo definido. Não há fórmula universal. A Uniswap v2 acumula o preço marginal linear do pool em cada direção, portanto diferenças entre extremos produzem TWAPs aritméticos. A v3 acumula tick, coordenada logarítmica do preço, e o tick médio aritmético corresponde a um preço relativo médio geométrico.

O resultado exige blockchain, pool, implementação, taxa, ordem dos tokens, direção base/cotação, decimais, extremos, tempo, histórico preenchido e arredondamento definidos. Uma leitura bem-sucedida não prova valor justo nem profundidade executável. Janela maior dilui distorção breve, mas aumenta atraso e não elimina manipulação sustentada, lacunas de liquidez, controle do proponente ou sequenciador, reorgs ou valor extraível superior ao custo do ataque.

Atualidade da observação e do mercado são distintas. Uma média atual pode reter um regime antigo; um pool ativo pode ser raso ou divergir de outros mercados. O consumidor precisa de verificações de histórico, liquidez e divergência, limites por ação e comportamento degradado ou pausado explícito.

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

## Como funciona

1. Fixe blockchain e bloco, fábrica e pool, versão e taxa, `token0` e `token1`, decimais, direção base/cotação, ação, janela e valor em risco.
2. Identifique objeto e unidades: `price0Cumulative` ou `price1Cumulative` linear da v2, `tickCumulative` da v3 ou estatística documentada. Não transplante aritmética.
3. Verifique timestamps, tempo positivo, histórico inicializado mais antigo, cardinalidade atual e regras contrafactuais. `observationCardinalityNext` é capacidade-alvo, não histórico preenchido.
4. Na v2, divida a variação do preço acumulado pelos segundos e normalize ponto fixo e decimais. Calcule cada direção separadamente; o TWAP aritmético reverso geralmente não é o recíproco do direto.
5. Na v3, use a interface documentada, divida a variação do tick pela janela, arredonde quociente negativo não exato para menos infinito como `OracleLibrary` e converta o tick médio com `price = 1.0001^tick`.
6. Meça liquidez em faixa, harmônica, de faixa ampla, por taxa e externa. Teste trajetórias de um e vários blocos, taxas, arbitragem, ordenação, censura, perda no desfazimento, reorgs, atraso e valor extraível.
7. Compare TWAP, spot e referências independentes sob limites de atualidade e desvio; monitore histórico, liquidez, upgrades e blockchain e ensaie histórico insuficiente, divergência, pausa, fallback, liquidação e recuperação.

A v2 mantém dois acumuladores direcionais. A v3 guarda observações em buffer circular e pode interpolar ou construir acumulado atual contrafactual. Esses extremos são aritmética válida, não prova de negociação naquele instante. Aumentar cardinalidade abre espaço futuro; não preenche o passado.

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

## Exemplos resolvidos

- **Preço acumulado v2.** Se `C_start = 1,000,000 price-seconds`, `C_end = 1,360,000 price-seconds` e `elapsed = 3,600 seconds`, então `TWAP = (1,360,000 - 1,000,000) / 3,600 = 100 quote/base`. Extremos, direção, escala e timestamps integram o resultado.
- **Armadilha do recíproco.** O preço direto é `100` por `900 seconds` e `400` por `900 seconds`; TWAP `250`. Spots reversos são `0.01` e `0.0025`; TWAP `0.00625`, cujo recíproco é `160`, não `250`. Média e inversão não comutam.
- **Tick médio negativo.** Seja `tickCumulativeDelta = -39,601` em `3,600 seconds`. A divisão de Solidity trunca para `-11`, mas o helper v3 arredonda para `meanTick = -12`. O preço geométrico relativo é `1.0001^-12 = 0.998800779636`. Erro de sinal ou arredondamento cria viés.
- **Diluição e atraso.** O pool fica em `100` por `1,740 seconds` e `400` por `60 seconds` numa janela de `1,800-second`. TWAP aritmético v2: `(100 * 1,740 + 400 * 60) / 1,800 = 110`; média geométrica v3: `100^(29/30) * 400^(1/30) = 104.7294122821`. Ambos diferem do spot `400`; nenhum define sozinho custo ou tamanho executável.

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

## Riscos

- Blockchain, fábrica, pool, taxa, implementação ou upgrade errados.
- Direção base/cotação ou `token0`/`token1` invertida.
- Decimais, ponto fixo ou normalização errados.
- Preço aritmético v2 e geométrico v3 tratados como iguais.
- TWAP reverso calculado como recíproco do direto.
- Extremos, tempo, janela ou bloco incorretos.
- Aritmética temporal zero, negativa, envolvida ou específica mal tratada.
- Histórico solicitado anterior à observação inicializada mais antiga.
- `observationCardinalityNext` confundida com `observationCardinality` preenchida.
- Observações interpoladas ou contrafactuais tomadas como trades.
- Tick negativo arredondado para zero, não menos infinito.
- Conversão, faixa inteira, overflow ou arredondamento inseguros.
- Liquidez ativa ou harmônica insuficiente para a exposição.
- Profundidade de faixa ampla ausente, removida ou ignorada.
- Liquidez fragmentada entre pools, taxas, blockchains ou mercados.
- Janela curta sensível a manipulação atômica ou transitória.
- Janela longa atrasa reprecificação, depeg ou migração.
- Proponente multibloco, sequenciador, censura, MEV ou reorg elevam controle.
- TWAP tratado como valor justo recente ou preço executável sem testes.
- Exposição supera custo de manipulação e controles de recuperação são inseguros.

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

## Equívocos comuns

- **“TWAP sempre é média aritmética de preços.”** A v3 promedia tick e produz preço relativo médio geométrico.
- **“Cotação reversa é sempre um dividido pelo TWAP direto.”** Isso não vale para preços lineares promediados separadamente.
- **“Janela maior impossibilita manipulação.”** Troca sensibilidade breve por atraso e ainda admite controle sustentado.
- **“Aumentar cardinalidade cria histórico imediatamente.”** Só amplia capacidade futura; observações precisam ser inicializadas.
- **“Leitura recente prova valor justo executável.”** Sucesso da interface não prova atualidade econômica, profundidade ou exposição segura.

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

## Tópicos relacionados

- [Formador de mercado automatizado](/pt-br/crypto/amm/)
- [Ataques a oráculos](/pt-br/crypto/oracle-attack/)
- [Preços de oráculo desatualizados](/pt-br/crypto/oracle-price-staleness/)

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

## Fontes

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

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