SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
14.11.2024

Lição: 026: Interagindo com Programas Solana Usando JavaScript

Nesta aula, iremos explorar como interagir com programas da Solana usando JavaScript. A Solana é uma blockchain de alto desempenho que suporta diversas aplicações descentralizadas (dApps), e seus programas (contratos inteligentes) podem ser acessados através da biblioteca Solana Web3.js.

Pré-requisitos

Antes de começarmos, certifique-se de ter o seguinte:

  • Node.js instalado em seu sistema.
  • Conhecimento básico de JavaScript e da sintaxe async/await.
  • Uma carteira Solana (por exemplo, Phantom ou Sollet) com alguns SOL para pagar pelas transações.

Configurando o Ambiente

Para começar, precisamos configurar nosso ambiente JavaScript. Abra seu terminal e crie um novo diretório de projeto:

mkdir solana-js-exemplo
cd solana-js-exemplo
npm init -y

Em seguida, instale o pacote @solana/web3.js:

npm install @solana/web3.js

Conectando ao Cluster Solana

Primeiro, vamos criar um arquivo chamado index.js e conectar ao devnet da Solana:

// index.js
const { Connection, PublicKey, clusterApiUrl } = require('@solana/web3.js');

// Criar uma conexão com o devnet
const connection = new Connection(clusterApiUrl('devnet'), 'confirmed');

async function getClusterVersion() {
    const version = await connection.getVersion();
    console.log("Versão do cluster:", version);
}

getClusterVersion();

Execute o script:

node index.js

Você deverá ver a versão do cluster Solana exibida no console.

Interagindo com um Programa de Token

Em seguida, iremos interagir com um Programa de Token para criar e gerenciar tokens. Para este exemplo, precisaremos de um endereço de mint de token existente. Se você não tiver um, pode criar um novo token usando o SPL Token CLI.

Primeiro, instale o SPL Token CLI:

npm install -g @solana/spl-token

Agora crie um novo token no devnet:

spl-token create-token --url https://api.devnet.solana.com

Anote o endereço de mint do seu token e o endereço de queima.

Buscando o Saldo do Token

Vamos buscar o saldo do token de uma conta. Atualize seu index.js:

const { Token, TOKEN_PROGRAM_ID } = require('@solana/spl-token');

async function getTokenBalance(walletAddress) {
    // A chave pública do mint do token
    const tokenMintAddress = new PublicKey('SEU_ENDEREÇO_MINT_DE_TOKEN_AQUI');

    // Buscar a conta do token
    const tokenAccounts = await connection.getParsedTokenAccountsByOwner(walletAddress, {
        mint: tokenMintAddress
    });

    if (tokenAccounts.value.length > 0) {
        const balance = tokenAccounts.value[0].account.data.parsed.info.tokenAmount.uiAmount;
        console.log(`Saldo do token: ${balance}`);
    } else {
        console.log("Nenhuma conta de token encontrada para este endereço.");
    }
}

// Substitua SEU_ENDEREÇO_DE_CARTEIRA pelo seu próprio endereço de carteira
getTokenBalance(new PublicKey('SEU_ENDEREÇO_DE_CARTEIRA'));

Certifique-se de substituir SEU_ENDEREÇO_MINT_DE_TOKEN_AQUI e SEU_ENDEREÇO_DE_CARTEIRA pelos valores apropriados.

Enviando Tokens

Agora que podemos verificar os saldos dos tokens, iremos enviar tokens para outro endereço:

async function sendTokens(fromWallet, toWallet, amount) {
    const tokenMintAddress = new PublicKey('SEU_ENDEREÇO_MINT_DE_TOKEN_AQUI');
    const fromTokenAccount = (await Token.getAssociatedTokenAddress(
        TOKEN_PROGRAM_ID,
        tokenMintAddress,
        fromWallet,
    ));
    const toTokenAccount = (await Token.getAssociatedTokenAddress(
        TOKEN_PROGRAM_ID,
        tokenMintAddress,
        toWallet,
    ));

    const transaction = await Token.createTransferInstruction(
        TOKEN_PROGRAM_ID,
        fromTokenAccount,
        toTokenAccount,
        fromWallet,
        [],
        amount,
    );

    const signature = await connection.sendTransaction(transaction, [fromWallet]);
    console.log('Assinatura da transferência:', signature);
}

// Substitua estes por chaves de carteiras reais
const fromWallet = new PublicKey('SEU_ENDEREÇO_DE_CARTEIRA_ORIGEM');
const toWallet = new PublicKey('SEU_ENDEREÇO_DE_CARTEIRA_DESTINO');
const amount = 1; // Quantidade de tokens a enviar

sendTokens(fromWallet, toWallet, amount);

Conclusão

Nesta aula, demonstramos como interagir com programas Solana usando JavaScript, incluindo a conexão ao devnet da Solana, busca de saldos de tokens e envio de tokens. As bibliotecas @solana/web3.js e @solana/spl-token oferecem uma maneira poderosa e flexível de construir dApps na blockchain Solana.

Ao continuar aprendendo, explore recursos mais avançados, como criar seus próprios tokens, gerenciar contas e construir aplicações descentralizadas completas. Boa programação!

Did you like this article? Rate it from 1 to 5:

Thank you for voting!