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:
-
Rust: Visite o site oficial do Rust e siga as instruções para instalar o Rust e o Cargo.
-
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. -
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
-
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.
-
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.
-
Compile o projeto Anchor:
anchor build
-
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!