SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
18.11.2024

Lição: 060: Aproveitando SDKs e Ferramentas do Solana

Nesta aula, iremos explorar vários SDKs e ferramentas disponíveis para desenvolver aplicações na blockchain Solana. Essas ferramentas simplificam o processo de desenvolvimento, permitindo que os desenvolvedores criem aplicações em blockchain rápidas e eficientes. Vamos abordar o Solana CLI, a biblioteca Solana Web3.js, o framework Anchor e como interagir com a blockchain Solana usando essas ferramentas.

Instalação das Ferramentas Necessárias

Antes de mergulhar nos exemplos, você precisa ter algumas ferramentas essenciais instaladas em sua máquina:

  1. Rust: Visite o site oficial do Rust e siga as instruções para instalar o Rust e o Cargo.

  2. Solana CLI: Instale a Interface de Linha de Comando (CLI) do Solana usando o seguinte comando:

    sh -c "$(curl -sSfL https://release.solana.com/v1.9.9/install)"

    Substitua v1.9.9 pela versão mais recente.

  3. Framework Anchor: O Anchor é um framework para Solana que simplifica o processo de escrita de contratos inteligentes (programas). Siga estas instruções para instalar o Anchor:

    cargo install --git https://github.com/project-serum/anchor anchor-cli --locked
  4. Node.js e npm: Se você planeja usar JavaScript ou TypeScript em seu dApp, certifique-se de ter o Node.js instalado. Você pode baixá-lo do site oficial.

  5. Instale a biblioteca Solana Web3.js:

    npm install @solana/web3.js

Criando um Novo Projeto Solana

Vamos começar criando um novo diretório para o nosso projeto.

mkdir meu-projeto-solana
cd meu-projeto-solana

Inicializando o Solana CLI

Antes de implantar qualquer programa, você precisa configurar seu Solana CLI. Você pode configurar uma carteira e explorar a rede de teste:

solana config set --url https://api.devnet.solana.com

Você pode criar uma nova carteira ou usar uma existente. Para criar uma nova carteira, execute:

solana-keygen new

Este comando gerará um novo arquivo de chave, que você deve manter em segurança, pois controla sua carteira.

Escrevendo um Programa Simples no Solana com Anchor

Crie um novo diretório para seu contrato inteligente e inicialize-o.

anchor init hello_solana

Isso cria um novo projeto Anchor com a estrutura básica. Entre no diretório do projeto:

cd hello_solana

Em seguida, abra programs/hello_solana/src/lib.rs e substitua o código dentro pelo seguinte:

use anchor_lang::prelude::*;

declare_id!("SeuProgramID");

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

    pub fn greet(ctx: Context<Greet>, message: String) -> ProgramResult {
        let greeting_account = &mut ctx.accounts.greeting;
        greeting_account.message = message;
        Ok(())
    }
}

#[derive(Accounts)]
pub struct Greet<'info> {
    #[account(init, payer = user, space = 8 + 32)]
    pub greeting: Account<'info, Greeting>,
    #[account(mut)]
    pub user: Signer<'info>,
    pub system_program: Program<'info, System>,
}

#[account]
pub struct Greeting {
    pub message: String,
}

Este programa básico nos permite armazenar uma mensagem de saudação na blockchain.

Compilando e Implantando Seu Programa

Agora, compile e implemente seu contrato na Devnet do Solana.

  1. Compile o projeto Anchor:

    anchor build
  2. Implemente o programa:

    anchor deploy

Anote o ID do Programa implantado que é impresso no terminal.

Interagindo com o Programa Usando JavaScript

Agora iremos criar uma aplicação JavaScript simples que interage com nosso contrato implantado usando a biblioteca Solana Web3.js. Volte ao diretório principal do seu projeto e crie um novo arquivo JavaScript.

touch index.js

Em seguida, escreveremos um código para interagir com nosso programa Solana. Abra index.js e adicione o seguinte código:

const anchor = require('@project-serum/anchor');
const { Connection, PublicKey, Keypair } = require('@solana/web3.js');

async function main() {
    // Conectar ao cluster
    const connection = new Connection('https://api.devnet.solana.com');

    // Carregar a carteira
    const wallet = Keypair.fromSecretKey(new Uint8Array(JSON.parse(process.env.SECRET_KEY)));

    // Definir o ID do programa
    const programId = new PublicKey('SeuProgramID');

    // Criar uma instância do programa
    const program = new anchor.Program(idl, programId, new anchor.Provider(connection, wallet, {}));

    // Criar uma nova conta para armazenar a saudação
    const greetingAccount = Keypair.generate();

    // Invocar a função greet
    await program.rpc.greet("Olá, Solana!", {
        accounts: {
            greeting: greetingAccount.publicKey,
            user: wallet.publicKey,
            systemProgram: anchor.web3.SystemProgram.programId,
        },
        signers: [greetingAccount],
    });

    console.log(`Saudação definida: Olá, Solana!`);
}

main().catch(err => {
    console.error(err);
});

Certifique-se de substituir 'SeuProgramID' pelo ID do Programa real que você obteve durante a implantação.

Executando o Código JavaScript

Antes de executar o código JavaScript, defina sua chave secreta em uma variável de ambiente. Você pode obter a chave secreta do arquivo de chave que foi criado anteriormente. Converta-a para o formato JSON e defina-a em seu ambiente:

export SECRET_KEY="[SUBSTITUA_COM_SUA_CHAVE_SECRETA]"

Agora execute o arquivo JavaScript:

node index.js

Você deve ver a saída no console confirmando que a saudação foi definida.

Conclusão

Nesta aula, exploramos os SDKs e ferramentas fundamentais disponíveis para desenvolver na blockchain Solana. Abordamos o uso do Solana CLI, do framework Anchor e da biblioteca Solana Web3.js para criar um programa simples "Olá, Solana!" que implantamos e interagimos. Essas ferramentas fornecem uma base poderosa para construir aplicações descentralizadas escaláveis no Solana.

Sinta-se à vontade para explorar mais sobre os recursos e capacidades dessas ferramentas para aprimorar suas habilidades de desenvolvimento no Solana!

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

Thank you for voting!