WEB3DEV

Cover image for Crie seu próprio protocolo de empréstimo descentralizado
Rafael Ojeda
Rafael Ojeda

Posted on

Crie seu próprio protocolo de empréstimo descentralizado

Crie seu próprio protocolo de empréstimo descentralizado

Os protocolos de empréstimo descentralizados permitem que os usuários emprestem e tomem emprestado criptomoedas diretamente na blockchain por meio de contratos inteligentes, sem a necessidade de intermediários, como bancos. Neste tutorial, você aprenderá a criar seu próprio protocolo de empréstimo descentralizado do zero usando o Solidity.

Ao final deste tutorial, você terá uma sólida compreensão dos princípios fundamentais por trás dos protocolos de empréstimo descentralizados, inclusive como adicionar liquidez, tomar fundos emprestados e pagar empréstimos. Você também ganhará experiência prática em escrever e implantar contratos inteligentes no blockchain da Ethereum.

Vamos começar!

Pré-requisitos

Antes de começar, verifique se você tem os seguintes pré-requisitos instalados em seu sistema:

Primeiros passos

Para começar, navegue até o repositório scaffold-eth x BuildBear.

Veja por que recomendamos o uso do scaffold-eth x BuildBear:

1 .Ele permite que você faça facilmente o fork em cadeias compatíveis com EVM (Ethereum Virtual Machine ou Máquina Virtual Ethereum) - (como Ethereum, Polygon, Binance Smart Chain, Fantom, Optimism e Arbitrum Mainnet) diretamente da CLI. Isso economiza um tempo valioso que, de outra forma, seria gasto na busca por RPCs (Remote Procedure Call ou Chamada de Procedimento Remoto) funcionais.

2 .Você pode cunhar tokens nativos e ERC20 sem esforço usando a CLI, eliminando a necessidade de perder tempo procurando torneiras funcionais.

Para começar, clique no botão "Fork" para criar uma cópia do repositório em sua própria conta do GitHub. Aguarde a conclusão do processo de bifurcação antes de continuar.

Em seguida, abra um terminal e clone o repositório bifurcado, que inclui todos os componentes necessários para criar um aplicativo descentralizado:

git clone <paste the URL you fork repo>
cd scaffold-eth
Enter fullscreen mode Exit fullscreen mode

Para instalar todos os pacotes necessários, execute o seguinte comando:

yarn fork-bb
Enter fullscreen mode Exit fullscreen mode

Image description

Implantando os contratos

yarn deploy
Enter fullscreen mode Exit fullscreen mode

Image description

Iniciando o front-end

yarn start
Enter fullscreen mode Exit fullscreen mode

Quando o aplicativo estiver em execução, você poderá acessá-lo em http://localhost:3000 e verá o seguinte:

Image description

Antes de nos aprofundarmos no contrato inteligente, vamos começar explorando as funcionalidades do Lending. Para começar, navegue até a página Lending.

Image description

Para solicitar a ETH gratuita, conecte sua carteira e clique em "grab funds from the faucet".

Image description

Adicionar liquidez

1 .Digite o valor do token desejado.
2 .Depois de inserir o valor do token, clique em aprovar token e, em seguida, prossiga com a adição de liquidez
3 .Aprovar a transação na Metamask: Um prompt da Metamask será exibido, solicitando sua aprovação. A Liquidez total e a liquidez fornecida serão atualizadas.

Image description

Retirar liquidez

1 .Digite o valor que você deseja sacar.
2 .Depois de inserir o valor do token, clique em Withdraw!
3 .Aprovar a transação na Metamask: Será exibido um prompt da Metamask, solicitando sua aprovação. A Liquidez total e a liquidez fornecida serão atualizadas.

Image description

Empréstimo de liquidez

1 .Digite o valor que você deseja emprestar.
2 .Depois de inserir o valor do token, clique em Borrow!
3 .Aprovar a transação na Metamask: Um prompt da Metamask será exibido, solicitando sua aprovação. A Liquidez total, a liquidez fornecida e o valor emprestado serão atualizados.

Image description

Reembolsar Empréstimo

Digite o valor que você deseja reembolsar.
Após inserir o valor do token, clique em Repay!
Aprovar a transação na Metamask: Será exibido um prompt da Metamask, solicitando sua aprovação. A Liquidez total, a liquidez fornecida e o valor emprestado serão atualizados.

Image description

