WEB3DEV

Cover image for Como chamar qualquer API de um contrato inteligente do Solidity, parte I
Diogo Jorge
Diogo Jorge

Posted on

Como chamar qualquer API de um contrato inteligente do Solidity, parte I

Implantando um Airnode para obter dados fora da cadeia em seu contrato inteligente

Image description

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.

Image description

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.

Image description

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.

Image description

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.

Image description

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.

Image description

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.

Image description

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.

Image description

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.

Image description

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.

Image description

Depois de adicionar todos os endpoints necessários, agora você pode clicar em finish e se preparar para implantar seu Airnode.

Image description

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.

Image description

Selecione seu provedor de nuvem onde deseja que seu Airnode seja implantado.

Image description

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.

Image description

Revise sua configuração pela última vez. Se tudo parecer correto, clique em next.

Image description

Baixe todos os arquivos de configuração do Airnode e extraia-os.

Image description

É assim que seu diretório de configuração do Airnode deve se parecer:

Image description

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.

Image description

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.

Image description

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.

Image description

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.

Image description

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.

Image description

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Image description

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.

Image description

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.

Top comments (0)