Como criar bot trader para SushiSwap (V3) em Node.js

Bot Cripto

Como criar bot trader para SushiSwap (V3) em Node.js

Luiz Duarte
Escrito por Luiz Duarte em 14/10/2025
Junte-se a mais de 34 mil devs

Entre para minha lista e receba conteúdos exclusivos e com prioridade

As exchanges descentralizadas ou DEX, como são popularmente chamadas, são uma alternativa às exchanges tradicionais, ou centralizadas, como Binance e Coinbase. Enquanto que nas exchanges centralizadas você compra e vende moedas com a corretora como mediadora das negociações e sem a custódia das suas próprias moedas (“not your keys, not your money”), nas DEX temos todas as negociações, chamadas de swaps (trocas), sendo feitas através de usuários que se conectam à rede com suas próprias carteiras de criptomoedas (como MetaMask) e a mediação acontecendo através de contratos inteligentes (smart contracts). Ou seja, não é um P2P “cru”, direto, ainda existe um intermediador, mas ele é um software aberto e transparente, publicado na blockchain.

Como Chanpeng Zhao afirma, o próprio fundador da Binance, as DEX são o futuro das corretoras de criptomoedas já que por rodarem nativamente na blockchain eles garantem a segurança, o anonimato e a descentralização a todas as partes envolvidas, diferente das exchanges tradicionais que sofrem cada vez mais ataques dos órgãos reguladores nos países em que operam. No entanto, operar em uma DEX é ligeiramente mais complicado do que operar em exchanges comuns, pela própria natureza das criptomoedas e blockchain em si. Da mesma forma, programar bots para este tipo de corretora é um desafio maior também.

Desta forma, neste tutorial eu espero lhe ajudar a entender como criar um primeiro bot trader de criptomoedas que fará swaps em seu nome em uma DEX, a SushiSwap V3. É importante você entender, antes de começarmos a programar, que operar no mercado cripto é muito arriscado por este ser um mercado muito volátil e não-regulado. Não posso prometer ou me responsabilizar por qualquer lucro ou prejuízo que você possa ter ao colocar o seu dinheiro em uma SushiSwap ou qualquer outra DEX, independente se usar os códigos que ensino ou não. Além disso, é imprescindível que você já possua conhecimentos básicos de programação para poder fazer este tutorial e também que já tenha feito swaps manualmente na SushiSwap antes, pois são coisas que não ensinarei aqui.

Dito isso, vamos ao tutorial. Se preferir, o vídeo abaixo contém o mesmo conteúdo.

#1 – Setup do Ambiente

Usaremos neste tutorial a tecnologia Node.js, cujo setup deve ser feito antes do projeto começar de fato. Baixe e instale diretamente do site oficial e caso tenha dificuldade, pode usar o vídeo abaixo. O vídeo também ensina a instalar o Visual Studio Code, que é a ferramenta de desenvolvimento que uso.

Você vai precisar também de uma carteira de criptomoedas e se já é usuário da SushiSwap certamente você já tem uma. Usarei aqui a MetaMask como exemplo pois é uma carteira bem popular e que consigo dar algum suporte. Via de regra, qualquer carteira compatível com rede Ethereum vai servir. Caso ainda não tenha uma MetaMask, no vídeo abaixo eu ensino a criar uma (é grátis) e a configurar ela com as configurações e saldo de teste. Também mostro isso nesse tutorial, caso prefira ler ao invés de assistir. Usarei aqui a rede Sepolia, mas você pode usar qualquer rede onde a SushiSwap possua operação.

Agora com saldo na carteira e ela apontada para a Sepolia, você pode obter USDC de teste no faucet oficial da Circle (mantenedora da moeda, contrato é 0x1c7d4b196cb0c7b01d743fbc6116a902379c7238) e também obter WETH de teste pelo próprio contrato do WETH, chamando a função deposit. Caso você não tenha ETH para trocar por WETH, pode obter no faucet Sepolia PoW.

Para envia transações para os smart contracts da SushiSwap você vai precisar ter acesso a um nó da blockchain onde desejará negociar. Você pode obter um nó Sepolia gratuitamente com a Infura, um dos maiores provedores de Blockchain as a Service do mundo. Crie uma conta gratuita no site deles e depois crie um node da rede que deseja (eu vou usar Sepolia) para você assim que conseguir entrar no painel. Guarde a API Key que vai receber, vamos precisar dela mais tarde.

E com isso nós estamos com tudo preparado para começar a programar.

#2 – Setup do Projeto

Agora vamos criar nosso projeto Node.js, começando pela criação de uma pasta sushiswap-v3 e inicialização de um projeto Node.js nela.

Depois, vamos instalar as dependências que vamos precisar:

A saber:

  • DotEnv: dependência para carregamento das variáveis de ambiente;
  • Ethers: biblioteca para integração com a blockchain;
  • Sushi: SDK que facilita a integração com a SushiSwap;
  • Viem e Zod são dependências do SDK da Sushi;

