Syscall-Referenz

Zusammenfassung

Programme interagieren mit der Runtime durch Syscalls, die Logging, Hashing, Kryptografie, CPI, Sysvars, Speicheroperationen und mehr abdecken. Jeder zieht Compute Units vom gemeinsamen Budget der Transaktion ab.

Syscalls

Programme interagieren mit der Runtime durch Syscalls, die in create_program_runtime_environment_v1() registriert sind. Jeder Syscall zieht Compute Units vom Compute-Budget der Transaktion ab.

Syscall-Kosten

Die Basis-Compute-Unit-Kostenkonstanten jedes Syscalls sind in SVMTransactionExecutionCost definiert. Einige Syscalls kombinieren diese Konstanten in ihrer Implementierung zu komplexeren Formeln (z. B. Skalierung mit Eingabegröße oder Hinzufügen von syscall_base_cost Overhead). Siehe die einzelnen Syscall-Quelllinks unten für exakte Kostenberechnungen.

Verfügbare Syscalls

Der vollständige Satz von Syscalls, die sBPF-Programmen zur Verfügung stehen, wie in create_program_runtime_environment_v1() registriert. Feature-gesteuerte Syscalls sind nur verfügbar, wenn das entsprechende Feature auf dem Cluster aktiv ist.

Kontrollfluss

SyscallBeschreibungQuelle
abortStoppt das Programm sofort. Wird von LLVM für unhaltbare Bedingungen eingefügt; nicht für explizite Verwendung vorgesehen.SyscallAbort
sol_panic_Stoppt das Programm mit einem Dateinamen, Zeilen- und Spaltennummer für Diagnosezwecke.SyscallPanic

Logging

SyscallBeschreibungQuelle
sol_log_Protokolliert eine UTF-8-String-Nachricht im Programmprotokoll.SyscallLog
sol_log_64_Protokolliert fünf u64-Werte als Hex im Programmprotokoll.SyscallLogU64
sol_log_pubkeyProtokolliert einen Pubkey als Base58-String im Programmprotokoll.SyscallLogPubkey
sol_log_compute_units_Protokolliert die verbleibenden Compute Units im Programmprotokoll.SyscallLogBpfComputeUnits
sol_log_dataProtokolliert beliebige Byte-Slices als Base64-kodierte Daten.SyscallLogData

PDA

SyscallBeschreibungQuelle
sol_create_program_addressLeitet eine Programmadresse aus Seeds und einer Programm-ID ab. Gibt 1 zurück, wenn die abgeleitete Adresse auf der Ed25519-Kurve liegt (ungültige PDA).SyscallCreateProgramAddress
sol_try_find_program_addressFindet eine gültige PDA durch Iteration von Bump-Seeds von 255 bis 1. Gibt die Adresse und den Bump zurück.SyscallTryFindProgramAddress

Hashing

SyscallBeschreibungQuelle
sol_sha256Berechnet einen SHA-256-Hash über ein oder mehrere Byte-Slices.SyscallHash<Sha256Hasher>
sol_keccak256Berechnet einen Keccak-256-Hash über ein oder mehrere Byte-Slices.SyscallHash<Keccak256Hasher>
sol_blake3Berechnet einen Blake3-Hash über ein oder mehrere Byte-Slices. Feature-gated.SyscallHash<Blake3Hasher>
sol_poseidonBerechnet einen Poseidon-Hash über Eingaben. Feature-gated.SyscallPoseidon

Kryptografie

SyscallBeschreibungQuelle
sol_secp256k1_recoverStellt einen secp256k1-Public-Key aus einem signierten Message-Hash und einer Recovery-ID wieder her.SyscallSecp256k1Recover
sol_curve_validate_pointValidiert, dass ein Byte-Array ein gültiger Punkt auf Curve25519 (Edwards oder Ristretto) ist. Feature-gated.SyscallCurvePointValidation
sol_curve_group_opFührt Curve25519-Gruppenoperationen (Addition, Subtraktion, Multiplikation) auf Edwards- oder Ristretto-Punkten aus. Feature-gated.SyscallCurveGroupOps
sol_curve_multiscalar_mulFührt Multi-Skalar-Multiplikation auf Curve25519-Edwards- oder Ristretto-Punkten aus. Feature-gated.SyscallCurveMultiscalarMultiplication
sol_alt_bn128_group_opFührt alt_bn128-(BN254-)Gruppenoperationen aus: G1-Addition, G1-Multiplikation und Pairing-Check. Feature-gated.SyscallAltBn128
sol_alt_bn128_compressionKomprimiert und dekomprimiert alt_bn128-G1- und G2-Punkte. Feature-gated.SyscallAltBn128Compression
sol_big_mod_expBerechnet modulare Exponentiation großer Ganzzahlen (base^exp mod modulus). Feature-gated.SyscallBigModExp

