Ανάπτυξη του πρώτου σας προγράμματος Solana
Σε αυτήν την ενότητα, θα δημιουργήσετε, θα αναπτύξετε και θα δοκιμάσετε ένα απλό πρόγραμμα Solana (έξυπνο συμβόλαιο) χρησιμοποιώντας το πλαίσιο Anchor. Μέχρι το τέλος, θα έχετε αναπτύξει το πρώτο σας πρόγραμμα στο blockchain του Solana.
Ο σκοπός αυτής της ενότητας επικεντρώνεται στην εξοικείωσή σας με το Solana Playground. Ο οδηγός παρουσιάζει ένα πιο λεπτομερές παράδειγμα στις ενότητες Program Derived Address (PDA) και Cross Program Invocation (CPI). Για περισσότερες λεπτομέρειες, ανατρέξτε στη σελίδα Προγράμματα στο Solana.
Δημιουργία έργου Anchor
Πρώτα, ανοίξτε το https://beta.solpg.io σε μια νέα καρτέλα του προγράμματος περιήγησης.
-
Κάντε κλικ στο κουμπί "Create a new project" στον αριστερό πίνακα.
-
Εισαγάγετε ένα όνομα έργου, επιλέξτε το Anchor ως πλαίσιο και στη συνέχεια κάντε κλικ στο κουμπί "Create".
Νέο Έργο
Θα δείτε ένα νέο έργο που δημιουργήθηκε με τον κώδικα του προγράμματος στο
αρχείο lib.rs
.
Αυτό το βασικό πρόγραμμα Solana δημιουργεί έναν νέο λογαριασμό και αποθηκεύει
έναν αριθμό σε αυτόν. Το πρόγραμμα περιέχει μία εντολή (initialize
) η οποία:
- Απαιτεί μια παράμετρο
data
ως είσοδο - Δημιουργεί έναν νέο λογαριασμό
- Αποθηκεύει την τιμή της παραμέτρου
data
στα δεδομένα του λογαριασμού - Καταγράφει ένα μήνυμα στα αρχεία καταγραφής του προγράμματος της συναλλαγής
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!("My account data: {}", my_account.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,}
Δημιουργία και ανάπτυξη προγράμματος
Για να δημιουργήσετε το πρόγραμμα, απλά εκτελέστε build
στο τερματικό. Η
εντολή build
μεταγλωττίζει το πρόγραμμα. Ο δυαδικός κώδικας του προγράμματος
αποθηκεύεται στη συνέχεια σε έναν εκτελέσιμο λογαριασμό προγράμματος κατά την
ανάπτυξη.
$build
Το Solana Playground ενημερώνει τη διεύθυνση στο declare_id!()
. Αυτή η
διεύθυνση αντιπροσωπεύει τη διεύθυνση του προγράμματός σας στο blockchain
(αναγνωριστικό προγράμματος).
Μετά την κατασκευή του προγράμματος, εκτελέστε deploy
στο τερματικό για
να αναπτύξετε το πρόγραμμα στο δίκτυο (devnet από προεπιλογή). Η ανάπτυξη του
προγράμματος απαιτεί την κατανομή SOL στον λογαριασμό on-chain που αποθηκεύει το
πρόγραμμα.
Πριν την ανάπτυξη, βεβαιωθείτε ότι έχετε αρκετό SOL. Μπορείτε να αποκτήσετε
devnet SOL είτε εκτελώντας solana airdrop 5
στο τερματικό του
Playground είτε χρησιμοποιώντας το Web Faucet.
$deploy
Μπορείτε επίσης να χρησιμοποιήσετε τα κουμπιά Build
και Deploy
στον αριστερό
πίνακα.
Build and Deploy
Μετά την ανάπτυξη του προγράμματος, μπορείτε να καλέσετε τις οδηγίες του.
Δοκιμή προγράμματος
Ο αρχικός κώδικας περιλαμβάνει ένα αρχείο δοκιμής που βρίσκεται στο
tests/anchor.test.ts
. Αυτό το αρχείο δείχνει πώς να επικαλεστείτε την οδηγία
initialize
στο πρόγραμμα από τον πελάτη.
// 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));});});
Για να εκτελέσετε το αρχείο δοκιμής μετά την ανάπτυξη του προγράμματος,
εκτελέστε test
στο τερματικό.
$test
Αναζητήστε έξοδο που επιβεβαιώνει ότι η δοκιμή πέρασε με επιτυχία.
Μπορείτε επίσης να χρησιμοποιήσετε το κουμπί Test
στον αριστερό πίνακα.
Run Test
Στη συνέχεια, μπορείτε να δείτε τα αρχεία καταγραφής συναλλαγών εκτελώντας την
εντολή solana confirm -v
και καθορίζοντας το hash συναλλαγής (υπογραφή) από
την έξοδο της δοκιμής:
$solana confirm -v [TxHash]
Για παράδειγμα:
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
Μπορείτε επίσης να δείτε τις λεπτομέρειες της συναλλαγής στο SolanaFM ή στο Solana Explorer αναζητώντας την υπογραφή συναλλαγής (hash).
Θυμηθείτε να ενημερώσετε τη σύνδεση cluster (δικτύου) στον Explorer που χρησιμοποιείτε για να ταιριάζει με το Solana Playground. Το Solana Playground χρησιμοποιεί από προεπιλογή το devnet cluster.
Κλείσιμο προγράμματος
Τέλος, το κλείσιμο του προγράμματος επιτρέπει την πλήρη ανάκτηση του SOL που έχει διατεθεί στο πρόγραμμα στο blockchain.
Μπορείτε να κλείσετε ένα πρόγραμμα εκτελώντας την ακόλουθη εντολή και
καθορίζοντας τη διεύθυνση του προγράμματος που βρίσκεται στο
declare_id!()
:
$solana program close [ProgramID]
Για παράδειγμα:
$solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r
Συγχαρητήρια. Μόλις δημιουργήσατε και αναπτύξατε το πρώτο σας πρόγραμμα Solana χρησιμοποιώντας το πλαίσιο Anchor.
Is this page helpful?