Programme

Jeder Entwickler kann Programme für die Solana-Blockchain schreiben und bereitstellen. Das Programm (in anderen Protokollen als Smart Contracts bekannt) dient als Grundlage für On-Chain-Aktivitäten und treibt alles an, von DeFi und NFTs bis hin zu Social Media und Gaming.

Facts

Fact Sheet

  • Programme verarbeiten Aneweisungen sowohl von Endbenutzern als auch von anderen Programmen
  • Alle Programme sind zustandslos (stateless): Alle Daten, mit denen sie interagieren, werden in separaten Konten gespeichert, die über Anweisungen gegeben werden.
  • Programme selbst werden in Konten gespeichert, die als "ausführbar" gekennzeichnet sind
  • Alle Programme gehören dem BPF Loaderopen in new window und werden von der Solana Runtimeopen in new window ausgeführt
  • Entwickler schreiben am häufigsten Programme in Rust oder C++, können aber jede Sprache wählen, die auf das LLVMopen in new window's BPFopen in new window Backend abziehlt
  • Alle Programme haben einen einzigen Einstiegspunkt, an dem die Befehlsverarbeitung stattfindet (i.e. process_instruction); Parameter beinhalten immer:
    • program_id: pubkey
    • accounts: array,
    • instruction_data: byte array

Deep Dive

Im Gegensatz zu den meisten anderen Blockchains trennt Solana Code vollständig von Daten. Alle Daten, mit denen Programme interagieren, werden in separaten Konten gespeichert und als Referenzen über Anweisungen weitergegeben. Dieses Modell ermöglicht es, dass ein einziges generisches Programm über verschiedene Konten läuft, ohne dass zusätzliche Bereitstellungen (Deployments) erforderlich sind. Übliche Beispiele für dieses Muster finden sich in den Native- und SPL-Programmen.

Native Programme & Die Solana Programm Bibliothek (SPL - Solana Program Library)

Solana ist mit einer Reihe von Programmen ausgestattet, die als Kernbausteine ​​für On-Chain-Interaktionen dienen. Diese Programme sind unterteilt in Native Programmeopen in new window und Solana Programm (SPL) Bibliothekenopen in new window.

Native Programme stellen die Basisfunktionalität bereit, die für den Betrieb von Validatoren erforderlich ist. Unter diesen Programmen ist das bekannteste das System Programmopen in new window, welches für die Verwaltung neuer Konten und die Übertragung von SOL zwischen zwei Parteien verantwortlich ist.

SPL-Programme unterstützen eine Reihe von On-Chain-Aktivitäten, darunter das Erstellen, Tauschen und Verleihen von Token sowie die Generierung von Stake-Pools und die Aufrechterhaltung eines On-Chain-Namensdienstes. Das SPL Token Programopen in new window an direkt über die CLI aufgerufen werden, während andere wie das verbundene Token-Kontoprogrammopen in new window werden normalerweise mit benutzerdefinierten Programmen zusammengestellt.

Writing Programs

Programme werden am häufigsten mit Rust oder C++ entwickelt, können aber mit jeder Sprache entwickelt werden, die auf das BPF-Backend des LLVM abzielt. Jüngste Initiativen von Neon Labsopen in new window und Solangopen in new window ermöglichen jedoch EVMopen in new window Kompatibilität und ermöglichen es Entwicklern, Programme in Solidity zu schreiben.

Die meisten Rust-basierten Programme halten sich an die folgende Architektur:

DateiBeschreibung
lib.rsModule registrieren
entrypoint.rsEinstieg ins Programm
instruction.rsProgramm-API, (De-)Serialisierung von Befehlsdaten
processor.rsProgrammlogik
state.rsProgrammobjekte, (De-)Serialisierungszustand
error.rsProgrammspezifische Fehler

Kürzlich hat sich Anchoropen in new window zu einem beliebten Framework für die Entwicklung von Programmen entwickelt. Anchor ist ein rechthaberisches Framework, ähnlich wie Ruby on Rails, das Boilerplates reduziert und den (De-)Serialisierungsprozess für die Rust-basierte Entwicklung rationalisiert.

Programme werden normalerweise entwickelt und in Localhost- und Devnet-Umgebungen getestet, bevor sie auf Testnet oder Mainnet bereitgestellt werden. Solana unterstützt die folgenden Umgebungen:

Cluster-UmgebungRPC Verbindungs URL
Mainnet-betahttps://api.mainnet-beta.solana.com
Testnethttps://api.testnet.solana.com
Devnethttps://api.devnet.solana.com
LocalhostDefault port: 8899 (e.g. http://localhost:8899, http://192.168.1.88:8899)

Nach der Bereitstellung in einer Umgebung können Clients mit On-Chain-Programmen über RPC Verbindungenopen in new window mit dem jeweiligen Cluster interagieren.

Bereitstellen von Programmen

Entwickler können ihre Programme über die CLIopen in new window bereitstellen:

solana program deploy <PROGRAM_FILEPATH>

Wenn ein Programm bereitgestellt wird, wird es zu einem ELF shared objectopen in new window kompiliert und in den Solana-Cluster hochgeladen. Programme befinden sich in Konten (ähnlich wie alles andere auf Solana), außer dass diese Konten als „ausführbar“ markiert und dem BPF Loader zugewiesen sind. Die Adresse dieses Kontos wird als „program_id“ bezeichnet und wird verwendet, um bei allen zukünftigen Transaktionen auf das Programm zu verweisen.

Solana unterstützt mehrere BPF Loader, wobei der neueste der aktualisierbare BPF Laderopen in new window. Der BPF Loader ist dafür verantwortlich, das Konto des Programms zu verwalten und es den Clients über die „program_id“ zur Verfügung zu stellen. Alle Programme haben einen einzigen Einstiegspunkt, an dem die Befehlsverarbeitung stattfindet (d. h. „process_instruction“), und die Parameter beinhalten immer:

  • program_id: pubkey
  • accounts: array,
  • instruction_data: byte array

Einmal aufgerufen, werden Programme von der Solana-Laufzeit ausgeführt.

Weitere Quellen

Last Updated:
Contributors: nyk