---
title: "O que é um Oracle?"
description: "Oracles comunicam informações off-chain para aplicações on-chain"
---

## Introdução

Smart contracts são programas que se autoexecutam quando certos eventos ou condições são atendidos. Esses eventos podem ocorrer na blockchain ou fora da blockchain. Por exemplo, em um evento on-chain, um remetente poderia enviar fundos para um smart contract como garantia de um empréstimo, o que então acionaria o envio de um valor de empréstimo. Em um evento off-chain, um smart contract pode precisar de uma forma de obter dados precisos sobre esses eventos para saber quando executar. Oráculos conectam o mundo off-chain e os smart contracts on-chain atuando como uma fonte de dados para o smart contract.

<ImageBlock
  src="https://media.alchemy.com/1704181326-what-is-an-oracle.jpeg"
  alt="Diagrama de um oracle conectando dados off-chain a smart contracts on-chain"
  width={564}
  height={313}
  caption="Source: https://www.leewayhertz.com/chainlink-solving-blockchain-oracle-problem/https://www.leewayhertz.com/chainlink-solving-blockchain-oracle-problem/"
  priority
/>

## Como desenvolvedores usam oráculos

A vantagem de usar um smart contract é que não precisamos de um terceiro para atuar como intermediário. O código determina os termos do smart contract, e o código é lei. Esses termos podem depender de eventos externos para que uma condição seja atendida antes que uma transação seja executada. Por exemplo, podemos usar um smart contract para emitir uma troca de tokens com base no valor do Dólar Americano. Um smart contract consultaria um oráculo para obter o valor do Dólar Americano de alguma fonte externa a fim de saber quando realizar a troca.

<ImageBlock
  src="https://media.alchemy.com/1704181364-blockchain-oracles.png"
  alt="Diagrama de um smart contract consultando um oracle de blockchain para dados externos"
  width={624}
  height={229}
  caption="Source: https://coin98insights.com/what-is-blockchain-oracle"
/>

