WEB3DEV

Cover image for Buscar Taxas De Câmbio Em Contratos Inteligentes Solidity
Banana Labs
Banana Labs

Posted on

Buscar Taxas De Câmbio Em Contratos Inteligentes Solidity

Os dados de preços são a peça central de vários instrumentos financeiros, especialmente em aplicativos de finanças descentralizadas (DeFi). As taxas de câmbio (FX) são de particular interesse no espaço DeFi para a criação de opções, futuros e outros derivativos complexos. Além de buscar dados seguros de preços de criptomoedas, os Chainlink Price Feeds também podem ser usados para obter dados de preços FX de alta qualidade em seus contratos inteligentes.

Neste tutorial técnico, mostraremos como você pode usar os feeds de preços Chainlink FX em seus contratos inteligentes do Solidity. Primeiro, vamos ver rapidamente quais são os feeds FX e quais tipos de derivativos podem ser criados usando-os.

O Que São Feeds FX?

O mercado de câmbio é um mercado global para a negociação de moedas e tem um volume diário de cerca de US$ 7 trilhões. Este mercado determina as taxas de câmbio para cada moeda e inclui todos os aspectos de compra, venda e câmbio de moedas a preços atuais ou determinados. Devido ao alto volume e popularidade do mercado de câmbio, muitos aplicativos DeFi usam Chainlink FX Price Feeds para garantir que os dados FX sejam entregues aos seus contratos de derivativos de maneira segura e descentralizada, sem nenhum ponto único de falha.

A Synthetix Exchange, uma exchange de derivativos DeFi, usa vários feeds de preços para taxas de câmbio fornecidas pelos oráculos Chainlink para garantir avaliações precisas e invioláveis de acordo com o preço de mercado real de seus ativos subjacentes, mesmo durante períodos de alta volatilidade.

diagrama FXComo a Synthetix Exchange usa os oráculos Chainlink para obter dados de mercado em tempo real de várias moedas FX.

Como Usar Os Feeds De Preços Chainlink FX

Chainlink Price Feeds usa centenas de fontes de dados de alta qualidade e as agrega por meio de uma rede descentralizada de oráculos Chainlink que alimentam dados de preços em contratos de referência, onde os resultados são novamente agregados em um Aggregator Smart Contract como a resposta mais recente e confiável. Ao usar várias fontes de dados agregadas por uma rede descentralizada de nós, os oráculos da Chainlink garantem que os dados de preços sejam da mais alta qualidade e não sejam vulneráveis a explorações ou ataques de oráculos de preços.

Criando O Contrato Inteligente

Para tentar usar o Chainlink FX Price Feeds em seus contratos inteligentes, primeiro obtenha a testnet ETH para usar como gás em seu contrato inteligente. Uma vez que você tenha algum ETH, a maneira mais fácil de começar a construir um contrato inteligente que usa os Feeds de Preço Chainlink FX é implantar o contrato Price Consumer. Este é um contrato básico para iniciar solicitações de Feeds de Preço Chainlink. Primeiro, precisamos importar a interface do contrato AggregatorV3Interface, que permite que nosso contrato inteligente faça referência aos feeds de preços on-chain (dentro da cadeia) na rede de teste Kovan. Uma instância dele é então criada em uma variável local.

import "https://github.com/smartcontractkit/chainlink/blob/master/evm-contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";
Enter fullscreen mode Exit fullscreen mode
AggregatorV3Interface internal priceFeed;
Enter fullscreen mode Exit fullscreen mode

No construtor do contrato de referência de feed de preço, podemos inicializar o endereço do feed de preço em que estamos interessados. Ao explorar a página Ethereum Price Feeds na documentação, podemos encontrar todos os endereços de contrato de feed de preço que a Chainlink fornece atualmente . Navegue até a parte Kovan da página e escolha um feed de preços FX. Para os fins deste exemplo, escolheremos o feed de preços GBP/USD cujo endereço é 0x28b0061f44E6A9780224AA61BEc8C3Fcb0d37de9.

priceFeed = AggregatorV3Interface(0x28b0061f44E6A9780224AA61BEc8C3Fcb0d37de9);
Enter fullscreen mode Exit fullscreen mode

Foi definida uma função chamada getLatestPrice para obter o preço mais recente do contrato Price Feed Aggregator que foi instanciado no construtor acima. Para isso, foi definida uma nova função que chama a função lastRoundData do contrato Aggregator. Esta é a função que retorna o estado atual do contrato Aggregator, e neste caso estamos pegando o preço atual e retornando em nossa função de consumo.

function getLatestPrice() public view returns (int) {
    (
        uint80 roundID,
        int price,
        uint startedAt,
        uint timeStamp,
        uint80 answeredInRound
    ) = priceFeed.latestRoundData();
    return price;
}
Enter fullscreen mode Exit fullscreen mode

Implementando E Testando O Contrato Inteligente

Agora estamos prontos para implantar e testar nosso contrato. Compile o contrato no Remix e, em seguida, na guia de implantação, altere o ambiente para “Injected Web3” e verifique se o endereço da carteira abaixo é aquele em sua carteira MetaMask que contém algum ETH obtido anteriormente, pressione o botão de deploy e siga as etapas. O resultado final é que você tem seu contrato inteligente implantado na rede de teste Kovan. Você deve anotar o endereço do contrato implementado por meio da saída da transação no console do Remix.

Uma vez implantado, basta executar a função “getLatestPrice”. O resultado deve ser que a função retorne o preço mais recente do contrato GBP/USD Aggregator, que pode ser usado on-chain (dentro da cadeia) em nosso contrato inteligente. Observe que não precisamos enviar nenhum LINK para a solicitação e também não usamos nenhum ETH, pois a transação é uma leitura pura dos dados no contrato GBP-USD Aggregator on-chain.

resultado Resultado do feed de preços GBP/USD

Resumo

Chainlink Price Feeds fornece uma maneira confiável de obter dados de preços FX de alta qualidade em contratos inteligentes Solidity. Além disso, a estrutura oracle da Chainlink oferece flexibilidade para buscar dados de ações, criptomoedas, commodities e muitos outros tipos de ativos de forma rápida e fácil.

Se você é um desenvolvedor e deseja conectar rapidamente seu aplicativo aos dados de referência de preço da Chainlink, visite a documentação do desenvolvedor e participe da discussão técnica no Discord.


Esse artigo é uma tradução de Chainlink feita por @bananlabs. Você pode encontrar o artigo original aqui

Top comments (0)