Αναπτύξτε το πρώτο σας πρόγραμμα Solana

Δημιουργήστε, αναπτύξτε και δοκιμάστε το πρώτο σας πρόγραμμα στο Blockchain της Solana χρησιμοποιώντας το πλαίσιο Anchor. Αυτός ο οδηγός θα σας βοηθήσει να εξοικειωθείτε περισσότερο με το Solana Playground και να προετοιμαστείτε για τη χρήση Program Derived Address (PDA) και Cross Program Invocation (CPI).

Δημιουργία έργου Anchor

  1. Ανοίξτε το Solana Playground στο πρόγραμμα περιήγησής σας
  2. Στον αριστερό πίνακα, κάντε κλικ στο + Create a new project
  3. Εισαγάγετε ένα Project name
  4. Επιλέξτε Anchor (Rust) ως πλαίσιο
  5. Κάντε κλικ στο Create

Νέο ΈργοΝέο Έργο

Το αρχείο πηγαίου κώδικα src/lib.rs θα ανοίξει. Περιέχει μια δομή που ονομάζεται Initialize, η οποία κάνει τα εξής:

  • Λαμβάνει μια απαιτούμενη παράμετρο που ονομάζεται data: u64
  • Δημιουργεί έναν νέο λογαριασμό
  • Αποθηκεύει την τιμή του data: u64 στον νέο λογαριασμό
  • Προσθέτει ένα μήνυμα στα αρχεία καταγραφής του προγράμματος της συναλλαγής
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
}

Δημιουργία και ανάπτυξη του προγράμματος

  1. Μεταγλώττιση του κώδικα προγράμματος
Terminal
$
build

Το program ID σας, που ορίζεται στο declare_id!(), θα ενημερωθεί τώρα.

  1. Προσθήκη SOL στο πορτοφόλι σας (Προαιρετικό)

Η ανάπτυξη ενός προγράμματος απαιτεί SOL στον on-chain λογαριασμό του προγράμματος. Εάν είναι απαραίτητο, προσθέστε SOL στο πορτοφόλι σας πριν προχωρήσετε στο βήμα 3.

  1. Ανάπτυξη του προγράμματος στο δίκτυο
Terminal
$
deploy

Όταν αναπτυχθεί, ο bytecode του προγράμματος αποθηκεύεται σε έναν εκτελέσιμο program account.

Σημείωση: Εάν προτιμάτε, μπορείτε να χρησιμοποιήσετε τα κουμπιά Build και Deploy στον αριστερό πίνακα, όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

Build and DeployBuild and Deploy

Δοκιμή του προγράμματος

  1. Ανοίξτε το αρχείο δοκιμής με όνομα tests/anchor.test.ts. Αυτό το αρχείο δείχνει πώς να καλέσετε τη δομή initialize του προγράμματος από τον πελάτη.
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. Εκτελέστε το αρχείο δοκιμής
Terminal
$
test
  1. Αποθηκεύστε το hash της συναλλαγής (TxHash) που περιλαμβάνεται στην έξοδο

(Στο παραπάνω παράδειγμα, το hash της συναλλαγής είναι 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc.)

Σημείωση: Αν προτιμάτε, μπορείτε να χρησιμοποιήσετε το κουμπί Test στον αριστερό πίνακα.

Εκτέλεση ΔοκιμήςΕκτέλεση Δοκιμής

  1. Εκτελέστε solana confirm -v [TxHash] για να δείτε τα αρχεία καταγραφής της συναλλαγής
Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
  1. Προβολή των λεπτομερειών της συναλλαγής

Ανοίξτε είτε το SolanaFM είτε το Solana Explorer και αναζητήστε το hash της συναλλαγής.

Solana Explorer: Ορίστε το δίκτυο σε devnet, ώστε να ταιριάζει με αυτό του Solana Playground.

Κλείσιμο του προγράμματος

Κλείστε το πρόγραμμα για να ανακτήσετε το SOL που διατέθηκε στο πρόγραμμα on-chain. Για να το κάνετε αυτό, εκτελέστε solana program close [ProgramID], χρησιμοποιώντας τη διεύθυνση του προγράμματος που είναι αποθηκευμένη στη μακροεντολή declare_id!().

Terminal
$
solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r

Τα προγράμματα μπορούν μόνο να κλείσουν ή να ενημερωθούν από έναν λογαριασμό με δικαιώματα αναβάθμισης. Το πορτοφόλι του Playground σας γίνεται αυτόματα η αρχή αναβάθμισης για κάθε πρόγραμμα όταν αυτό αναπτύσσεται. Αν τα δικαιώματα αναβάθμισης ανακληθούν, το πρόγραμμα γίνεται αμετάβλητο.

Συγχαρητήρια! Δημιουργήσατε και αναπτύξατε το πρώτο σας πρόγραμμα Solana χρησιμοποιώντας το Anchor.

Επόμενα βήματα

Τώρα που έχετε αναπτύξει το πρώτο σας πρόγραμμα, είστε έτοιμοι να εξερευνήσετε διευθύνσεις παραγόμενες από προγράμματα και διαπρογραμματική κλήση.

Is this page helpful?

Πίνακας Περιεχομένων

Επεξεργασία Σελίδας