SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
16.11.2024

Aula 045: O Runtime e o Modelo de Execução do Solana

Solana é uma plataforma de blockchain de alto desempenho projetada para suportar aplicativos descentralizados e criptomoedas. Um dos principais diferenciais do Solana é seu modelo de runtime e execução exclusivo, que permite alcançar alta capacidade de processamento e baixa latência. Nesta aula, exploraremos os fundamentos do runtime e do modelo de execução do Solana, juntamente com alguns exemplos práticos de código.

Entendendo o Runtime do Solana

O runtime do Solana é responsável pela execução de contratos inteligentes conhecidos como "programas". O runtime fornece um conjunto de APIs que os programas podem usar para interagir com a blockchain e modificar estados de contas.

Principais Características do Runtime do Solana

  1. Execução em Thread Única: Ao contrário de outras blockchains que executam transações em paralelo ou em múltiplas threads, o Solana as executa de maneira sequencial, em uma única thread. Essa abordagem evita mecanismos de bloqueio complexos e simplifica a execução.

  2. Modelo de Conta: No Solana, informações e estados são armazenados em contas. Cada conta é identificada por uma chave pública e pode conter dados necessários para os programas. Os programas leem e escrevem nessas contas.

  3. Processamento de Transações: Quando uma transação é submetida, ela passa por uma série de etapas de validação e processamento de instruções antes de ser executada. Cada transação contém uma série de instruções que especificam quais ações realizar nas contas.

  4. Transações Pipelined: A arquitetura do Solana permite o pipelining, onde múltiplas etapas do processamento de transações podem ocorrer simultaneamente, resultando em maior capacidade de processamento.

Escrevendo um Programa Simples no Solana

Para ilustrar como o runtime opera, vamos escrever um programa simples que permite aos usuários armazenar e recuperar um valor.

Configuração do Ambiente

Antes de mergulhar no código, verifique se você tem as ferramentas necessárias instaladas:

  • Rust: A linguagem de programação usada para escrever programas do Solana.
  • Solana CLI: A interface de linha de comando para interagir com a rede do Solana.

Certifique-se de instalar as dependências e configurar seu ambiente de desenvolvimento conforme as diretrizes oficiais.

Programa Olá Mundo

Aqui está um exemplo simples de um programa "Olá Mundo" que permite aos usuários definir e obter uma mensagem de saudação.

1. Crie um novo projeto:

cargo new hello_sol
cd hello_sol

2. Atualize o Cargo.toml:

Adicione dependências do SDK do Solana atualizando seu arquivo Cargo.toml:

[dependencies]
solana-program = "1.10.0"

3. Escreva o programa:

No arquivo src/lib.rs, escreva o seguinte código:

use borsh::{BorshDeserialize, BorshSerialize};
use solana_program::{
    account_info::AccountInfo,
    entrypoint,
    entrypoint::ProgramResult,
    info,
    msg,
    pubkey::Pubkey,
    rent::Rent,
    system_instruction,
    program_pack::Pack,
};

#[derive(BorshSerialize, BorshDeserialize, Debug)]
pub struct Greeting {
    pub message: String,
}

entrypoint!(process_instruction);

fn process_instruction(
    program_id: &Pubkey,
    accounts: &[AccountInfo],
    instruction_data: &[u8],
) -> ProgramResult {
    let accounts_iter = &mut accounts.iter();
    let account = next_account_info(accounts_iter)?;

    if !account.is_writable {
        msg!("A conta deve ser gravável");
        return Err(ProgramError::InvalidAccountData);
    }

    let greeting: Greeting = Greeting::try_from_slice(instruction_data)?;

    // Armazena a mensagem de saudação nos dados da conta
    greeting.serialize(&mut &mut account.data.borrow_mut()[..])?;

    msg!("Saudação armazenada: {:?}", greeting.message);
    Ok(())
}

Explicação do Programa

  1. Estrutura de Dados: A estrutura Greeting é definida para manter a mensagem que será armazenada na conta.

  2. Ponto de Entrada: A função process_instruction serve como ponto de entrada para o programa. Ela processa as instruções recebidas.

  3. Manipulação de Contas: O programa garante que a conta é gravável antes de prosseguir para serializar a mensagem de saudação em seus dados.

  4. Serialização: O método serialize escreve a mensagem na conta, utilizando o formato de serialização Borsh.

Interagindo com o Programa

Para interagir com nosso programa, você precisará implantá-lo na blockchain do Solana e então escrever um cliente para enviar transações.

Implantando o Programa

  1. Compile o programa:
cargo build-bpf
  1. Implante-o no cluster Solana:
solana program deploy target/deploy/hello_sol.so

Copie o ID do programa da saída, pois você precisará dele para enviar transações.

Enviando Transações

Você pode usar o CLI do Solana para enviar uma transação com a mensagem de saudação.

solana program invoke <PROGRAM_ID> --data "<SUA_MENSAGEM>"

Conclusão

Nesta aula, exploramos o runtime e o modelo de execução do Solana, focando em como ele processa instruções e gerencia os estados das contas. Escrevemos um programa simples de saudação para demonstrar como interagir com o runtime do Solana. Compreender esses fundamentos é crucial enquanto você se aprofunda na construção de aplicativos mais complexos e ricos em recursos na blockchain do Solana.

Sinta-se à vontade para explorar mais e aprimorar seus programas adicionando mais funcionalidades, experimentando diferentes estruturas de conta, ou otimizando o desempenho com os recursos avançados do Solana. Boa codificação!

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

Thank you for voting!