CPI

SyscallBeschreibungQuelle
sol_invoke_signed_rustRuft eine programmübergreifende Anweisung aus einem Rust-Programm auf. Serialisiert Anweisung, Konten und Signer-Seeds unter Verwendung der Rust-ABI.SyscallInvokeSignedRust
sol_invoke_signed_cRuft eine programmübergreifende Anweisung aus einem C-Programm auf. Verwendet die C SolInstruction ABI zur Serialisierung.SyscallInvokeSignedC

Sysvars

SyscallBeschreibungQuelle
sol_get_clock_sysvarSchreibt die Clock-Sysvar in einen vom Programm bereitgestellten Puffer.SyscallGetClockSysvar
sol_get_epoch_schedule_sysvarSchreibt die EpochSchedule-Sysvar in einen vom Programm bereitgestellten Puffer.SyscallGetEpochScheduleSysvar
sol_get_rent_sysvarSchreibt die Rent-Sysvar in einen vom Programm bereitgestellten Puffer.SyscallGetRentSysvar
sol_get_epoch_rewards_sysvarSchreibt die EpochRewards-Sysvar in einen vom Programm bereitgestellten Puffer.SyscallGetEpochRewardsSysvar
sol_get_last_restart_slotSchreibt die LastRestartSlot-Sysvar in einen vom Programm bereitgestellten Puffer. Feature-gated.SyscallGetLastRestartSlotSysvar
sol_get_fees_sysvarSchreibt die veraltete Fee-Sysvar in einen vom Programm bereitgestellten Puffer. Feature-gated (veraltet).SyscallGetFeesSysvar
sol_get_sysvarGenerischer Sysvar-Zugriff: liest ein Byte-Slice aus jeder gecachten Sysvar anhand ihres Pubkey, Offset und Länge (SIMD-0127). Feature-gated.SyscallGetSysvar

Speicheroperationen

SyscallBeschreibungQuelle
sol_memcpy_Kopiert n Bytes von der Quelle zum Ziel. Bricht ab, wenn sich Bereiche im VM-Adressraum überlappen.SyscallMemcpy
sol_memmove_Kopiert n Bytes von der Quelle zum Ziel und behandelt überlappende Bereiche korrekt.SyscallMemmove
sol_memcmp_Vergleicht n Bytes zweier Speicherbereiche. Schreibt das Ergebnis (Vergleich des ersten abweichenden Bytes) an eine Ergebnisadresse.SyscallMemcmp
sol_memset_Füllt n Bytes eines Speicherbereichs mit einem gegebenen Byte-Wert.SyscallMemset

Programmdaten

SyscallBeschreibungQuelle
sol_set_return_dataSetzt Rückgabedaten (max. 1.024 Bytes) für die aktuelle Anweisung. Vom Aufrufer lesbar, nachdem der CPI zurückkehrt.SyscallSetReturnData
sol_get_return_dataLiest die Rückgabedaten, die vom letzten CPI gesetzt wurden. Gibt die Datenlänge und die Programm-ID zurück, die sie gesetzt hat.SyscallGetReturnData
sol_get_processed_sibling_instructionRuft eine zuvor ausgeführte Geschwisteranweisung auf derselben Stack-Höhe ab (nach umgekehrtem Index). Gibt Programm-ID, Daten und Konten-Metadaten zurück.SyscallGetProcessedSiblingInstruction
sol_get_stack_heightGibt die aktuelle Call-Stack-Höhe zurück. Höhe 1 = Top-Level-Anweisung; jeder CPI erhöht um 1.SyscallGetStackHeight

Rechenleistung

SyscallBeschreibungQuelle
sol_remaining_compute_unitsGibt die Anzahl der verbleibenden Recheneinheiten im Transaktionsbudget zurück. Feature-gated.SyscallRemainingComputeUnits

Epoch-Stake

SyscallBeschreibungQuelle
sol_get_epoch_stakeGibt den gesamten Cluster-Stake (Null-Zeiger) oder den delegierten Stake eines bestimmten Vote-Kontos für die aktuelle Epoch zurück (SIMD-0133). Feature-gated.SyscallGetEpochStake

Speicherzuweisung

SyscallBeschreibungQuelle
sol_alloc_free_Legacy-Bump-Allocator für dynamische Speicherzuweisung. Deaktiviert für neue Deployments; nur verfügbar für Programme, die vor dem Feature-Gate bereitgestellt wurden.SyscallAllocFree

Is this page helpful?

Inhaltsverzeichnis

Seite bearbeiten

Verwaltet von

© 2026 Solana Foundation.
Alle Rechte vorbehalten.
Verbinden Sie sich