WEB3DEV

Cover image for Construindo uma Plataforma de Swap de Token com QuickNode RPC
Isabela Curado Nehme
Isabela Curado Nehme

Posted on

Construindo uma Plataforma de Swap de Token com QuickNode RPC

https://miro.medium.com/v2/resize:fit:720/format:webp/1*439n6nWiazZBaQ8AWGqkiw.png

Pré-requisitos:

  • O que é uma plataforma de Swap (troca) de tokens.
  • Principais recursos e componentes de uma plataforma de Swap de tokens.
  • Casos de uso de um contrato inteligente de Swap de token.
  • Escrevendo um contrato inteligente de Swap de token.
  • Implantação com QuickNode RPC.

O QUE É UMA PLATAFORMA DE SWAP DE TOKEN?

Um swap de token envolve a troca de tipos de token entre duas partes, de uma blockchain para outra. As trocas de tokens podem ser feitas em exchanges e plataformas de swap de tokens.

O swap de tokens, historicamente um processo tedioso e caro, melhorou dramaticamente. Embora existam vários tipos diferentes de métodos de swap, uma troca ou negociação direta de token é adequada para muitos investidores. Uma negociação direta, que envolve a negociação de dois ou mais tokens, é feita através de um serviço de swap.

Esta plataforma específica é um mercado ou plataforma digital onde os usuários podem trocar um tipo de criptomoeda ou token por outro. Este processo é frequentemente referido como “swapping” ou “trading” de tokens. Os tokens que estão sendo colocados em swap podem ser baseados em diferentes redes blockchain ou ter diferentes tecnologias subjacentes.

PRINCIPAIS RECURSOS DE UMA PLATAFORMA DE SWAP DE TOKEN

  1. Compatibilidade de token: a plataforma suporta uma ampla variedade de tokens, incluindo aqueles baseados em diferentes plataformas blockchain (por exemplo, Ethereum, Binance Smart Chain, etc.).
  2. Interface amigável: fornece uma interface fácil de usar para os usuários iniciarem swaps, visualizarem detalhes do token e monitorarem suas transações.
  3. Liquidez: uma plataforma de swap de tokens que funcione bem normalmente tem um alto nível de liquidez, o que significa que há tokens suficientes disponíveis para negociação.
  4. Medidas de segurança: medidas de segurança robustas são implementadas para proteger os fundos e informações confidenciais dos usuários. Isso pode incluir recursos como autenticação de dois fatores, armazenamento a frio de fundos e protocolos seguros.
  5. Histórico de transações: os usuários podem visualizar seu histórico de transações, incluindo detalhes como ID da transação, pares de tokens, valores e marcas temporais (timestamps).
  6. Integração com carteiras: muitas plataformas de swap de tokens permitem que os usuários conectem suas carteiras de criptomoedas diretamente à plataforma para facilitar o acesso aos seus fundos.
  7. Pares de tokens: a plataforma oferece uma variedade de pares de tokens para negociação. Por exemplo, uma plataforma pode suportar ETH/BTC, USDT/DAI e outras combinações.
  8. Ordens de mercado e ordens de limite: os usuários podem colocar ordens de mercado (executadas imediatamente aos preços atuais de mercado) ou definir ordens de limite (executadas a um preço específico).
  9. Gráficos e análises: algumas plataformas fornecem aos usuários gráficos e ferramentas de análise para monitorar preços e tendências de tokens.
  10. Conformidade regulamentar: dependendo da jurisdição, as plataformas de swap de tokens podem precisar cumprir regulamentações específicas, como os requisitos de Conheça seu Cliente (KYC ou Know Your Customer) e Antilavagem de Dinheiro (AML ou Anti-Money Laundering).
  11. Listagens de tokens: a plataforma pode ter um processo para listar novos tokens, que envolve a análise e verificação da legitimidade do token.

