SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
13.11.2024

Lição: 017: Escrevendo Seu Primeiro Programa Solana em Rust

Nesta aula, vamos percorrer os passos para criar seu primeiro programa Solana usando Rust. Ao final deste tutorial, você terá um programa simples de contador que permite incrementar um contador armazenado na blockchain Solana.

Pré-requisitos

Antes de começarmos, certifique-se de ter o seguinte instalado em sua máquina:

  • Rust e Cargo: Siga o guia de instalação oficial do Rust.
  • Solana CLI: Você pode instalá-lo seguindo as instruções do guia de instalação do Solana CLI.
  • Anchor CLI (opcional, mas recomendado): Não abordaremos isso em detalhes, mas a instalação do Anchor pode simplificar o desenvolvimento em Solana. Você pode instalá-lo usando:

    cargo install --git https://github.com/project-serum/anchor anchor-cli --locked

Criando um Novo Programa Solana

Passo 1: Configure Seu Projeto

Primeiro, crie um novo diretório para seu projeto e navegue até ele:

mkdir meu_programa_solana
cd meu_programa_solana

Agora, criaremos um novo projeto de biblioteca Rust:

cargo new --lib contador
cd contador

Passo 2: Atualize o Cargo.toml

Abra o arquivo Cargo.toml e adicione as seguintes dependências:

[dependencies]
solana-program = "1.10.32"  # Use a versão mais recente

Isso informará ao Cargo para incluir a biblioteca Solana Program, que fornece a funcionalidade necessária para construir aplicações Solana.

Passo 3: Escreva a Lógica do Programa

Agora vamos escrever a lógica do programa. Abra o arquivo src/lib.rs e atualize-o da seguinte forma:

use anchor_lang::prelude::*;
use solana_program::{pubkey::Pubkey, msg};

declare_id!("SeuProgramID"); // substitua pelo seu ID de programa real

#[program]
pub mod contador {
    use super::*;

    pub fn inicializar(ctx: Context<Inicializar>) -> ProgramResult {
        let conta_contador = &mut ctx.accounts.conta_contador;
        conta_contador.contagem = 0;
        msg!("Contador inicializado em 0.");
        Ok(())
    }

    pub fn incrementar(ctx: Context<Incrementar>) -> ProgramResult {
        let conta_contador = &mut ctx.accounts.conta_contador;
        conta_contador.contagem += 1;
        msg!("Contador incrementado para {}.", conta_contador.contagem);
        Ok(())
    }
}

#[account]
pub struct ContaContador {
    pub contagem: u64,
}

#[derive(Accounts)]
pub struct Inicializar<'info> {
    #[account(init, payer = usuario, space = 8 + std::mem::size_of::<ContaContador>())]
    pub conta_contador: Account<'info, ContaContador>,
    #[account(mut)]
    pub usuario: Signer<'info>,
    pub system_program: Program<'info, System>,
}

#[derive(Accounts)]
pub struct Incrementar<'info> {
    #[account(mut)]
    pub conta_contador: Account<'info, ContaContador>,
}

Passo 4: Compilar o Programa

Agora que definimos o programa, é hora de compilá-lo:

cargo build-bpf

Este comando compila seu programa para o formato Berkeley Packet Filter (BPF), que pode ser executado na Solana.

Passo 5: Implantar o Programa

Para implantar seu programa, use o Solana CLI. Primeiro, certifique-se de que você tem um validador local em execução (se estiver testando localmente). Você pode iniciar um validador local com:

solana-test-validator

Em outro terminal, implante o programa no cluster local:

solana program deploy target/deploy/contador.so

Certifique-se de substituir "contador.so" pelo caminho correto, se necessário. Anote o ID do Programa exibido após a implantação bem-sucedida; você o usará para interagir com seu programa.

Passo 6: Interagindo com o Programa

Para interagir com seu programa, você pode usar os comandos do Solana CLI. Por exemplo, para inicializar o contador:

  1. Crie um novo par de chaves (se você não tiver um):

    solana-keygen new --outfile meu-pares-de-chaves.json
  2. Inicialize o contador:

    solana program invoke SeuProgramID MeuNomeDeConta -- --inicializar
  3. Para incrementar o contador:

    solana program invoke SeuProgramID MeuNomeDeConta -- --incrementar

Verificação

Você pode verificar o valor do contador armazenado na blockchain usando:

solana account MeuNomeDeConta

Isso mostrará os dados associados à conta, incluindo o valor do contador.

Conclusão

Parabéns! Você escreveu e implantou seu primeiro programa Solana em Rust. Você aprendeu como criar um programa simples de contador que pode ser inicializado e incrementado. A partir daqui, você pode aprimorar seu programa adicionando recursos adicionais ou explorando funcionalidades mais complexas na Solana.

Continue experimentando com diferentes conceitos e boas codificações!

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

Thank you for voting!