Como Criar Seu Bot de Sniping para Solana

Já pensou em transferir tokens SPL de uma carteira para outra na rede Solana? Se você está começando no mundo das criptomoedas e se interessa por Solana, entender como fazer isso é fundamental. Neste artigo, vamos explicar tudo sobre os tokens SPL e como você pode transferi-los de forma prática e segura.

Solana SPL Token

Antes de mergulhar nos detalhes dos tokens SPL, é importante entender por que aprender sobre eles é crucial, especialmente se você está desenvolvendo um Solana Sniper Bot. Os tokens SPL são o padrão para tokens na blockchain da Solana, assim como os tokens ERC-20 no Ethereum. Se você quer que seu sniper bot interaja com novos tokens ou pools de liquidez, o conhecimento sobre SPLs é essencial.

Um sniper bot precisa executar ordens de compra e venda ou transferências de tokens SPL rapidamente. Saber como lidar com esses tokens permite programar o bot para realizar essas transações de forma eficiente. Muitos sniper bots focam em negociar tokens SPL recém-lançados, que frequentemente têm alta volatilidade de preço. Entender os tokens SPL permite que você identifique e interaja com eles rapidamente, dando ao seu bot uma vantagem competitiva.

Além disso, muitos protocolos de finanças descentralizadas (DeFi) na Solana usam tokens SPL. Compreender esses tokens possibilita que seu bot interaja com exchanges descentralizadas (DEXs) ou plataformas de empréstimo, expandindo sua funcionalidade e potencial de lucro. Alguns sniper bots são projetados para mirar tipos específicos de tokens, como memecoins, tokens de governança ou NFTs. O conhecimento de SPLs permite que você personalize as estratégias do seu bot para esses tipos de tokens únicos.

O que é um Token SPL?

O Solana SPL Token (Solana Program Library Token) é um padrão para criar e gerenciar tokens na blockchain da Solana. Ele é semelhante ao padrão ERC-20 no Ethereum, mas otimizado para a infraestrutura de alta velocidade e baixo custo da Solana.

  • Definição: Tokens SPL são ativos digitais criados e gerenciados usando a Solana Program Library (SPL), que fornece um conjunto de regras e padrões para criação, transferência e gerenciamento de tokens.
  • Fungibilidade: Tokens SPL são tipicamente fungíveis, o que significa que cada token é intercambiável com outro do mesmo tipo (por exemplo, 1 USDC é sempre igual a 1 USDC).
  • Extensibilidade: O padrão de token SPL também pode ser usado para non-fungible tokens (NFTs) e semi-fungible tokens, tornando-o versátil para vários casos de uso.

Componentes dos Tokens SPL

Os tokens SPL são compostos por alguns elementos essenciais que garantem seu funcionamento e gerenciamento adequados na blockchain da Solana:

  • Token Mint: O “mint” é a conta on-chain que define as propriedades do token, como seu fornecimento, decimais e autoridade. Cada token SPL tem um endereço mint único.
  • Token Account: Uma conta de token guarda uma quantidade específica de tokens para um usuário. Cada usuário pode ter múltiplas contas de token para diferentes tokens SPL.
  • Decimais: Tokens SPL podem ter até 9 casas decimais, permitindo quantidades fracionárias precisas (por exemplo, 0.000000001).
  • Autoridade: A autoridade é a entidade (por exemplo, uma carteira ou programa) que tem controle sobre o token mint ou a conta de token. Isso inclui:

    • Mint Authority: Controla a criação de novos tokens.
    • Freeze Authority: Pode congelar contas de token (opcional).
    • Owner: A carteira que possui a conta de token e pode transferir tokens.

Outras Informações Importantes

  • Como os Tokens SPL Funcionam

    • Criação: Um desenvolvedor cria um token SPL inicializando uma conta “mint” na blockchain da Solana. Isso define as propriedades do token, como o fornecimento total e decimais.
    • Distribuição: Tokens são distribuídos aos usuários transferindo-os para suas contas de token.
    • Transfers: Usuários podem enviar e receber tokens SPL assinando transações que atualizam os saldos em suas contas de token.
    • Burning: Tokens podem ser “queimados” (destruídos) enviando-os para um endereço de queima, reduzindo o fornecimento total.
  • SPL Token vs. Native SOL

    • Native SOL: SOL é a criptomoeda nativa da blockchain da Solana, usada para pagar taxas de transação e staking.
    • SPL Tokens: SPL tokens são construídos em cima da blockchain da Solana e representam ativos customizados. Eles requerem SOL para pagar pelas taxas de transação ao transferir ou interagir com eles.
  • Ferramentas e Bibliotecas para SPL Tokens

    • SPL Token Program: O programa on-chain que define as regras para criar e gerenciar SPL tokens.
    • Solana Web3.js: Uma biblioteca JavaScript para interagir com a blockchain da Solana, incluindo SPL tokens.
    • Wallets: Carteiras como Phantom, Solflare e Sollet suportam SPL tokens.
    • Explorers: Ferramentas como Solscan e Solana Explorer permitem que usuários visualizem transações e saldos de tokens SPL.