CASOS DE USO DE UM CONTRATO INTELIGENTE DA PLATAFORMA DE SWAP DE TOKEN

  1. Exchanges Descentralizadas (DEXs): as DEXs dependem de contratos inteligentes para permitir a negociação de tokens ponto a ponto (peer-to-peer) sem a necessidade de intermediários.
  2. Interoperabilidade entre blockchains: os contratos inteligentes podem ser usados ​​para criar pontes entre diferentes redes de blockchain, permitindo que os tokens sejam colocados em swap sem problemas.
  3. Pools de liquidez: os contratos inteligentes podem ser usados ​​para criar pools de liquidez onde os usuários podem fornecer seus tokens a um pool e ganhar recompensas em troca.
  4. Swaps entre plataformas: os usuários podem colocar em swap tokens em diferentes plataformas de blockchain, como tokens baseados em Ethereum para tokens Binance Smart Chain.
  5. Plataformas de staking e yield farming: os contratos inteligentes nessas plataformas geralmente incluem funcionalidade de swap de tokens para facilitar o processo.
  6. Vendas de tokens e ofertas iniciais de moedas (ICOs ou Initial Coin Offerings): contratos inteligentes podem ser usados ​​para automatizar o processo de distribuição de tokens aos contribuidores em troca de suas contribuições.
  7. Plataformas de finanças descentralizadas (DeFi): as plataformas DeFi geralmente utilizam a funcionalidade de swap de tokens para atividades como créditos, empréstimos e yield farming.
  8. Gerenciamento de portfólio: os contratos inteligentes podem ser usados ​​para reequilibrar automaticamente o portfólio de um usuário através do swap entre diferentes tokens com base em critérios predefinidos.
  9. Mecanismos de governança: algumas organizações autônomas descentralizadas (DAOs) usam swaps de tokens como parte de seus processos de governança, permitindo que os membros votem nas propostas.
  10. Integrações de mercado: os contratos inteligentes em mercados podem incluir a funcionalidade de swap de token para transações contínuas entre diferentes tipos de tokens.
  11. Pagamentos transfronteiriços: os contratos inteligentes podem facilitar os pagamentos transfronteiriços, convertendo os tokens recebidos na moeda desejada.
  12. Doações de caridade: a funcionalidade de swap de tokens pode ser integrada a contratos inteligentes para organizações de caridade, permitindo-lhes aceitar uma variedade de tokens.
  13. Distribuições de recompensas: as plataformas podem usar swaps de tokens como parte de seus mecanismos de distribuição de recompensas para usuários que concluem determinadas tarefas ou contribuem para a plataforma.
  14. Mercados NFT: os contratos inteligentes em mercados NFT podem incluir recursos de swap de tokens para permitir que os usuários comprem NFTs usando diferentes tipos de tokens.
  15. Serviços baseados em assinatura: para plataformas que oferecem serviços de assinatura, swaps de tokens podem ser usados para lidar com pagamentos em tokens diferentes.

ESCREVER UM CONTRATO INTELIGENTE DA PLATAFORMA DE SWAP DE TOKEN.

Ei, chega de fundamentos, é hora de ir para a parte técnica!

Abaixo está um código de contrato inteligente de swap de token:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract TokenSwap {
    mapping(address => uint256) public balances;

    event Swap(address indexed sender, address indexed token, uint256 amount);

    function deposit(address token, uint256 amount) external {
        require(amount > 0, "A quantidade tem que ser superior a zero");

        // Assumindo que existe uma função de transferência no contrato do token
        // token.transferFrom(msg.sender, address(this), amount);
        // Lembre-se de aprovar este contrato para gastar os tokens primeiro

        balances[msg.sender] += amount;

        emit Swap(msg.sender, token, amount);
    }

    function withdraw(address token, uint256 amount) external {
        require(balances[msg.sender] >= amount, "Saldo insuficiente");

        // Assumindo que existe uma função de transferência no contrato do token
        // token.transfer(msg.sender, amount);

        balances[msg.sender] -= amount;

        emit Swap(msg.sender, token, amount);
    }
}
Enter fullscreen mode Exit fullscreen mode

Uma explicação detalhada do código abaixo:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

Enter fullscreen mode Exit fullscreen mode
  • Esta é a instrução Pragma do Solidity. Especifica a versão do compilador Solidity a ser usada e define o identificador de licença do contrato.