Agora crie um arquivo .env na raiz do seu projeto e coloque nele as seguintes variáveis:

  • CHAIN_ID: o chain id da rede que vai operar. Ex: 11155111 (para Sepolia)
  • NETWORK: o nome da rede que vai operar, em minúsculas. Ex: sepolia
  • INFURA_API_KEY: sua Api Key da Infura.
  • TOKEN0_ADDRESS: o endereço do contrato do token que vai negociar via bot. Se estiver na Sepolia, use 0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14 para o token WETH, por exemplo;
  • TOKEN1_ADDRESS: o endereço do contrato do token que vai usar para pagar/receber. Se estiver na Sepolia, use 0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238 para o token USDC, por exemplo;
  • QUOTE0_ADDRESS: o endereço do contrato do token para cotação do preço, obrigatoriamente tem de ser uma mainnet. Ex: 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 (para WETH na Ethereum Mainnet);
  • WALLET: endereço público da carteira que vai usar para o bot (você pega ela na MetaMask);
  • PRIVATE_KEY: chave privada da carteira que vai usar para o bot (você pega ela dentro da MetaMask, em Detalhes da Conta);
  • ROUTER_ADDRESS: o endereço do contrato de swap routing da SushiSwap v3 na rede em questão. No caso da Sepolia, é
    0x3b0aa7d38bf3c103bf02d1de2e37568cbed3d6e8;
  • PRICE_TO_BUY: o preço em USD que servirá como gatilho para o bot comprar a moeda. Ex: 5000;
  • AMOUNT_TO_BUY: a quantidade da moeda base que será usada em cada compra (WETH no nosso caso), na escala ‘ether’, com até 18 casas decimais. Ex: 0.1;
  • PROFITABILITY: o multiplicador percentual que será usado como gatilho de venda. Ou seja, define a sua lucratividade. Ex: 1.1 (=10%);

Muita atenção aqui com os endereços dos tokens ERC-20 que você vai monitorar, pois eles mudam de rede para rede. Estou usando aqui WETH e USDC na Sepolia, monitorando o preço do WETH na Ethereum Mainnet (não tem como monitorar preço em testnet).

Para a etapa de aprovação do swap, precisamos ter acesso à especificação ERC20 usada pelos contratos dos tokens, chamado de ABI. Crie um arquivo abi.erc20.json na raiz do seu projeto e inclua nele o seguinte conteúdo.

Agora crie o arquivo index.js e coloque o código abaixo dentro dele, para testar seu funcionamento.

Para testar, vá no seu package.json, na seção scripts, para iniciar o index.js, que será o arquivo principal da aplicação.

Assim, se quiser fazer um teste, use sempre o comando abaixo.

O resultado deve ser o texti que colocou no index.js, no console.log.

#3 – Monitorando o Mercado

Agora vamos voltar ao index.js, pode remover o console.log de teste e vamos carregar as configurações do .env.

Além de carregar o .env para memória, o código acima importa as bibliotecas que vamos usar e guarda as variáveis de ambiente em constantes locais, para facilitar seu uso mais tarde. Ainda sobre o código acima, a maioria das constantes e variáveis ainda serão usadas ao longo do código, quando serão melhor explicadas.

Agora vamos criar a função que vai monitorar o preço da criptomoeda no mercado da SushiSwap, como abaixo.

Aqui eu estou usando a função getPrice do SDK da Sushi, informando que quero a cotação na rede Ethereum Mainnet da moeda com o endereço QUOTE0_ADDRESS, que no meu exemplo é o WETH. Limpamos o console, imprimimos o preço e retornamos o mesmo.

Agora vamos chamar esta função monitor no index.js, em uma função recursiva.

Aqui eu declarei três variáveis, uma para controlar se estou com a posição aberta ou fechada (isClosed), outro para dizer se o swap está aprovado ou não (falaremos disso em breve) e uma terceira para dizer a quantidade que recebi no swap (também usaremos depois).

Na função cycle, eu defino a chamada ao monitoramento, a comparação do preço com gatilhos definidos por mim no .env e controlados pela isOpened. Se eu ainda não fiz o primeiro swap e o preço está bacana, eu faço ele. Depois sigo monitorando para fazer o segundo swap com uma valorização x (definida em PROFITABILITY). Quando o preço não está bom, apenas aguarda e agenda a próxima verificação para daqui a 10 segundos (10000ms).

A próxima etapa é justamente fazer a compra ou a venda literalmente, mas este é um assunto para a parte dois deste tutorial, confira aqui!

TAGS:

Olá, tudo bem?

O que você achou deste conteúdo? Conte nos comentários.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

4 Replies to “Como criar bot trader para SushiSwap (V3) em Node.js”

Hugo.

O melhor do agoiros, possível.

Luiz Duarte

Desculpe, não entendi.

Oswaldo Roberto Rodrigues

Excelente! Aguardo a Parte 2.

Luiz Duarte

O link da parte 2 está no final do artigo, na última linha.