NOVO: Helius adquire a Light Protocol
como criar uma transação na Solana
Blog/Desenvolvimento

Solana Dev 101 — Como criar uma transação na Solana

Engenheiro de Experiência do DesenvolvedorOwen Venter no XOwen Venter no LinkedIn
5 min de leitura

Introdução

GM! Neste artigo, veremos como criar e enviar uma transação com JavaScript na Solana como parte da série Solana Dev 101. Este guia é voltado para iniciantes, então não se preocupe se você ainda não conhece a Solana ou a tecnologia blockchain.

Se tiver alguma dúvida, entre no Discord da Helius ou marque a Helius no X para receber ajuda.‍

Pré-requisitos

Para começar, precisamos ter o Node.js e o npm instalados em nossa máquina. Se necessário, você pode baixá-los aqui.

Também precisaremos instalar a biblioteca web3.js da Solana, um conjunto de ferramentas e bibliotecas JavaScript criado para interagir com a blockchain da Solana.

Você pode instalá-la com o npm executando o seguinte código no terminal:

Código
npm install @solana/web3.js

‍Etapa 1: configurar a conexão

Primeiro, vamos criar uma conexão com o cluster da Solana. Usaremos a Helius para nos conectar a um cluster da devnet. Você precisará criar uma conta na Helius e uma chave de API, o que pode ser feito gratuitamente no seu painel.

Código
const solanaWeb3 = require('@solana/web3.js');
const connection = new solanaWeb3.Connection('<https://rpc-devnet.helius.xyz/?api-key=><api_key>','confirmed',);

Etapa 2: criar uma nova carteira

Agora precisamos de uma carteira para enviar transações. Uma carteira é apenas um par de chaves pública e privada, e pode ser criada facilmente. A chave pública é o endereço da sua carteira, enquanto a chave privada é usada para assinar transações. Você pode saber mais sobre criptografia de chave pública aqui.

Podemos criar uma nova carteira no sistema de arquivos, cujo par de chaves será armazenado na sua máquina local. Se você já instalou as ferramentas da Solana CLI, execute o seguinte comando no terminal para criar uma nova carteira.

Código
solana-keygen new

Caso ainda não tenha feito isso, será necessário instalar o conjunto de ferramentas da Solana CLI. Você encontra mais informações sobre como fazer isso na documentação da Solana: https://docs.solana.com/cli/install-solana-cli-tools

Em seguida, podemos importar essa carteira para o nosso código:

Código
const sender=solanaWeb3.Keypair.fromSecretKey(new Uint8Array([61,23,....,60,49]));

Você pode copiar a chave secreta da carteira no sistema de arquivos JSON criada na etapa anterior e usá-la.

Etapa 3: adicionar fundos à carteira

Para enviar transações, precisaremos ter um pouco de SOL em nossa carteira. Cada transação na Solana exige o pagamento de uma pequena taxa para ser processada.

Para fins de teste, usaremos nosso faucet da Devnet para adicionar fundos à carteira. Use o faucet da Helius no seu painel ou siga estas instruções para solicitar SOL da Devnet pela CLI. Insira a chave pública da carteira que você acabou de criar e solicite um pouco de SOL.

Etapa 4: criar uma transação

Agora que temos uma carteira com fundos, podemos criar uma transação. Neste exemplo, criaremos a transação e adicionaremos a ela uma instrução de transferência. Usaremos essa instrução para transferir 0,1 SOL para uma carteira de nossa escolha.

Uma transação pode executar diversas ações, dependendo da instrução fornecida. Neste exemplo, enviaremos SOL usando a instrução de transferência.

Código
// Set up the address to send to
const receiver = new solanaWeb3.PublicKey("86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY");

// Create a transaction    
const transaction = new solanaWeb3.Transaction().add(solanaWeb3.SystemProgram.transfer({
fromPubkey: sender.publicKey,toPubkey: receiver,
lamports: solanaWeb3.LAMPORTS_PER_SOL * 0.01,}),);

‍No código acima, criamos um novo objeto PublicKey com uma carteira de nossa escolha. O objeto PublicKey, em vez de apenas o endereço, é necessário para criar uma transação. A instrução de transferência também recebe três parâmetros:

  1. fromPubkey: a chave pública da conta do remetente.
  2. toPubkey: a chave pública da conta do destinatário.
  3. lamports: a quantidade de lamports (a menor unidade monetária da Solana) a ser transferida. solanaWeb3.LAMPORTS_PER_SOL representa 1 SOL.

Etapa 5: assinar e enviar a transação

Depois de criar a transação, precisaremos assiná-la e enviá-la para a rede.

A biblioteca Solana Web3 tem uma função chamada sendAndConfirmTransaction() que nos permite fazer tudo isso facilmente.

O método sendAndConfirmTransaction envia a transação para a rede, aguarda a confirmação e retorna uma assinatura para a transação.

Código
// Sign and confirm the transaction      
const signature = await solanaWeb3.sendAndConfirmTransaction(connection,transaction,[sender],);      
console.log('Transaction: ', signature);

O método sendAndConfrimTransaction recebe três parâmetros:

  1. connection: este é o objeto de conexão com a rede Solana que criamos usando uma conexão RPC da Helius. Esse parâmetro especifica a conexão pela qual a transação será enviada e confirmada.
  2. transaction: este é o objeto da transação que acabamos de criar e que contém a instrução de transferência.
  3. [sender]: este é um array que contém todas as contas signatárias da transação. Neste caso, ele contém um único elemento, sender, que representa a conta que assina e autoriza a transação.

E pronto!

Acabamos de criar e enviar uma transação na Solana usando JavaScript.

Você pode usar node sendTransaction.js para executar o script.

Conclusão

Criar e enviar uma transação na Solana com JavaScript é um processo simples graças à abrangente biblioteca JavaScript da Solana. Com apenas algumas linhas de código, podemos interagir com a blockchain da Solana, abrindo um mundo de possibilidades.

Este é um exemplo básico que destaca a estrutura e o fluxo de criação e envio de uma transação. Aplicações reais podem envolver transações mais complexas e exigir medidas de segurança adicionais.

Espero que este guia tenha sido útil. Bom código!

Você encontra o código completo aqui.

Recursos

‍

Assine a Helius

Acompanhe as novidades mais recentes do desenvolvimento Solana e receba atualizações quando publicarmos