contract TokenSwap {

Enter fullscreen mode Exit fullscreen mode
  • Esta linha define o início de um novo contrato Solidity denominado TokenSwap.
mapping(address => uint256) public balances;

Enter fullscreen mode Exit fullscreen mode
  • Esta linha declara uma variável de estado balances que é um mapeamento de endereços para inteiros sem sinal. Será usada para armazenar os saldos de tokens de cada usuário. A palavra-chave public gera automaticamente uma função para recuperar o saldo de um determinado endereço.
event Swap(address indexed sender, address indexed token, uint256 amount);

Enter fullscreen mode Exit fullscreen mode
  • Esta linha define um evento chamado Swap. Os eventos são uma forma de registrar e emitir notificações de um contrato. Esse evento será acionado sempre que ocorrer um swap de token. São necessários três parâmetros: sender (o endereço que inicia o swap), token (o endereço do token que está sendo colocado em swap) e amount (a quantidade de tokens que estão sendo colocados em swap).
function deposit(address token, uint256 amount) external {

Enter fullscreen mode Exit fullscreen mode
  • Esta linha define uma função chamada deposit que recebe dois parâmetros: token (o endereço do token que está sendo depositado) e amount (a quantidade de tokens que estão sendo depositados). A função está marcada como external, o que significa que pode ser chamada fora do contrato.
require(amount > 0, "A quantidade tem que ser superior a zero");

Enter fullscreen mode Exit fullscreen mode
  • Esta linha é uma instrução “require”. Verifica se a quantidade (amount) de tokens depositados é maior que zero. Caso contrário, a transação será revertida com a mensagem de erro fornecida.
 // Assumindo que existe uma função de transferência no contrato do token
        // token.transferFrom(msg.sender, address(this), amount);
        // Lembre-se de aprovar este contrato para gastar os tokens primeiro

Enter fullscreen mode Exit fullscreen mode
  • Estas linhas são comentários que explicam que uma função de transferência do contrato de token deve ser usada para mover os tokens do endereço do remetente para o endereço do contrato. Também lembra o usuário de aprovar primeiro o contrato para gastar os tokens.
balances[msg.sender] += amount;

Enter fullscreen mode Exit fullscreen mode
  • Esta linha incrementa o saldo do msg.sender (o endereço que chama a função) pela quantidade (amount) de tokens depositados.
emit Swap(msg.sender, token, amount);

Enter fullscreen mode Exit fullscreen mode
  • Esta linha emite o evento Swap, sinalizando que ocorreu uma troca de token. Inclui sender, token e amount como parâmetros.
}

function withdraw(address token, uint256 amount) external {

Enter fullscreen mode Exit fullscreen mode
  • Esta linha define uma função chamada withdraw que recebe dois parâmetros: token (o endereço do token a ser retirado) e amount (a quantidade de tokens a serem retirados). Está marcado como external para acesso externo.
require(balances[msg.sender] >= amount, "Saldo insuficiente");

Enter fullscreen mode Exit fullscreen mode
  • Esta linha verifica se o saldo do remetente é maior ou igual à quantidade (amount) que deseja sacar. Caso contrário, a transação será revertida com uma mensagem de erro.
// Assumindo que existe uma função de transferência no contrato do token
        // token.transfer(msg.sender, amount);

Enter fullscreen mode Exit fullscreen mode
  • Estas linhas são comentários que indicam que uma função de transferência do contrato de token deve ser usada para enviar os tokens do contrato para o endereço do remetente.
balances[msg.sender] -= amount;

Enter fullscreen mode Exit fullscreen mode
  • Esta linha subtrai a quantidade (amount) de tokens retirada do saldo do remetente.
emit Swap(msg.sender, token, amount);

Enter fullscreen mode Exit fullscreen mode
  • Esta linha emite o evento Swap, indicando que ocorreu um swap (retirada) de token.
}
}

Enter fullscreen mode Exit fullscreen mode
  • Esta linha fecha o contrato TokenSwap.

