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

  1. Öffnen Sie den Solana Playground in Ihrem Webbrowser
  2. Klicken Sie im linken Bereich auf + Create a new project
  3. Geben Sie einen Projektnamen ein
  4. Wählen Sie Anchor (Rust) als Framework
  5. Klicken Sie auf Create

Neues ProjektNeues 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
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
}

Programm erstellen und bereitstellen

  1. Kompiliere den Programmcode
Terminal
$
build

Deine Programm-ID, definiert in declare_id!(), wird jetzt aktualisiert.

  1. 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.

  1. Stelle das Programm im Netzwerk bereit
Terminal
$
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 DeployBuild und Deploy

Programm testen

  1. Öffne die Testdatei mit dem Namen tests/anchor.test.ts. Diese Datei zeigt, wie man die initialize Struktur des Programms vom Client aus aufruft.
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. Führe die Testdatei aus
Terminal
$
test
  1. 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ührenTest ausführen

  1. Führe solana confirm -v [TxHash] aus, um die Transaktionslogs anzuzeigen
Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
  1. 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.

Terminal
$
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?

Inhaltsverzeichnis

Seite bearbeiten