Implantando Seu Primeiro Programa Solana
Nesta seção, você vai construir, implantar e testar um programa Solana simples (smart contract) usando o framework Anchor. Ao final, você terá implantado seu primeiro programa na blockchain Solana.
O objetivo desta seção é familiarizá-lo com o Solana Playground. O guia percorre um exemplo mais detalhado nas seções de Program Derived Address (PDA) e Cross-Program Invocation (CPI). Para mais detalhes, consulte a página Programas na Solana.
Criar Projeto Anchor
Primeiro, abra https://beta.solpg.io em uma nova aba do navegador.
-
Clique no botão "Create a new project" no painel do lado esquerdo.
-
Digite um nome para o projeto, selecione Anchor como framework e clique no botão "Create".
Novo Projeto
Você verá um novo projeto criado com o código do programa no arquivo
src/lib.rs
.
Este programa Solana básico cria uma nova conta e armazena um número nela. O
programa contém uma instrução (initialize
) que:
- Requer um parâmetro
data: u64
como entrada - Cria uma nova conta
- Salva o valor do parâmetro
data: u64
nos dados da conta - Registra uma mensagem nos logs do programa da transação
use anchor_lang::prelude::*;// This is your program's public key and it will update// automatically when you build the project.declare_id!("11111111111111111111111111111111");#[program]mod hello_anchor {use super::*;pub fn initialize(ctx: Context<Initialize>, data: u64) -> Result<()> {ctx.accounts.new_account.data = data;msg!("Changed data to: {}!", data); // Message will show up in the tx logsOk(())}}#[derive(Accounts)]pub struct Initialize<'info> {// We must specify the space in order to initialize an account.// First 8 bytes are default account discriminator,// next 8 bytes come from NewAccount.data being type u64.// (u64 = 64 bits unsigned integer = 8 bytes)#[account(init,payer = signer,space = 8 + 8)]pub new_account: Account<'info, NewAccount>,#[account(mut)]pub signer: Signer<'info>,pub system_program: Program<'info, System>,}#[account]pub struct NewAccount {data: u64}
Compilar e implantar o programa
Para compilar o programa, simplesmente execute build
no terminal. O comando
build
compila o programa. O bytecode do programa é então armazenado em uma
conta de programa executável quando implantado.
$build
O Solana Playground atualiza o endereço em declare_id!()
. Este endereço
representa o endereço on-chain do seu programa (ID do programa).
Após compilar o programa, execute deploy
no terminal para implantar o
programa na rede (devnet por padrão). A implantação do programa requer alocar
SOL para a conta on-chain que armazena o programa.
Antes da implantação, certifique-se de ter SOL suficiente. Você pode obter SOL
na devnet executando solana airdrop 5
no terminal do Playground ou
usando o Web Faucet.
$deploy
Você também pode usar os botões Build
e Deploy
no painel lateral esquerdo.
Compilar e Implantar
Após implantar o programa, você pode chamar suas instruções.
Testar o programa
O código inicial inclui um arquivo de teste localizado em
tests/anchor.test.ts
. Este arquivo demonstra como invocar a instrução
initialize
no programa a partir do cliente.
// No imports needed: web3, anchor, pg and more are globally availabledescribe("Test", () => {it("initialize", async () => {// Generate keypair for the new accountconst newAccountKp = new web3.Keypair();// Send transactionconst data = new BN(42);const txHash = await pg.program.methods.initialize(data).accounts({newAccount: newAccountKp.publicKey,signer: pg.wallet.publicKey,systemProgram: web3.SystemProgram.programId}).signers([newAccountKp]).rpc();console.log(`Use 'solana confirm -v ${txHash}' to see the logs`);// Confirm transactionawait pg.connection.confirmTransaction(txHash);// Fetch the created accountconst newAccount = await pg.program.account.newAccount.fetch(newAccountKp.publicKey);console.log("On-chain data is:", newAccount.data.toString());// Check whether the data on-chain is equal to local 'data'assert(data.eq(newAccount.data));});});
Para executar o arquivo de teste após implantar o programa, execute
test
no terminal.
$test
Procure por uma saída que confirme que o teste foi aprovado com sucesso.
Você também pode usar o botão Test
no painel lateral esquerdo.
Executar Teste
Você pode então visualizar os logs da transação executando o comando
solana confirm -v
e especificando o hash da transação (assinatura) da saída do
teste:
$solana confirm -v [TxHash]
Por exemplo:
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
Você também pode visualizar os detalhes da transação no SolanaFM ou Solana Explorer pesquisando pela assinatura da transação (hash).
Lembre-se de atualizar a conexão do cluster (rede) no Explorer que você usa para corresponder ao Solana Playground. O Solana Playground usa o cluster devnet por padrão.
Fechar o programa
Por fim, fechar o programa permite a recuperação total do SOL alocado ao programa na blockchain.
Você pode fechar um programa executando o seguinte comando e especificando o
endereço do programa encontrado em declare_id!()
:
$solana program close [ProgramID]
Por exemplo:
$solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r
Parabéns. Você acabou de construir e implantar seu primeiro programa Solana usando o framework Anchor.
Is this page helpful?