Decentralized Finance \(DeFi\) é um dos maiores casos de uso para oráculos. Oráculos de preço fornecem informações sobre os valores de tokens e liquidez, que são usados para gerenciar a posição financeira de um usuário. NFTs \(Non-fungible tokens\) podem usar oráculos para obter informações sobre eventos externos nas notícias, como [resultados de eleições](https://nftartwork.co.uk/nft-artwork/crossroads/), de modo que a aparência do NFT mude dinamicamente com base nesses resultados.

Também podemos usar oráculos para incentivar bons comportamentos em relação à sustentabilidade e cidadania, recompensando usuários com tokens após completarem tarefas ou atingirem certas metas. Por exemplo, poderíamos oferecer tokens a moradores de uma cidade por compensação de carbono.

## Tipos de oráculos

Oráculos podem ser tanto software, como um servidor ou banco de dados, quanto hardware, como dispositivos IoT e sensores. Podem ser serviços externos que fornecem dados a múltiplas aplicações e blockchains que se conectam a eles.

Projetos também podem criar oráculos internos para suas necessidades específicas. Um exemplo disso é o [Augur](https://augur.net/), uma plataforma de apostas descentralizada, que possui um oráculo que fornece os resultados dos eventos em que se está apostando.

[Descubra](https://www.alchemy.com/case-studies/augur?a=4f1af711be) como o [Augur](https://www.alchemy.com/dapps/augur) usa a Alchemy para escalar seu oráculo descentralizado e protocolo peer to peer, criando melhores experiências de usuário.

Oráculos são bidirecionais, o que significa que podem tanto buscar dados do mundo real quanto fornecer dados ao mundo externo sobre eventos on-chain. [Fechaduras inteligentes](https://www.hackster.io/simone-romano/a-blockchain-powered-smart-lock-21fad9) que são destravadas com base em transações concluídas são um exemplo popular de quando dados de eventos on-chain são necessários off-chain.

Além de se comunicarem com o mundo externo, oráculos podem viabilizar comunicações cross-chain entre diferentes blockchains. Desenvolvedores podem usar isso para fazer bridge de ativos ou acionar ações com base nas transações e eventos de uma chain para outra. Oráculos também podem economizar custos valiosos de computação ao realizar cálculos, como geração de números aleatórios, off-chain.

## O problema do oráculo

Geralmente, o "problema do oráculo" surge sempre que o valor dos oráculos é discutido. A singularidade de construir em uma blockchain é que um consenso sobre o estado da blockchain entre os nós precisa ser alcançado. Isso significa que cada nó deve conseguir processar as mesmas transações e eventos e obter o mesmo resultado que todos os outros nós.

Um invasor poderia alterar os dados off-chain que um oráculo obtém, ou os dados poderiam mudar com o tempo.

Por exemplo, o valor do Dólar Americano pode mudar frequentemente em um único dia. Se um smart contract executa com base nesse valor, o preço pode mudar até que outro nó realize o cálculo. Isso quebraria o consenso entre os nós, já que o resultado esperado deixa de ser o resultado real.

Além dos possíveis problemas quanto à precisão dos dados fornecidos pelo oráculo, uma fonte centralizada também pode ser hackeada ou sofrer downtime. Nessas situações, o smart contract estará operando com dados corrompidos ou sem dados nenhum. Como smart contracts não podem ser alterados e são autoexecutáveis, isso pode levar a danos irreversíveis para as partes envolvidas. Oráculos precisam resolver esses problemas para serem provedores de dados seguros e confiáveis para smart contracts.

## A solução do oráculo

Um método popular para resolver o problema do oráculo é usar uma blockchain em si. Essa abordagem é chamada de Decentralized Oracle Network \(DON\).

Em uma DON, em vez de os nós chegarem a um consenso sobre um livro-razão de transações, cada nó é um oráculo. Os nós então têm a tarefa de obter dados independentes de fontes off-chain separadas. Os dados dos nós são então agregados e um valor de verdade é decidido.

Isso também resolve o problema do uptime de uma fonte de dados, já que o smart contract ainda conseguirá funcionar por haver múltiplas fontes de dados. Você pode ver uma DON em ação [aqui](https://data.chain.link/ethereum/mainnet/crypto-usd/eth-usd).

<ImageBlock
  src="https://media.alchemy.com/1704181493-the-oracle-solution.png"
  alt="Diagrama de uma rede descentralizada de oracles agregando dados de múltiplas fontes off-chain"
  width={1600}
  height={684}
  caption="Fonte: chain.link"
/>

‍

## Serviços de oráculo

A forma mais comum de desenvolvedores usarem oráculos é por meio de um serviço de terceiros. O primeiro e mais popular serviço para isso é o [Chainlink](https://chain.link/). Através do Chainlink, desenvolvedores e provedores de API podem se tornar node operators participantes conectando sua API à rede Chainlink.

O Chainlink fornece aos provedores que operam esses oráculos identificadores on-chain, que eles podem usar para gerenciar e recompensar a reputação dos oráculos. O uso de um [token ERC677](https://coinmarketcap.com/currencies/chainlink/) incentiva os provedores a fornecerem dados bem formatados e precisos, assim como qualquer computação off-chain realizada.

Outra rede que vem crescendo em popularidade é o [Band Protocol](https://bandprotocol.com/). Essa rede também busca fornecer fontes confiáveis e seguras de dados externos, como o Chainlink. Da mesma forma, também existe um token BAND para recompensar provedores de dados por fornecerem bons dados. A principal diferença é que o [Band Protocol](https://www.alchemy.com/dapps/band-protocol) opera na Cosmos, em vez de Ethereum, como medida de economia de custos.

<ImageBlock
  src="https://media.alchemy.com/1704181427-oracle-services.png"
  alt="Diagrama de uma rede de serviços de oracle entregando dados externos a smart contracts"
  width={1600}
  height={501}
  caption="Source: https://public.bnbstatic.com/static/research/static/images/projects/band-protocol/oraclescript.png"
/>

## Como usar um oráculo

Podemos obter dados de um oráculo tanto por meio de uma requisição de API usando [frameworks](https://docs.chain.link/docs/reference-contracts/) como o fornecido pelo Chainlink, quanto ao referenciar dados que já foram enviados por um provedor e agora existem on-chain. Podemos obter esses dados referenciando o [smart contract](https://docs.chain.link/docs/reference-contracts/) que armazena essa informação e endereço. Um uso comum desse método está no mundo do DeFi. Smart contracts armazenam taxas de câmbio que são atualizadas regularmente, e esses dados podem ser usados por outros smart contracts para realizar trocas de tokens.

## Conclusão

Para que smart contracts tenham alguma utilidade no mundo real, eles precisam ter acesso ao que está acontecendo no mundo. Oráculos são as janelas de dados de que os smart contracts precisam para reagir a eventos off-chain. Usar uma fonte de dados centralizada em um ambiente descentralizado como uma blockchain não é ideal. DONs resolvem muitos dos problemas decorrentes da centralização, oferecendo segurança e estabilidade. À medida que esses serviços de oráculo se expandem e incorporam mais provedores, os oráculos desempenharão um papel importante no crescimento da tecnologia blockchain e de smart contracts.
