Acessando feeds de preços com o Band Protocol¶
Introdução¶
Band Protocol é uma rede de oráculos descentralizada que fornece dados confiáveis, seguros e em tempo real para contratos inteligentes em várias redes blockchain.
O protocolo é construído sobre o BandChain, uma rede projetada para ser compatível com a maioria das cadeias compatíveis com EVM, como as redes EVM movidas a Tanssi e estruturas de desenvolvimento de blockchain. O protocolo visa fornecer uma solução que seja:
- Descentralizada, aproveitando o poder computacional de uma rede de validadores
- Flexível, suportando uma ampla gama de fontes e formatos de dados, facilitando as integrações
- Escalável, projetada para lidar com altos volumes de solicitações de dados
- Acessível, permitindo que os usuários solicitem dados apenas quando precisarem e paguem as taxas associadas
O Band Protocol está atualmente implantado em muitos blockchains (Moonbeam, por exemplo) em diferentes ecossistemas. Para implantar o oráculo em sua rede, entre em contato diretamente com a equipe do Band Protocol.
Este tutorial irá guiá-lo pelas etapas para interagir com feeds de preços usando o oráculo do Band Protocol na rede compatível com EVM de demonstração da Tanssi.
Configuração na rede de demonstração EVM da Tanssi¶
O oráculo do Band Protocol já está implantado na rede de demonstração EVM da Tanssi e configurado para fornecer preços para os tokens ETH e DOT.
Os feeds de preços são enviados regularmente para um contrato inteligente que pode ser acessado no seguinte endereço:
0x8c064bCf7C0DA3B3b090BAbFE8f3323534D84d68
O smart pode ser interagir com usando a interface:
IStdReference.sol
// SPDX-License-Identifier: Apache-2.0
pragma solidity 0.8.26;
interface IStdReference {
/// A structure returned whenever someone requests for standard reference data.
struct ReferenceData {
uint256 rate; // base/quote exchange rate, multiplied by 1e18.
uint256 lastUpdatedBase; // UNIX epoch of the last time when base price gets updated.
uint256 lastUpdatedQuote; // UNIX epoch of the last time when quote price gets updated.
}
/// Returns the price data for the given base/quote pair. Revert if not available.
function getReferenceData(string memory _base, string memory _quote) external view returns (ReferenceData memory);
/// Similar to getReferenceData, but with multiple base/quote pairs at once.
function getReferenceDataBulk(string[] memory _bases, string[] memory _quotes) external view returns (ReferenceData[] memory);
}
Como visto acima na interface, existem duas funções para buscar dados:
getReferenceData (_base, _quote) — busca o preço de um determinado par base/cotação
_basestring memory - o token para o qual você deseja obter o preço_quotestring memory - o token (ouUSD) no qual o preço é expresso
_base- ETH_quote- USD
getReferenceDataBulk (_bases, _quotes) — busca preços para os pares base/cotação fornecidos simultaneamente
_basesstring[] memory - a lista de tokens base para os quais você deseja obter os preços_quotesstring[] memory - a lista de tokens (ouUSD) nos quais os preços são expressos
_bases- ["ETH", "DOT"]_quotes- ["USD", "USD"]
A resposta para ambas as funções consiste nos seguintes dados, agrupados em uma tupla no caso de getReferenceData e uma lista de tuplas (uma tupla por par) no caso de getReferenceDataBulk:
rateuint256 - preço para o par base/cotação fornecido. Observe que o resultado deve ser ajustado para considerar dezoito casas decimaislastUpdatedBaseuint256 - carimbo de data/hora da atualização para o parâmetro_base, expresso em épocas UNIX, que é o número de segundos que se passaram desde01-01-1970 00:00:00 UTlastUpdatedQuoteuint256 - carimbo de data/hora da atualização para o parâmetro_quote, expresso em épocas UNIX, que é o número de segundos que se passaram desde01-01-1970 00:00:00 UT
Obtendo feeds de preço usando o Remix¶
Nesta seção, usaremos o remix para buscar o preço do par ETH/USD.
Primeiro, certifique-se de ter uma carteira compatível com EVM conectada à rede de demonstração EVM. MetaMask é usado como exemplo neste guia. Agora, acesse o Remix, cole a interface IStdReference em um novo arquivo e compile-o.
Em seguida, siga estas etapas:
- Vá para a aba Deploy & Run Transactions
- Defina o ENVIRONMENT como Injected Provider -- MetaMask
- Selecione o contrato
IStdReference.solno menu suspenso CONTRACT - Insira o endereço do contrato do feed de dados, que é
0x8c064bCf7C0DA3B3b090BAbFE8f3323534D84d68na rede de demonstração EVM no campo At Address e clique no botão At Address
O contrato agora deve estar acessível. Para interagir com ele, siga estas etapas:
- Expanda o contrato IStdReference para revelar as funções disponíveis
- Expanda getReferenceData e defina os parâmetros de entrada
_basee_quotecomoETHeUSD, respectivamente - Clique em Call
- O resultado mostrará três valores: o preço, a hora da atualização para o parâmetro
_basee a hora da atualização para o parâmetro_quote
Observe que, para obter um preço legível do feed de preços, é essencial ajustar as casas decimais do feed, que são dezoito. Por exemplo, o exemplo acima mostra um valor de 2361167929271984201806, correspondente a um preço de ETH de $2,361.167929271984201806 expresso em USD. Além disso, observe que os valores do carimbo de data/hora da atualização são expressos em tempo de época UNIX, expresso como o número de segundos que se passaram desde 01-01-1970 00:00:00 UT.
| Criada: 9 de dezembro de 2025


