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!