WEB3DEV

Cover image for DeFi-SDK — Guia Para Iniciantes
Banana Labs
Banana Labs

Posted on • Atualizado em

DeFi-SDK — Guia Para Iniciantes

A integração com diferentes protocolos Ethereum e a execução de tarefas comuns é complicada. Hoje vamos explorar o DeFi-SDK e como ele simplifica o trabalho com vários protocolos DeFi em paralelo.

DeFi SDK

Programação Defi, Agora Mais Fácil Do Que Nunca

A integração com diferentes protocolos Ethereum e a execução de tarefas comuns é complicada. Por exemplo, você precisa obter endereços de contrato inteligente e ABIs para vários protocolos DeFi e, em seguida, gerenciar todos eles.

Para resolver esse problema, a equipe Zerion lançou o DeFi SDK. Hoje vamos falar sobre como ele simplifica a integração de diferentes protocolos DeFi.

O que é DeFi-SDK?

DeFi-SDK é um conjunto de contratos inteligentes e APIs para executar tarefas comuns nos protocolos Ethereum #DeFi, como Compound e Aave. De acordo com a documentação oficial:

“O DeFi SDK é um sistema de código aberto de contratos inteligentes que torna mais fácil para os desenvolvedores integrarem os protocolos DeFi.”

Que problema o DeFi-SDK resolve?

O DeFi-SDK ajuda você a integrar facilmente vários protocolos DeFi e padroniza a maneira como você interage com eles.

Protocolos Suportados

DeFi-SDK atualmente suporta:

  • PieDAO
  • Multi-Collateral Dai
  • Bancor
  • DeFi Money Market
  • TokenSets
  • 0x Staking
  • Uniswap V1
  • Synthetix
  • PoolTogether
  • Dai Savings Rate
  • Chai
  • iearn.finance (v2, v3)
  • Idle
  • dYdX
  • Curve
  • Compound
  • Balancer
  • Aave

Instale o DeFi-SDK

Primeiro, vamos criar um novo diretório:

mkdir defi-sdk

Atualmente, o DeFi-SDK está disponível apenas na linguagem Python e Go. Hoje, usaremos a versão Python em um sistema Ubuntu. defisdk requer Python 3.8, então vamos instalá-lo.

Instale o pacote de desenvolvedor do Python 3.8:

sudo apt-get install python3.8-dev

Agora instale o defisdk:

python3.8 -m pip install defisdk --no-cache-dir

Se você encontrar um erro, entre no grupo do discord da Zerion.

Trabalhando com DeFi-SDK

Agora, vamos entender como o defisdk funciona com alguns exemplos.

Vamos criar um arquivo index.py em nosso diretório defi-sdk:

touch index.py

Em seguida, abra este arquivo, nós o usaremos para os exemplos do defisdk.

Configuração inicial

Precisamos inicializar nosso defisdk. Para isso, é necessária uma URL de endpoint web3 ETH MainNet.

Você pode se inscrever no QuickNode e obter a URL.

import asyncio
from defisdk import DeFiSDK
ETHEREUM_NODE_URL = 'YOUR_QUICKNODE_URL'
defi_sdk = DeFiSDK(ETHEREUM_NODE_URL)
Enter fullscreen mode Exit fullscreen mode

Você pode ver nas linhas número 2,3,4 que estamos importando o SDK e criando um objeto passando uma URL do nó Ethereum.

Na primeira linha, estamos importando uma biblioteca que usaremos mais tarde.

Observação: se você estiver criando um aplicativo para uso em produção, um serviço como o QuickNode pode economizar tempo, dinheiro e ajudar a tornar seu aplicativo mais rápido.

Obtendo todos os protocolos

Fizemos a configuração inicial.

Agora vamos obter todos os protocolos suportados pelo defisdk:

async def get_protocols():
    print(await defi_sdk.get_protocol_names())
    asyncio.run(get_protocols())
Enter fullscreen mode Exit fullscreen mode

Aqui, defi_sdk.get_protocol_names() nos dará um nome de protocolo, é uma função assíncrona porque chama contratos inteligentes por trás dos panos.

Adicione as linhas acima no mesmo arquivo (index.py).

Agora vamos executar nosso arquivo para ver o resultado:

python3.8 index.py

Isso gerará todo o protocolo suportado pelo defisdk:

output

Obter Saldo De Todos Os Protocolos

Neste exemplo, obteremos o saldo do token de um usuário de todos os protocolos em uma única chamada.

USER_ADDRESS = '0xa218a8346454c982912cf6d14c714663c2d510d8'
async def get_account_balance():
    balance = await defi_sdk.get_account_balance(USER_ADDRESS)
    print(balance)
asyncio.run(get_account_balance())
Enter fullscreen mode Exit fullscreen mode

Aqui, defi_sdk.get_account_balance(USER_ADDRESS) é a função que nos dará o saldo do usuário entre os protocolos.

Adicione as linhas acima ao nosso index.py e vamos executá-lo:

python3.8 index.py

output

Você pode conferir a documentação completa do DeFi SDK para saber mais sobre ele.

Arquitetura DeFi-SDK

Agora, vamos entender a arquitetura DeFi-SDK.

defisdk é uma combinação de duas coisas:

  1. Adaptadores de contrato inteligente + um registro
  2. Uma biblioteca escrita em python chamando funções de contrato inteligente Defi SDK

Existem dois tipos de Adaptadores:

  • ProtocolAdapter: um contrato especial para cada protocolo. Seu objetivo principal é envolver todas as interações do protocolo. Existem diferentes tipos de adaptadores de protocolo: o adaptador “Asset” retorna a quantidade de tokens da conta mantidos no protocolo e o adaptador “Debt” retorna o valor do débito da conta com o protocolo. Alguns protocolos não usam tokens ERC20 “simples”, mas sim derivativos complexos (por exemplo, o protocolo Compound possui CTokens). O contrato ProtocolAdapter também fornece informações sobre o tipo de tokens usados nele.
  • TokenAdapter: um contrato para cada tipo de token derivado (ex. cTokens, aTokens, yTokens, etc...). Seu principal objetivo é fornecer metadados de token no estilo ERC20, bem como informações sobre os tokens ERC20 subjacentes (como DAI para cDAI). Ou seja, fornece endereços, tipos e taxas de tokens subjacentes.

DeFi SDK

Resumindo

Trabalhar com vários protocolos ainda pode ser bastante desafiador no ecossistema Ethereum, mas graças a algumas novas bibliotecas, as empresas estão tentando resolver esse problema. Em artigos futuros, veremos bibliotecas semelhantes.

Sobre o QuickNode

QuickNode.com está construindo infra-estrutura para suportar o futuro da Web3. Desde 2017, trabalhamos com centenas de desenvolvedores e empresas, ajudando a escalar dApps e fornecendo nós Ethereum de alto desempenho. Estamos trabalhando em algo interessante nestes últimos meses e será lançado em breve, então assine nossa newsletter para mais atualizações!! 😃


Esse artigo é uma tradução de QuickNode feita por @bananlabs. Você pode encontrar o artigo original aqui

Oldest comments (0)