Implantando um Airnode para obter dados fora da cadeia em seu contrato inteligente
foto por DeepMind sobre Unsplash
Como todos sabemos, não é possível que um contrato inteligente acesse diretamente APIs externas fora de uma blockchain. Interagir com dados off-chain enquanto trabalha com Contratos Inteligentes é um problema real para muitos dApps.
A blockchain Ethereum foi projetada para ser totalmente determinística, enquanto a Internet não era. Chamar uma API diretamente parece fácil, mas em uma blockchain, exigiria que todos os nós chamassem o mesmo endpoint ao mesmo tempo e esperassem obter os mesmos dados para chegar a um consenso. Além disso, o conceito central de uma blockchain é sua segurança, derivada de uma rede descentralizada de validadores independentes que limitam propositalmente sua conexão com o mundo exterior.
No entanto, com API3, você pode ter oráculos primários operados diretamente pelos provedores de API, chamados Airnodes que fornece dados para qualquer dApp on-chain_._Como resultado, você pode facilmente tornar qualquer API REST acessível a um contrato inteligente.
Diga Olá para ChainAPI
ChainAPI é uma plataforma que permite integrar e implantar o Airnode de código aberto com suas ferramentas de integração e implantação passo a passo.
Para começar, vá para ChainAPI e faça o login conectando sua MetaMask.
Você será solicitado a confirmar e assinar a transação por meio de sua extensão MetaMask.
Certifique-se de estar usando uma nova carteira MetaMask com um novo mnemônico. Seu mnemônico será usado posteriormente para implantar o Airnode. Você precisa mantê-lo extremamente seguro, pois isso servirá como a “chave privada” do seu Airnode implantado.
Cada vez que você retornar ao ChainAPI, você se conectará novamente, usando a MetaMask, para se identificar assinando uma mensagem para a mesma conta.
Conclua o processo de inscrição e nomeie seu workspace.
Os workspaces oferecem uma maneira de convidar outros usuários para ajudar ou colaborar com integrações e implantações. Isso facilita o gerenciamento de seus Airnodes como uma equipe ou a terceirização do processo, mantendo o controle sobre suas integrações e implantações.
Para alterar o nome do seu espaço de trabalho no futuro, clique no nome no canto superior esquerdo do painel
No ChainAPI, você poderá criar e gerenciar suas integrações ou implantações Airnode navegando nos painéis “Integrations” ou “Deploy” no painel de navegação à esquerda.
Integrando seu Airnode
Para este tutorial, usarei os endpoints da API REST pública do dxFeed para recuperar dados de estoque.
Para começar, selecione a opção “Integrar API” no canto superior direito do painel.
Insira os detalhes sobre a API que você está integrando.
Você precisa inserir o URL base de sua API junto com todos os endpoints que deseja integrar. Por ser uma API pública, ela não possui nenhum esquema de segurança.
Agora você pode começar adicionando todos os seus endpoints.
Aqui, a API REST dxFeed tem um endpoint GET /events.json
com alguns parâmetros de consulta. Você pode adicionar todos os parâmetros que sua API necessita.
Agora você precisa adicionar todos os parâmetros e definir onde eles vão query/header/path/cookie (consulta/cabeçalho/caminho/cookie). Aqui, todos os parâmetros são parâmetros de consulta e devem ser definidos pelo usuário.
Eu tornei o parâmetro format fixed
, pois quero que ele retorne a resposta em json
.
Parâmetros reservados definem qual parte da resposta deve ser selecionada e codificada antes do cumprimento. Podem ser definidos pelo solicitante, mas também podemos codificá-los na configuração do Airnode.
Depois de adicionar todos os endpoints necessários, agora você pode clicar em finish e se preparar para implantar seu Airnode.
Implantando seu Airnode
Para implantar o Airnode, vá para a seção de implantação no menu. Nomeie sua implantação e selecione a integração que deseja usar com ela.
Selecione seu provedor de nuvem onde deseja que seu Airnode seja implantado.
Agora selecione as Cadeias para sua implantação. Você também pode selecionar várias redes e provedores, se quiser em várias cadeias.
Aqui, teremos nosso Airnode no Polygon Mumbai Testnet.
Revise sua configuração pela última vez. Se tudo parecer correto, clique em next.
Baixe todos os arquivos de configuração do Airnode e extraia-os.
É assim que seu diretório de configuração do Airnode deve se parecer:
config
contém config.json
e secrets.env
.
- O arquivo
config.json
é usado durante a implantação/reimplantação de um Airnode para configurar seu comportamento e fornecer mapeamentos de operações de API. - O arquivo
secrets.env
contém valores para config.json que devem ser mantidos em segredo.
O diretório de saída terá o receipt.json
que será gerado após a implantação bem-sucedida do airnode.
O arquivo aws.env
contém as credenciais da AWS para implantações direcionadas à AWS.
Como estamos usando a AWS como nosso provedor de nuvem, precisamos adicionar nossas chaves de acesso AWS IAM com a política de acesso do administrador. Você pode assistir este vídeo se você não tiver certeza de como obtê-los.
O README.md
contém todas as etapas para implantar o airnode fornecido em um formato markdown.
Abra aws.env
e adicione seu AWS_ACCESS_KEY_ID
e AWS_SECRET_ACCESS_KEY
que você acabou de criar.
Abra config/secrets.env_ _e adicione seu mnemônico de carteira. Certifique-se de mantê-lo extremamente seguro, pois isso servirá como a “chave privada” do seu Airnode implantado. A partir da frase mnemônica, o Airnode é capaz de atribuir endereços de carteira tanto para a instância do Airnode quanto para seus usuários.
Você também precisa adicionar o URL do seu provedor Blockchain. Aqui, vamos usar o Alchemy para um URL gratuito do Polygon Mumbai Testnet Provider. Você pode usar qualquer provedor de blockchain compatível com sua rede.
Você também pode configurar suas credenciais HttpGateway. É um serviço opcional que permite que usuários autenticados façam solicitações HTTP para sua instância Airnode implantada para teste. A ChainAPI já gerou essas chaves para você, mas você pode alterá-las se quiser.
Uma etapa final antes de implantar seu Airnode é definir Autorizadores no arquivo config.json .
Quando um Airnode recebe uma solicitação, ele pode usar contratos de autorização on-chain para verificar se uma resposta é garantida. Isso permite que o Airnode implemente uma ampla variedade de políticas e autorize o acesso do contrato do solicitante à sua API subjacente.
Para o escopo deste tutorial, podemos definir a matriz do autorizador vazia em config.json para que qualquer contrato solicitante possa acessar o Airnode.
Agora você está pronto para implantar seu Airnode. Assegure-se de ter Docker instalado em seu sistema.
Copie e cole os comandos abaixo em seu terminal no diretório raiz do seu pacote de implantação.
Windows
docker run -it --rm ^
--env-file aws.env ^
-v "%cd%/config:/app/config" ^
-v "%cd%/output:/app/output" ^
api3/airnode-deployer:0.7.3 deploy
OSX
docker run -it --rm \
--env-file aws.env \
-e USER_ID=$(id -u) -e GROUP_ID=$(id -g) \
-v "$(pwd)/config:/app/config" \
-v "$(pwd)/output:/app/output" \
api3/airnode-deployer:0.7.3 deploy
Linux
docker run -it --rm \
--env-file aws.env \
-e USER_ID=$(id -u) -e GROUP_ID=$(id -g) \
-v "$(pwd)/config:/app/config" \
-v "$(pwd)/output:/app/output" \
api3/airnode-deployer:0.7.3 deploy
Seu Airnode agora deve estar implantado. Você pode verificar seu status na seção de implantação.
Confira o Repositório GitHub para este guia aqui.
Na parte 2, mostraremos como codificar um contrato de Requester para chamar e ler os dados do Airnode.
Este artigo foi escrito por Vansh Wassan e traduzido por Diogo Jorge. O artigo original pode ser encontrado aqui.
Latest comments (0)