Zum Hauptinhalt springen

So schreiben Sie Ihr erstes Anchor-Programm in Solana – Teil 1

Aktualisiert am
26. November 2025

6 Minuten Lesezeit

Übersicht

Programme werden bei Solana als „Smart Contracts“ bezeichnet – sie sind der Motor, der Informationen und Anfragen verarbeitet: von Token-Transfers und der Prägung von „Candy Machine“-Token bis hin zu „Hello World“-Protokollen und der Governance von DeFi-Treuhandkonten. Solana unterstützt die Entwicklung von On-Chain-Programmen mit den Programmiersprachen Rust, C und C++. Anchor ist ein Framework, das die Entwicklung sicherer Rust-Programme auf Solana beschleunigt. Lassen Sie uns Ihr erstes Solana-Programm mit Anchor erstellen!

Ihre Aufgaben

In dieser zweiteiligen Anleitung erstellen Sie Ihr erstes Solana-Programm mithilfe von Anchor und Solana Playground, einem webbasierten Tool zum Kompilieren und Bereitstellen von Solana-Programmen. Sie werden:

  • Ein neues Solana-Programm starten
  • Ein neues Programm im Devnet von Solana bereitstellen
  • Eine „Hello World“-Nachricht erstellen und versenden
  • Implementiere eine Inkrementierungsfunktion, um zu erfassen, wie oft dein Programm bereits verwendet wurde (Teil 2)

Was Sie benötigen

Starten Sie Ihr Projekt

Erstellen Sie ein neues Projekt in Solana Playground, indem Sie die Seite https://beta.solpg.io/ aufrufen. Solana Playground ist ein browserbasierter Solana-Code-Editor, mit dem wir schnell mit diesem Projekt loslegen können. Sie können die Schritte gerne in Ihrem eigenen Code-Editor nachverfolgen, aber diese Anleitung ist auf die erforderlichen Schritte in Solana Playground zugeschnitten. Klicken Sie zunächst auf „Create a new project“ (Neues Projekt erstellen):

Geben Sie den Projektnamen „Hello World“ ein und wählen Sie „Anchor (Rust)“ aus:

Klicken Sie auf die Schaltfläche „Erstellen“. Solana Playground startet Ihr Projekt. Öffnen Sie die Datei „lib.rs“ und entfernen Sie den Standardtext ab Zeile 7, nach der Anweisung „declare_id! “. Ihre Umgebung sollte nun wie folgt aussehen:

Eine Wallet erstellen und verbinden

Da dieses Projekt nur zu Demonstrationszwecken dient, können wir eine „Einweg“-Wallet verwenden. Mit Solana Playground lässt sich eine solche ganz einfach erstellen. In der unteren linken Ecke des Browserfensters sollte ein roter Punkt mit der Aufschrift „Not connected“ zu sehen sein. Klicken Sie darauf:

Solana Playground erstellt eine Wallet für Sie (oder Sie können Ihre eigene importieren). Sie können diese gerne für die spätere Verwendung speichern, wenn Sie möchten, und auf „Weiter“ klicken, sobald Sie bereit sind. Eine neue Wallet wird erstellt und mit dem Solana-Devnet verbunden. Solana Playground überträgt automatisch etwas SOL in Ihre neue Wallet, wir werden jedoch eine kleine zusätzliche Menge anfordern, um sicherzustellen, dass wir genug für die Bereitstellung unseres Programms haben. Im Browser-Terminal können Sie Solana-CLI-Befehle verwenden. Geben Sie „solana airdrop 2“ ein, um 2 SOL in Ihre Wallet zu übertragen. Ihre Wallet sollte nun mit dem Devnet verbunden sein und ein Guthaben von 6 SOL aufweisen:

Du bist startklar! Los geht’s!

Hallo Welt

Erstellen Sie Ihr Programm

Öffnen Sie die Datei „lib.rs“ (die Basisbibliothek für alle Rust-Programme auf der Solana-Blockchain). Wir haben zwei Codezeilen aus unserer Vorlage beibehalten:

  1. use anchor_lang::prelude::*; importiert die wichtigsten Funktionen von anchor.
  2. declare_id!("11111111111111111111111111111111"); legt den öffentlichen Schlüssel Ihres Programms fest. Der Standardwert, eine Zeichenkette aus Einsen, wird beim Kompilieren unseres Programms überschrieben.

Erstellen Sie im folgenden Abschnitt Ihr „hello_world“-Programm mithilfe des Moduls #[program] (hier wird unsere gesamte Logik untergebracht):

#[program]
mod hello_world {
use super::*;

}

Wir definieren ein neues Modul namens „hello_world“ unter Verwendung des Moduls „program“ und nutzen „super“, um Elemente des übergeordneten Moduls („program“) verwenden zu können.

Erstellen Sie nach Ihrem „hello_world“-Modul eine neue Struktur namens „SayHello“ mit #[derive(Accounts)]. Für diese anfängliche Struktur müssen keine Konten übergeben werden, da wir lediglich eine Meldung protokollieren werden:

#[ableiten(Konten)]
pub struct SayHello {}

Zuletzt benötigen wir in unserem Programm eine Funktion, die wir von unserem Frontend aus aufrufen können. Deklarieren Sie innerhalb von „hello_world“ nach „use super“ eine Funktion namens „say_hello“:

    pub fn say_hello(_ctx: Context<SayHello>) -> Result<()> {
msg!("Hello World!"); // Message will show up in the tx logs
Ok(())
}

