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
- Abra o Solana Playground no seu navegador
- No painel esquerdo, clique em + Create a new project
- Digite um Project name
- Selecione Anchor (Rust) como framework
- Clique em Create
Novo 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
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
- Compile o código do programa
$build
Seu ID do programa, definido em
declare_id!()
, agora será atualizado.
- 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.
- Implante o programa na rede
$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 Deploy
Testar o programa
- Abra o arquivo de teste chamado
tests/anchor.test.ts
. Este arquivo demonstra como invocar a estruturainitialize
do 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));});});
- Execute o arquivo de teste
$test
- 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 Teste
- Execute
solana confirm -v [TxHash]
para visualizar os logs da transação
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
- 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!()
.
$solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r
Os programas só 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?