Token 2022

O Token 2022 refere-se a uma atualização ou extensão do padrão SPL Token na blockchain da Solana. Os SPL Tokens são o padrão para criar e gerenciar tokens na Solana, similar aos tokens ERC-20 no Ethereum, mas o programa Token 2022 introduz funcionalidades e melhorias adicionais para aprimorar a funcionalidade, segurança e flexibilidade para criadores e usuários de tokens.

Funcionalidades Chave do Token 2022

  • Funcionalidade Aprimorada:
    Token 2022 expande as capacidades do padrão SPL Token original ao adicionar novas funcionalidades, como:

    • Transferências Confidenciais: Permite transações com preservação de privacidade onde montantes e saldos são criptografados.
    • Transfer Hooks: Permite que desenvolvedores implementem lógica customizada quando tokens são transferidos, como aplicar taxas ou restrições.
    • Tokens Não-Transferíveis: Suporta a criação de tokens que não podem ser transferidos, útil para representar propriedade ou credenciais.
    • Tokens com Juros: Permite que tokens acumulem juros ao longo do tempo, o que é útil para aplicações financeiras.
  • Segurança Aprimorada: Token 2022 introduz medidas de segurança adicionais para proteger contra vulnerabilidades e garantir operações de token mais seguras.

  • Compatibilidade Retroativa: A atualização é projetada para ser retrocompatível com o padrão SPL Token existente, garantindo que tokens e aplicações existentes continuem a funcionar sem interrupção.

  • Flexibilidade para Desenvolvedores: Token 2022 fornece aos desenvolvedores mais ferramentas e opções para criar aplicações inovadoras baseadas em token, como plataformas de finanças descentralizadas (DeFi), ativos de jogos e mais.

  • Conformidade Regulatória: Funcionalidades como transferências confidenciais e tokens não-transferíveis podem ajudar projetos a cumprir requisitos regulatórios, como leis de privacidade ou restrições em transferências de token.

Por que o Token 2022 é Importante

  • Inovação: Token 2022 permite que desenvolvedores criem tokens mais sofisticados com funcionalidades que não eram possíveis com o padrão de token SPL original.

  • Crescimento do DeFi: Funcionalidades avançadas como tokens com juros e transferências confidenciais podem impulsionar a inovação em finanças descentralizadas (DeFi) na Solana.

  • Privacidade: Transferências confidenciais abordam preocupações com a privacidade, tornando a Solana mais atraente para usuários e instituições.

  • Customização: Desenvolvedores podem customizar tokens para casos de uso específicos, como NFTs dinâmicos ou tokens com permissões baseadas em função.

Exemplos do Token 2022 em Ação

  • Tokens com Juros: Um protocolo de staking poderia emitir tokens que automaticamente acumulam juros baseados em recompensas de staking.

  • Transferências Confidenciais: Uma aplicação focada na privacidade poderia usar o Token 2022 para ocultar montantes de transação enquanto ainda mantém a transparência para auditores.

  • NFTs Dinâmicos: Um projeto NFT poderia usar o Token 2022 para criar tokens com metadados que evoluem ao longo do tempo (por exemplo, um personagem que sobe de nível em um jogo).

SPL Tokens vs. Token 2022

  • SPL Tokens
    SPL (Solana Program Library) tokens são o padrão de token original na Solana, projetado para criar tokens fungíveis e não fungíveis (NFTs).
    Limitações:

    • Extensibilidade limitada para funcionalidades avançadas.
    • Sem suporte nativo para funcionalidades como tokens com juros, transferências confidenciais ou permissões baseadas em função.
  • Token 2022

    • Token 2022 é um padrão de token atualizado e mais avançado construído em cima do programa de token SPL original. Ele introduz novas funcionalidades e capacidades para suportar casos de uso mais complexos.
  • Principais Diferenças Entre SPL Tokens e Token 2022

Funcionalidade SPL Tokens Token 2022
Padrão Padrão de token original Padrão atualizado e avançado
Funcionalidade Criação e transferências de token básicas Funcionalidades avançadas como tokens com juros, transferências confidenciais, etc.
Extensibilidade Limitada Altamente extensível com lógica customizada
Compatibilidade Retroativa N/A Compatível com SPL tokens
Casos de Uso Tokens fungíveis, NFTs DeFi complexo, tokens de privacidade, NFTs dinâmicos

Como Transferir tokens SPL da Carteira A para a Carteira B

No artigo anterior, já desenvolvemos um script para transferir SOL. Agora, vamos enviar tokens SPL usando seu próprio código.

Passo 1: Configurar o Ambiente

  • Para conveniência, vamos desenvolver nosso próprio código usando o VS Code. Vamos assumir que você já instalou o Node.js (versão 18.0 ou posterior).
  • Além disso, precisamos da carteira A e da carteira B. Para ser preciso, para enviar dinheiro da carteira A para a carteira B, você precisará da chave privada da carteira A e da chave pública da carteira B.
  • Inicialize seu projeto usando npm init.
  • Instale as dependências usando este comando:
npm install typescript ts-node @project-serum/anchor @solana/web3.js @solana/spl-token dotenv bs58
  • Verifique o arquivo package.json e edite os scripts assim:
{
  "main": "index.ts",
  "scripts": {
    "build": "tsc",
    "start": "ts-node index.ts",
    "clean": "tsc --build --clean",
    "dev": "tsc && node ./dist/index.js"
  },
  "dependencies": {
    "@project-serum/anchor": "^0.26.0",
    "@solana/spl-token": "^0.4.12",
    "@solana/web3.js": "^1.98.0",
    "bs58": "^6.0.0",
    "dotenv": "^16.4.7",
    "typescript": "^5.7.3"
  },
  "devDependencies": {
    "@types/node": "^22.13.4",
    "ts-node": "^10.9.2"
  }
}
  • Instale o ambiente Typescript usando o comando tsc --init.
  • Edite o arquivo tsconfig.json assim:
{
  "compilerOptions": {
    "target": "es2016",
    "module": "commonjs",
    "outDir": "./dist",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "skipLibCheck": true
  }
}
  • Arquivo .env:
SENDER_WALLET_PRIVATE_KEY="PRIVATE KEY OF WALLET A"
RECEIVER_WALLET_PUBLIC_KEY="PUBLIC KEY OF WALLET B"

Passo 2: Código Principal (index.ts)

Este código transfere 0.01 SOL da carteira A para a carteira B.

import dotenv from "dotenv";
import bs58 from "bs58";
import {
LAMPORTS_PER_SOL,
Keypair,
Connection,
PublicKey,
clusterApiUrl,
ComputeBudgetProgram,
TransactionMessage,
VersionedTransaction,
TransactionInstruction
} from "@solana/web3.js";
import {
getOrCreateAssociatedTokenAccount,
getMint,
createTransferInstruction,
TOKEN_PROGRAM_ID,
TOKEN_2022_PROGRAM_ID,
ASSOCIATED_TOKEN_PROGRAM_ID,
createTransferCheckedInstruction,
} from "@solana/spl-token";
import { BN } from "@project-serum/anchor";

dotenv.config();

// Keys from .env
const fromWalletPrivateKeyString = process.env
.SENDER_WALLET_PRIVATE_KEY as string;
const receiverPublicKeyString = process.env
.RECEIVER_WALLET_PUBLIC_KEY as string;

const fromWallet = Keypair.fromSecretKey(bs58.decode(fromWalletPrivateKeyString));
const toWalletPublicKey = new PublicKey(receiverPublicKeyString);

// transferSplToken function
async function transferSplToken(mint:PublicKey, transferAmount: number, network: string = "mainnet") {
let connection: Connection;
if (network === "mainnet") {
connection = new Connection("https://api.mainnet-beta.solana.com");
} else {
connection = new Connection(clusterApiUrl("devnet"), "confirmed");
}
// Check fromWallet balance
const fromWalletBalance = await connection.getBalance(fromWallet.publicKey);
console.log("From Wallet Balance:", fromWalletBalance / LAMPORTS_PER_SOL, "SOL");

if (fromWalletBalance < 0.01 * LAMPORTS_PER_SOL) {
throw new Error("From wallet does not have enough SOL to pay for transaction fees.");
}

const accountInfo = await connection.getAccountInfo(mint);
const tokenProgramID = accountInfo?.owner;
console.log("Token ProgramID", tokenProgramID);

// Get token mint info (including decimals)
const mintInfo = await getMint(
connection,
mint,
"confirmed",
tokenProgramID // TOKEN_PROGRAM_ID or TOKEN_2022_PROGRAM_ID
);
console.log("Token Decimals:", mintInfo);

console.log("ASSOCIATED_TOKEN_PROGRAM_ID: ", ASSOCIATED_TOKEN_PROGRAM_ID);

// Get the token account of the fromWall address, if it doesn't exist, create it
const fromTokenAccount = await getOrCreateAssociatedTokenAccount(
connection,
fromWallet,
mint,
fromWallet.publicKey,
false,
undefined,
undefined,
tokenProgramID, // TOKEN_PROGRAM_ID or TOKEN_2022_PROGRAM_ID
ASSOCIATED_TOKEN_PROGRAM_ID
);

//get the token account of the toWallet address, if it does not exist, create it
const toTokenAccount = await getOrCreateAssociatedTokenAccount(
connection,
fromWallet, // payer
mint,
toWalletPublicKey,
false,
undefined,
undefined,
tokenProgramID, // TOKEN_PROGRAM_ID or TOKEN_2022_PROGRAM_ID
ASSOCIATED_TOKEN_PROGRAM_ID
);

console.log ("fromTokenAccount::", fromTokenAccount.toString());

// Check the balance of the fromTokenAccount
const fromTokenAccountBalance = await connection.getTokenAccountBalance(fromTokenAccount.address);
console.log("From Token Account Balance:",

Leave a Comment

Exit mobile version