Distribuzione del tuo primo programma Solana

In questa sezione, costruirai, distribuirai e testerai un semplice programma Solana (smart contract) utilizzando il framework Anchor. Alla fine, avrai distribuito il tuo primo programma sulla blockchain Solana.

Lo scopo di questa sezione è familiarizzare con Solana Playground. La guida illustra un esempio più dettagliato nelle sezioni Program Derived Address (PDA) e Cross-Program Invocation (CPI). Per maggiori dettagli, consulta la pagina Programmi su Solana.

Crea un progetto Anchor

Prima, apri https://beta.solpg.io in una nuova scheda del browser.

  • Clicca sul pulsante "Create a new project" nel pannello laterale sinistro.

  • Inserisci un nome per il progetto, seleziona Anchor come framework, quindi clicca sul pulsante "Create".

Nuovo progettoNuovo progetto

Vedrai un nuovo progetto creato con il codice del programma nel file lib.rs.

Questo programma Solana di base crea un nuovo account e memorizza un numero al suo interno. Il programma contiene un'istruzione (initialize) che:

  • Richiede un parametro data come input
  • Crea un nuovo account
  • Salva il valore del parametro data nei dati dell'account
  • Registra un messaggio nei log del programma della transazione
use anchor_lang::prelude::*;
declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");
#[program]
mod hello_anchor {
use super::*;
pub fn initialize(ctx: Context<Initialize>, data: u64) -> Result<()> {
let my_account = &mut ctx.accounts.my_account;
my_account.data = data;
msg!("Your data is: {}", data);
Ok(())
}
}
#[derive(Accounts)]
pub struct Initialize<'info> {
#[account(init, payer = user, space = 8 + 8)]
pub my_account: Account<'info, MyAccount>,
#[account(mut)]
pub user: Signer<'info>,
pub system_program: Program<'info, System>,
}
#[account]
pub struct MyAccount {
pub data: u64,
}

Compilare e distribuire il programma

Per compilare il programma, esegui semplicemente build nel terminale. Il comando build compila il programma. Il bytecode del programma viene quindi memorizzato in un account di programma eseguibile quando viene distribuito.

Terminal
$
build

Solana Playground aggiorna l'indirizzo in declare_id!(). Questo indirizzo rappresenta l'indirizzo on-chain del tuo programma (program ID).

Dopo aver compilato il programma, esegui deploy nel terminale per distribuire il programma sulla rete (devnet per impostazione predefinita). La distribuzione del programma richiede l'allocazione di SOL all'account on-chain che memorizza il programma.

Prima della distribuzione, assicurati di avere abbastanza SOL. Puoi ottenere SOL sulla devnet eseguendo solana airdrop 5 nel terminale di Playground oppure utilizzando il Web Faucet.

Terminal
$
deploy

Puoi anche utilizzare i pulsanti Build e Deploy nel pannello laterale sinistro.

Build and DeployBuild and Deploy

Dopo aver distribuito il programma, puoi chiamare le sue istruzioni.

Testare il programma

Il codice iniziale include un file di test situato in tests/anchor.test.ts. Questo file dimostra come invocare l'istruzione initialize sul programma dal client.

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));
});
});

Per eseguire il file di test dopo aver distribuito il programma, esegui test nel terminale.

Terminal
$
test

Cerca nell'output la conferma che il test sia stato superato con successo.

Puoi anche utilizzare il pulsante Test nel pannello laterale sinistro.

Run TestRun Test

Puoi quindi visualizzare i log delle transazioni eseguendo il comando solana confirm -v e specificando l'hash della transazione (firma) dall'output del test:

Terminal
$
solana confirm -v [TxHash]

Per esempio:

Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc

Puoi anche visualizzare i dettagli della transazione su SolanaFM o Solana Explorer cercando la firma della transazione (hash).

Ricordati di aggiornare la connessione al cluster (rete) sull'Explorer che utilizzi per farla corrispondere a Solana Playground. Solana Playground utilizza il cluster devnet per impostazione predefinita.

Chiudere il programma

Infine, chiudere il programma consente il recupero completo del SOL allocato al programma on-chain.

Puoi chiudere un programma eseguendo il seguente comando e specificando l'indirizzo del programma trovato in declare_id!():

Terminal
$
solana program close [ProgramID]

Per esempio:

Terminal
$
solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r

Congratulazioni. Hai appena creato e distribuito il tuo primo programma Solana utilizzando il framework Anchor.

Is this page helpful?

Indice

Modifica Pagina