Stellen Sie Ihr erstes Solana-Programm bereit
Erstellen, stellen Sie bereit und testen Sie Ihr erstes Programm auf der Solana Blockchain mit dem Anchor-Framework. Diese Anleitung hilft Ihnen, sich mit dem Solana Playground vertraut zu machen und bereitet Sie auf die Verwendung von Program Derived Address (PDA) und Cross Program Invocation (CPI) vor.
Anchor-Projekt erstellen
- Öffnen Sie den Solana Playground in Ihrem Webbrowser
- Klicken Sie im linken Bereich auf + Create a new project
- Geben Sie einen Projektnamen ein
- Wählen Sie Anchor (Rust) als Framework
- Klicken Sie auf Create
Neues Projekt
Die src/lib.rs
Quelldatei wird geöffnet. Sie enthält eine Struktur namens
Initialize
, die Folgendes tut:
- Empfängt einen erforderlichen Parameter namens
data: u64
- Erstellt ein neues Konto
- Speichert den Wert von
data: u64
im neuen Konto - Fügt eine Nachricht zu den Programmlogs der Transaktion hinzu
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}
Programm erstellen und bereitstellen
- Kompiliere den Programmcode
$build
Deine Programm-ID, definiert in
declare_id!()
, wird jetzt aktualisiert.
- SOL zu deinem Wallet hinzufügen (Optional)
Die Bereitstellung eines Programms erfordert SOL im On-Chain-Konto des Programms. Falls nötig, füge SOL zu deinem Wallet hinzu, bevor du mit Schritt 3 fortfährst.
- Stelle das Programm im Netzwerk bereit
$deploy
Bei der Bereitstellung wird der Bytecode des Programms in einem ausführbaren program account gespeichert.
Hinweis: Falls bevorzugt, kannst du auch die Schaltflächen Build und Deploy im linken Seitenbereich verwenden, wie im Screenshot unten gezeigt.
Build und Deploy
Programm testen
- Öffne die Testdatei mit dem Namen
tests/anchor.test.ts
. Diese Datei zeigt, wie man dieinitialize
Struktur des Programms vom Client aus aufruft.
// 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));});});
- Führe die Testdatei aus
$test
- Speichere den Transaktions-Hash (
TxHash
), der in der Ausgabe enthalten ist
(Im obigen Beispiel ist der Transaktions-Hash
3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
.)
Hinweis: Bei Bedarf kannst du auch die Schaltfläche Test
im linken
Seitenbereich verwenden.
Test ausführen
- Führe
solana confirm -v [TxHash]
aus, um die Transaktionslogs anzuzeigen
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
- Transaktionsdetails anzeigen
Öffne entweder SolanaFM oder Solana Explorer und suche nach dem Transaktions-Hash.
Solana Explorer: Stelle den Netzwerk-Cluster auf devnet
ein, damit er
mit dem des Solana Playground übereinstimmt.
Programm schließen
Schließe das Programm, um die SOL zurückzugewinnen, die dem On-Chain-Programm
zugewiesen wurden. Führe dazu solana program close [ProgramID]
aus und
verwende die Programmadresse, die im declare_id!()
Makro gespeichert ist.
$solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r
Programme können nur von einem Konto mit Upgrade-Authority geschlossen oder aktualisiert werden. Deine Playground-Wallet wird automatisch zur Upgrade-Authority für jedes Programm, wenn es bereitgestellt wird. Wenn die Upgrade-Authority widerrufen wird, wird das Programm unveränderlich.
Herzlichen Glückwunsch! Du hast dein erstes Solana-Programm mit Anchor erstellt und bereitgestellt.
Nächste Schritte
Nachdem du dein erstes Programm bereitgestellt hast, bist du bereit, programmabgeleitete Adressen und programmübergreifende Aufrufe zu erkunden.
Is this page helpful?