WEB3DEV

Cover image for Saiba como executar um Emprestímo Relâmpago | Aave v3 | 15mins | Simulado na Mainnet
Dimitris Carvalho Calixto
Dimitris Carvalho Calixto

Posted on

Saiba como executar um Emprestímo Relâmpago | Aave v3 | 15mins | Simulado na Mainnet

O que é um Empréstimo Relâmpago?

Nas finanças tradicionais, um devedor deve depositar garantias e passar cheques de crédito antes de receber um empréstimo. No entanto, com a Defi, os devedores podem ter acesso a empréstimos sem fornecer garantias. Esta opção de empréstimo é chamada de empréstimo relâmpago.

Um empréstimo relâmpago é um empréstimo não-colateralizado, de curto prazo, disponível no espaço DeFi. Os empréstimos relâmpago são geralmente atividades de alto risco que permitem aos usuários tomar emprestado a cripto sem nenhuma garantia inicial. Estes empréstimos são executados usando contratos inteligentes e estão disponíveis por um tempo muito curto.

Se você quiser saber mais sobre empréstimo relâmpago, leia este artigo aprenda-como-performar-um-empréstimo-relâmpago-usando-aave.

Portanto, sem mais delongas, vamos começar.

Passo 1: Desenvolver o contrato inteligente

1.1 Vamos desenvolver um contrato inteligente simples que vai tomar emprestado USDC do Protocolo Aave e depois o reembolsará junto com o prêmio exigido (ou seja, a comissão).

1.2. A seguir, o modelo do contrato que estaremos passando (disponível aqui 👉 GitHub Link):

Image

1.3. Mergulhando no código:

função createFlashLoan():

  • Esta função é usada para iniciar um empréstimo relâmpago.
  • Ele recebe como parâmetros o endereço do ativo a ser emprestado e o valor a ser emprestado. Em nosso exemplo, usaremos o USDC (0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174)
  • O endereço do receptor é definido para o endereço do contrato atual usando o adress(this), pois queremos que os fundos emprestados sejam enviados para o endereço do contrato que acabamos de implantar e depois reembolsamos nosso empréstimo a partir do mesmo contrato
  • A função também cria uma variável de memória de bytes vazia chamada "params", que pode ser usada para armazenar dados adicionais. Estes dados são passados de volta para adress(this) para posterior execução. Em uma transação complicada, estes dados são passados como um parâmetro para a função createFlashLoan
  • O código de referência é 0, já que não há intermediário para a execução desta transação.
  • Em seguida, ele chama a função flashLoanSimple do contrato POOL com o endereço do receptor, endereço do ativo, quantidade, parâmetros e código de referência como parâmetros.

função executeOperation():

  • Esta função é chamada pelo protocolo Aave quando um empréstimo relâmpago é iniciado.
  • Ele inclui vários parâmetros: o endereço do ativo, o montante solicitado para o empréstimo, premium (taxas a serem pagas pelo empréstimo), o iniciador (endereço que executou o empréstimo relâmpago) e quaisquer dados adicionais armazenados na variável "params".

Etapa 2: Levantando a infra necessária para implantar e testar nosso contrato inteligente

Agora, de acordo com as práticas do "conjunto", espera-se que você implante o contrato acima em um nó da blockchain local (por exemplo: Hardhat ou Truffle) ou em um Testnet público como o Goreli Testnet. Isso é razoável, exceto pelos seguintes problemas:

Em relação ao Goreli Testnet:

  • Não é a Mainnet Polygon😞, o que significa que não tem o mesmo estado dos tokens ou, aliás, o mais importante ‼️ o estado da rede Aave, que eu precisaria para ter certeza de que meu contrato funcionará exatamente da mesma maneira no Polygon Mainnet
  • Faucet(Torneira): Preciso explicar mais? 😤
  • Onde posso obter o USDC para poder pagar a comissão? 🤔

Em relação ao nó local:

  • Mainnet fork: Verifique ✅
  • Torneira: Verifique ✅
  • Obtendo USDC: Para que eu possa pagar a comissão, teremos que escrever o roteiro adicional de imitar uma conta ("o Homem Rico") e depois obter algum USDC para poder paga de voltar a comissão. 😕
  • Depurar meu contrato com facilidade: Infelizmente não com facilidade (sim, eu poderia usar algum console.logs, mas em grande parte é sobre isso). 😢
  • Compartilhar o estado da minha transação com meus amigos/mentores para obter algum feedback: Bem, é chamado de localhost por uma razão! Portanto, esqueça isso. 😭

2.1. É aí que entra o BuildBear. É gentil - casa com os benefícios de ambos os mundos para você:

  1. Mainnet fork: Verifique ✅
  2. Faucet: Verifique ✅
  3. USDC (ERC20 Token Faucet): Verifique ✅
  4. Depuração da minha transação: Verifique ✅ [vem com um rastreador de transações embutido].
  5. Compartilhar o estado da minha transação com meus amigos/mentores para obter algum feedback: Verifique ✅. É um testnet privado para uma equipe, portanto, tenho a capacidade de convidar meus amigos/mentores para meu próprio testnet e rever minha transação.

