Implante seu primeiro programa Solana

Construa, implante e teste seu primeiro programa na blockchain Solana usando o framework Anchor. Este guia ajudará você a se familiarizar com o Solana Playground e prepará-lo para usar endereços derivados de programa (PDA) e invocação entre programas (CPI).

Criar projeto Anchor

  1. Abra o Solana Playground no seu navegador
  2. No painel esquerdo, clique em + Create a new project
  3. Digite um Project name
  4. Selecione Anchor (Rust) como framework
  5. Clique em Create

Novo ProjetoNovo Projeto

O arquivo fonte src/lib.rs será aberto. Ele contém uma struct chamada Initialize, que faz o seguinte:

  • Recebe um parâmetro obrigatório chamado data: u64
  • Cria uma nova conta
  • Salva o valor de data: u64 na nova conta
  • Adiciona uma mensagem aos logs do programa na transação
lib.rs
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 logs
Ok(())
}
}
#[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

  1. Compile o código do programa
Terminal
$
build

Seu ID do programa, definido em declare_id!(), agora será atualizado.

  1. Adicione SOL à sua carteira (Opcional)

A implantação de um programa requer SOL na conta on-chain do programa. Se necessário, adicione SOL à sua carteira antes de prosseguir para o passo 3.

  1. Implante o programa na rede
Terminal
$
deploy

Quando implantado, o bytecode do programa é armazenado em uma conta de programa executável.

Nota: Se preferir, você pode usar os botões Build e Deploy no painel do lado esquerdo, como mostrado na captura de tela abaixo.

Build e DeployBuild e Deploy

Testar o programa

  1. Abra o arquivo de teste chamado tests/anchor.test.ts. Este arquivo demonstra como invocar a estrutura initialize do programa a partir do cliente.
anchor.test.ts
// No imports needed: web3, anchor, pg and more are globally available
describe("Test", () => {
it("initialize", async () => {
// Generate keypair for the new account
const newAccountKp = new web3.Keypair();
// Send transaction
const 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 transaction
await pg.connection.confirmTransaction(txHash);
// Fetch the created account
const 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));
});
});
  1. Execute o arquivo de teste
Terminal
$
test
  1. Armazene o hash da transação (TxHash) incluído na saída

(No exemplo acima, o hash da transação é 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc.)

Nota: Se preferir, você pode usar o botão Test no painel lateral esquerdo.

Executar TesteExecutar Teste

  1. Execute solana confirm -v [TxHash] para visualizar os logs da transação
Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
  1. Visualize os detalhes da transação

Abra o SolanaFM ou o Solana Explorer e pesquise pelo hash da transação.

Solana Explorer: Configure o cluster de rede para devnet, para corresponder ao do Solana Playground.

Fechar o programa

Feche o programa para recuperar o SOL alocado ao programa na cadeia. Para fazer isso, execute solana program close [ProgramID], usando o endereço do programa armazenado na macro declare_id!().

Terminal
$
solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r

Os programas podem ser fechados ou atualizados por uma conta com autoridade de atualização. Sua carteira do Playground automaticamente se torna a autoridade de atualização para cada programa quando ele é implantado. Se a autoridade de atualização for revogada, o programa se torna imutável.

Parabéns! Você construiu e implantou seu primeiro programa Solana usando Anchor.

Próximos passos

Agora que você implantou seu primeiro programa, está pronto para explorar endereços derivados de programa e invocação entre programas.

Is this page helpful?

Índice

Editar Página