Vamos nos aprofundar no contrato inteligente

Podemos encontrar o contrato lending.sol em packages/hardhat/contracts:

Image description

1 .O contrato utiliza a versão Solidity pragma ^0.8.0 e está licenciado sob a licença MIT.

2 .O contrato importa um contrato externo: IERC20.sol da biblioteca OpenZeppelin. Esses contratos fornecem funcionalidades padronizadas de token ERC20.

3 .addLiquidity(uint256 _amount): Essa função permite que os usuários depositem tokens de garantia no contrato. O parâmetro _amount especifica a quantidade de tokens de garantia a serem depositados. A função transfere inicialmente os tokens de garantia do usuário para o contrato e, em seguida, adiciona os tokens de garantia à liquidez do contrato. Essa função emite o evento LiquidityAdded.

4 .borrow(uint256 _amount): Essa função permite que os usuários tomem empréstimos de tokens de empréstimo do contrato usando seus tokens de garantia depositados como garantia. O parâmetro _amount especifica a quantidade de tokens de empréstimo a serem tomados. A função calcula inicialmente a quantidade de garantia necessária com base na proporção de garantia e na quantidade de tokens de empréstimo e, em seguida, verifica se o usuário enviou ETH suficiente para cobrir a garantia e a taxa. A função, então, transfere os tokens de empréstimo para o usuário e atualiza a quantidade de empréstimo para aquele usuário. Essa função emite o evento Borrow.

5 .repay(uint256 _amount): Essa função permite que os usuários reembolsem os tokens de empréstimo tomados e recuperem seus tokens de garantia. O parâmetro _amount especifica a quantidade de tokens de empréstimo a serem reembolsados. A função transfere inicialmente os tokens de empréstimo do usuário para o contrato e, em seguida, diminui a liquidez do contrato pela quantidade de tokens de garantia que o usuário deve recuperar. Por fim, a função transfere os tokens de garantia do contrato para o usuário. Essa função emite o evento Repay.

6 .withdraw(uint256 _amount): Essa função permite que os usuários retirem seus tokens de garantia depositados do contrato. O parâmetro _amount especifica a quantidade de tokens de garantia a serem retirados. A função verifica primeiro se a quantidade solicitada está disponível no contrato e se o usuário tem saldo suficiente, em seguida, transfere os tokens de garantia do contrato para o usuário e, por fim, diminui a liquidez do contrato pela quantidade de tokens de garantia retirados . Essa função emite o evento Withdrawal.

7 .getLiquidity(): Essa função retorna a quantidade atual de tokens de garantia mantidos pelo contrato.

8 .getCollateralRatio(): Essa função retorna a proporção de garantia atual exigida pelo contrato, que é a quantidade de tokens de garantia exigidos por tokens de empréstimo tomado.

9 .getCollateralToken(): Essa função retorna o endereço do contrato de tokens de garantia usado pelo contrato.

10 .getOwner(): Essa função retorna o endereço do proprietário do contrato.

11 .getBorrowAmount(address _user): Essa função retorna a quantidade atual de tokens de empréstimo tomados pelo _user especificado.

12 .getBalance(address _user): Essa função retorna o saldo atual de tokens de garantia depositados pelo _user especificado.

Parabéns

Desenvolvemos com sucesso um protocolo básico de empréstimo que permite aos usuários realizar empréstimos e emprestar.

Compartilhe seu projeto no Twitter e no LinkedIn e marque a BuildBear.

Se você gosta do que estamos fazendo, siga-nos no Twitter, no LinkedIn e entre no grupo do Telegram, caso ainda não o tenha feito.

E, por favor, nos aplauda 👏 se você gostar do nosso trabalho.

Repositório Github : Buildbear Tutorials

Sobre a BuildBear:

BuildBear é uma plataforma para testar dApps em escala, para equipes. Ele fornece aos usuários seu próprio Testnet privado para testar seus contratos inteligentes e dApps, que podem ser bifurcados em qualquer cadeia EVM. Ele também fornece um Faucet (Torneira), Explorer e RPC para fins de teste.

A BuildBear tem como objetivo criar um ecossistema de ferramentas para testar dApps em escala para as equipes.

Leia nossos artigos anteriores e continue aprendendo:

Este artigo foi escrito por BuildBear Team e traduzido para o português por Rafael Ojeda

Você pode ler o artigo original em inglês aqui

Top comments (0)