Diese Funktion protokolliert mithilfe von `msg!` eine Meldung in den Solana-Programmprotokollen und gibt durch den Aufruf von `Ok(())` einen Erfolgswert zurück. Ihr „Hello World“-Programm sollte wie folgt aussehen:

use anchor_lang::prelude::*;

declare_id!("11111111111111111111111111111111");

#[program]
mod hello_world {
use super::*;
pub fn say_hello(_ctx: Context<SayHello>) -> Result<()> {
msg!("Hello World!");
Ok(())
}
}

#[derive(Accounts)]
pub struct SayHello {}

Kompilieren und Bereitstellen Ihres Programms

Klicken Sie auf 🔧 „Build“ auf der linken Seite Ihres Bildschirms, um Ihren Code zu kompilieren und auf Fehler zu überprüfen. In Ihrer Konsole sollte nun ein Protokoll wie das folgende angezeigt werden:

Sie sollten feststellen, dass Ihre ` declare_id! ` nun über einen öffentlichen Schlüssel verfügt – das ist der Schlüssel, der für Ihr Programm verwendet wird.

Zum Schluss stellen wir es auf Devnet bereit. Klicken Sie auf das Symbol „Tools“ 🛠 auf der linken Seite und anschließend auf „Bereitstellen“:

Das wird wahrscheinlich ein oder zwei Minuten dauern, aber sobald der Vorgang abgeschlossen ist, sollte in Ihrem Browser-Terminal etwa Folgendes angezeigt werden:

Rufen Sie Ihr Programm von einem Client aus auf

Navigieren Sie zurück zur Registerkarte „Dateien“. Vielleicht ist Ihnen bereits aufgefallen, dass Solana Playground über einen Client-Bereich verfügt. Dies ist eine praktische Möglichkeit, direkt im selben Fenster mit unserem Programm zu interagieren. Klappen Sie nun den Schalter „client“ auf und öffnen Sie die Datei „client.ts“.

Wir werden TypeScript verwenden, um eine einfache Funktion zu schreiben, die unsere Funktion „say_hello“ aufruft. Ersetzen Sie den Code in „client.ts“ durch Folgendes:

console.log(pg.wallet.publicKey.toString(), "saying hello:");
// Fetch the latest blockhash
let latestBlockhash = await pg.connection.getLatestBlockhash('finalized');

// Create a Solana transaction for the say_hello method
const tx = await pg.program.methods
.sayHello()
.transaction();

// Send and confirm the transaction and log the tx URL
const txid = await web3.sendAndConfirmTransaction(pg.connection, tx, [pg.wallet.keypair])
console.log('Transaction Complete: ',`https://explorer.solana.com/tx/${txid}?cluster=devnet`);

Hier ist eine Übersicht darüber, was wir hier tun:

  1. Den neuesten Block-Hash abrufen.
  2. Mithilfe der nützlichen Tools von Anchor rufen wir unsere Methode „say_hello“ auf (beachte, dass sie in TypeScript als „sayHello“ geschrieben wird). Anchor erledigt hier hinter den Kulissen tatsächlich eine ganze Menge. Zunächst stellt pg.program über eine IDL (Interactive Data Language) eine Verbindung zu unserem Programm her; dabei handelt es sich im Grunde um eine JSON-Datei, die dein Rust-Programm den Methoden zuordnet, die vom Client aufgerufen werden können. Wir werden in einem anderen Leitfaden näher darauf eingehen, aber wenn Sie die IDL Ihres Projekts erkunden möchten, können Sie im Reiter „🛠 Build & Deploy“ Ihres Projekts darauf zugreifen. Wenn Sie bereits Erfahrung mit der Entwicklung auf Solana haben, fällt Ihnen vielleicht auf, dass unsere Methode in unserer Transaktion keine Konten übergibt. Da Anchor weiß, welches Programm wir aufrufen, übernimmt es dies hinter den Kulissen für uns.
  3. Schließlich warten wir darauf, dass der Cluster die Transaktion bestätigt, und protokollieren die Ergebnisse.

Klicken Sie nun in der linken Seitenleiste auf „▶️ Ausführen“. Sie sollten nun ein Protokoll mit der URL Ihrer Transaktion sehen:

Klick darauf und scrolle im Solana Explorer bis zum Ende der Transaktionsprotokolle. Hallo?

Tolle Leistung! Du hast nun ein Programm, mit dem der Client mit dem Cluster interagieren kann.

Zusammenfassung

Gut gemacht und herzlichen Glückwunsch zu deinem ersten Solana-Programm! Das ist ein wichtiger erster Schritt auf deinem Weg zum Solana-Entwickler. Möchtest du weitermachen? In Teil 2 dieses Leitfadens erweitern wir dasselbe Programm um eine Funktion, mit der wir in der Blockchain zählen, wie oft wir „hello_world“ aufrufen.

Wenn du nicht weiterkommst, Fragen hast oder einfach nur darüber reden möchtest, woran du gerade arbeitest, schreib uns doch einfach auf Discord oder Twitter!

Wir ❤️ Feedback!

Wenn Sie Anregungen zu diesem Leitfaden haben, teilen Sie uns diese bitte mit. Wir freuen uns über Ihr Feedback.

Weitere Ressourcen

Diesen Leitfaden teilen