Αναπτύξτε το πρώτο σας πρόγραμμα Solana
Δημιουργήστε, αναπτύξτε και δοκιμάστε το πρώτο σας πρόγραμμα στο Blockchain της Solana χρησιμοποιώντας το πλαίσιο Anchor. Αυτός ο οδηγός θα σας βοηθήσει να εξοικειωθείτε περισσότερο με το Solana Playground και να προετοιμαστείτε για τη χρήση Program Derived Address (PDA) και Cross Program Invocation (CPI).
Δημιουργία έργου Anchor
- Ανοίξτε το Solana Playground στο πρόγραμμα περιήγησής σας
- Στον αριστερό πίνακα, κάντε κλικ στο + Create a new project
- Εισαγάγετε ένα Project name
- Επιλέξτε Anchor (Rust) ως πλαίσιο
- Κάντε κλικ στο Create
Νέο Έργο
Το αρχείο πηγαίου κώδικα src/lib.rs
θα ανοίξει. Περιέχει μια δομή που
ονομάζεται Initialize
, η οποία κάνει τα εξής:
- Λαμβάνει μια απαιτούμενη παράμετρο που ονομάζεται
data: u64
- Δημιουργεί έναν νέο λογαριασμό
- Αποθηκεύει την τιμή του
data: u64
στον νέο λογαριασμό - Προσθέτει ένα μήνυμα στα αρχεία καταγραφής του προγράμματος της συναλλαγής
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}
Δημιουργία και ανάπτυξη του προγράμματος
- Μεταγλώττιση του κώδικα προγράμματος
$build
Το program ID σας, που ορίζεται
στο declare_id!()
, θα ενημερωθεί τώρα.
- Προσθήκη SOL στο πορτοφόλι σας (Προαιρετικό)
Η ανάπτυξη ενός προγράμματος απαιτεί SOL στον on-chain λογαριασμό του προγράμματος. Εάν είναι απαραίτητο, προσθέστε SOL στο πορτοφόλι σας πριν προχωρήσετε στο βήμα 3.
- Ανάπτυξη του προγράμματος στο δίκτυο
$deploy
Όταν αναπτυχθεί, ο bytecode του προγράμματος αποθηκεύεται σε έναν εκτελέσιμο program account.
Σημείωση: Εάν προτιμάτε, μπορείτε να χρησιμοποιήσετε τα κουμπιά 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
- Αποθηκεύστε το hash της συναλλαγής (
TxHash
) που περιλαμβάνεται στην έξοδο
(Στο παραπάνω παράδειγμα, το hash της συναλλαγής είναι
3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
.)
Σημείωση: Αν προτιμάτε, μπορείτε να χρησιμοποιήσετε το κουμπί Test
στον
αριστερό πίνακα.
Εκτέλεση Δοκιμής
- Εκτελέστε
solana confirm -v [TxHash]
για να δείτε τα αρχεία καταγραφής της συναλλαγής
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
- Προβολή των λεπτομερειών της συναλλαγής
Ανοίξτε είτε το SolanaFM είτε το Solana Explorer και αναζητήστε το hash της συναλλαγής.
Solana Explorer: Ορίστε το δίκτυο σε devnet
, ώστε να ταιριάζει με αυτό
του Solana Playground.
Κλείσιμο του προγράμματος
Κλείστε το πρόγραμμα για να ανακτήσετε το SOL που διατέθηκε στο πρόγραμμα
on-chain. Για να το κάνετε αυτό, εκτελέστε solana program close [ProgramID]
,
χρησιμοποιώντας τη διεύθυνση του προγράμματος που είναι αποθηκευμένη στη
μακροεντολή declare_id!()
.
$solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r
Τα προγράμματα μπορούν μόνο να κλείσουν ή να ενημερωθούν από έναν λογαριασμό με δικαιώματα αναβάθμισης. Το πορτοφόλι του Playground σας γίνεται αυτόματα η αρχή αναβάθμισης για κάθε πρόγραμμα όταν αυτό αναπτύσσεται. Αν τα δικαιώματα αναβάθμισης ανακληθούν, το πρόγραμμα γίνεται αμετάβλητο.
Συγχαρητήρια! Δημιουργήσατε και αναπτύξατε το πρώτο σας πρόγραμμα Solana χρησιμοποιώντας το Anchor.
Επόμενα βήματα
Τώρα που έχετε αναπτύξει το πρώτο σας πρόγραμμα, είστε έτοιμοι να εξερευνήσετε διευθύνσεις παραγόμενες από προγράμματα και διαπρογραμματική κλήση.
Is this page helpful?