Este contrato permite aos usuários depositar e retirar tokens, atualizando seus saldos de acordo. Tenha em mente que ele pressupõe a existência de determinadas funções no contrato de token para a transferência de tokens. Além disso, é crucial considerar os aspectos de segurança e testar minuciosamente o contrato antes da implantação.

Vamos escrever este código em nosso IDE REMIX.

https://miro.medium.com/v2/resize:fit:720/format:webp/1*qt_lPvmiTxOc9nlgBoDEyw.png

IMPLANTAÇÃO COM QUICKNODE RPC

PASSO 1.

Crie um novo nó Sepolia no QuickNode. Você terá que navegar até o painel de controle do QuickNode e clicar em “Create” (criar).

https://miro.medium.com/v2/resize:fit:720/format:webp/0*4LBA-BiALfAsxki3.png

Depois, certifique-se de clicar na cadeia Ethereum. Confira uma captura de tela abaixo:

https://miro.medium.com/v2/resize:fit:720/format:webp/0*AIf1j_mPFETnVotF.png

Clique em “Sepolia”:

https://miro.medium.com/v2/resize:fit:720/format:webp/0*i8hGvs2UoDeHYy2e.png

Em seguida, clique em “Continue” (continuar) para prosseguir. Por fim, clique em “Create endpoint” (criar ponto de extremidade) para obter seu URL da Sepolia.

https://miro.medium.com/v2/resize:fit:720/format:webp/0*WsoZWlXlT9ttzVi_.png

PASSO 2.

Clique em “Add network” (adicionar rede). Siga as instruções sobre como adicionar o URL RPC ao navegador da sua carteira.

https://miro.medium.com/v2/resize:fit:720/format:webp/0*e7lbORoPL6yRhFIw.png

Clique em “Add network manually” (adicionar rede manualmente).

https://miro.medium.com/v2/resize:fit:720/format:webp/0*92fYgDbrsHdeQoTV.png

PASSO 3.

Insira um nome (qualquer), já que está usando o QuickNode, você pode usar “QKN”. Copie/cole seu ponto de extremidade Web3 (certifique-se de incluir “/” no final!), insira o ChainID e clique em “Save” (salvar).

Estamos usando a rede de testes Sepolia, então é aconselhável usar o ID da cadeia Sepolia, que é “11155111”.

https://miro.medium.com/v2/resize:fit:720/format:webp/0*JNCiFCj0UMAlYWub.png

Por fim, você obterá o resultado abaixo.

https://miro.medium.com/v2/resize:fit:720/format:webp/0*M8v25bCPitnUNwpO.png

Perfeito! Estamos quase terminando, agora solicitamos um pouco de Eth da rede de testes Sepolia para podermos implantar nosso contrato inteligente.

PASSO 4.

Agora, para obter taxas de gás, vamos usar a https://faucet.quicknode.com/drip. Abaixo está o procedimento.

https://miro.medium.com/v2/resize:fit:720/format:webp/0*1fjg30BsmJNYcB6n.png

Em seguida, conecte a carteira e obtenha um pouco de Eth.

Depois de fazer isso, você obterá o resultado abaixo:

https://miro.medium.com/v2/resize:fit:720/format:webp/0*k4eCIrTWq1wmnzvl.png

Com isso, estamos prontos para implantar nosso contrato inteligente de swap de token.

Implantação do Código de Contrato Inteligente na Rede de Testes Sepolia

https://miro.medium.com/v2/resize:fit:720/format:webp/0*xuGonc4VOQ0DH-_G.png

Clique em “Confirm” (confirmar) para finalizar as transações.

Conclusão

Parabéns por criar com sucesso seu próprio contrato inteligente de swap de token na rede Ethereum!

Assine o boletim informativo do QuickNode para mais artigos e guias sobre a Ethereum. Se você tiver algum comentário, sinta-se à vontade para entrar em contato conosco por meio do Twitter. Você sempre pode conversar conosco em nosso servidor da comunidade Discord, que conta com alguns dos desenvolvedores mais legais que você já conheceu :)

Este artigo foi escrito por Playboi.eth e traduzido por Isabela Curado Nehme. Seu original pode ser lido aqui.

Top comments (0)