Dê uma olhada por aqui: Onde o Localhost Falha e Ganha Web3 Hackathons, usando a análise da Testnet BuildBear.

2.2. Visite o aplicativo BuildBear. Uma vez conectado com sua conta Github ou Google, você verá uma página similar à imagem adicionada abaixo:

Image

2.3. Crie seu nó privado fazendo o fork a partir da Mainnet Polygon: A razão para escolher a rede principal Polygon é que o AaveV3 (no momento da redação deste artigo) não está instalado na rede principal Ethereum.

Conforme a última votação de Governança da Comunidade AaveV3, a AaveV3 também será implantada na rede principal Ethereum.

Image

2.4. Adicione sua testnet privada à sua carteira MetaMask usando o botão “Add to Metamask” ("Adicionar ao Metamask"):

Image

2.5. Cunhe seu Native e USDC da torneira (usando o URL da torneira):

Image

2.5.1. Cunhagem os Tokens

Image

Passo 3: Implantação do contrato inteligente

3.1. Navegue até o site do IDE do Remix Online e aceite os termos e condições.

Image

Remix

3.2. Crie um novo contrato e cole o Código de Contrato Inteligente, disponível aqui 👉 GitHub Link

3.3. Compile o Contrato Inteligente, com Solidity Versão 0.8.10, usando o seguinte ícone e detalhes:

Image

Image

Favor observar que a ABI do Contrato só está disponível uma vez que o Contrato é compilado. Você pode ver na imagem acima a ABI que pode ser copiada. Por favor, mantenha isso à mão. Vamos precisar dela momentaneamente.

3.4. Selecione a aba "Deploy and Run Transactions" (Implante e Execute as Transações: e implate o contrato da seguinte forma:

Image

  • Certifique-se de atualizar o Ambiente para "Injected provider - MetaMask" | CRITICAL,
  • o contrato é "SimpleFlashLoan", e
  • o Provedor (no campo Deploy) é 0xa97684ead0e402dC232dC232d5A977953DF7ECBaB3CDb

3.5. Clique no botão "transact para implantar o contrato em sua rede de nós privados; uma vez feito, você verá algo semelhante ao que se segue:

Image

3.6. Copie o endereço do Contrato e visite o Explorer da Blockchain para sua testnet pessoal do fork (link disponível na página do painel em home.buildbear.io) e localize seu contrato.

3.6.1. Envio da ABI do contrato para facilitar a interação

Você pode visitar sua página de contrato no Explorer da Blockchain do BuildBear's e depois visitar a guia Contrato. Você deve ver algo semelhante ao que se segue:

Image

Envie a ABI que copiamos do passo 3.3; uma vez feito, você deve ver os botões Read Contract e Write Contract (Ler Contrato e Escrever Contrato) disponibilizados para você na Página de Contrato:

Image

Passo 4: Pegue um um empréstimo relâmpago e depois pague-o de volta com a comissão

6.1. Visite a aba Write Contract e conecte sua carteira:

[inserir imagem]

6.2. Você DEVE SOMENTE chamar o createFlashLoan

Image

6.3. Digite o endereço do token que você deseja tomar emprestado (certifique-se de que este token esteja listado na Aave) e a quantia que você deseja obter no campo "Arguments” (Argumentos) da createFlashLoan. Como cunhamos USDC da torneira, usaremos o endereço USDC e tomaremos emprestado 10.000.000,000000 Dez Milhões

Image

6.3. Ao clicar no botão, a MetaMask deve aparecer, solicitando que você aprove a transação. Após confirmar a transação, você deve ver uma mensagem de sucesso. Para verificar a transação na blockchain, vá até o painel do Buildbear e clique em "Open Explorer". A partir daí, clique em "Show all transactions” (Mostrar todas as transações) e você deve ver sua transação listada.

Image

Conclusão

Conseguimos escrever com sucesso o contrato inteligente para um Empréstimo Relâmpago! Conseguimos tomar USDC emprestado do pool, pagar a taxa do Empréstimo Relâmpago e depois reembolsar a quantia emprestada, tudo em uma única transação. Você simplesmente pediu dinheiro emprestado sem nenhuma garantia!

Isso levou apenas cerca de 15 minutos

Se você apreciar o que estamos fazendo, por favor, siga-nos no Twitter, LinkedIn e junte-se ao grupo do Telegram, se você ainda não o fez.

E por favor, nos aplauda 👏 se você gosta de nosso trabalho.

Artigo escrito por Chanda . A versão original pode ser encontrada aqui. Traduzido e adaptado por Dimitris Calixto.

Top comments (0)