Riferimento syscall

Riepilogo

I programmi interagiscono con il runtime attraverso syscall che coprono logging, hashing, crittografia, CPI, sysvars, operazioni di memoria e altro. Ognuna deduce compute unit dal budget condiviso della transazione.

Syscall

I programmi interagiscono con il runtime attraverso syscall registrate in create_program_runtime_environment_v1(). Ogni syscall deduce compute unit dal compute budget della transazione.

Costi delle syscall

Le costanti del costo base in compute unit di ogni syscall sono definite in SVMTransactionExecutionCost. Alcune syscall combinano queste costanti in formule più complesse nella loro implementazione (ad es., scalando con la dimensione dell'input o aggiungendo overhead syscall_base_cost). Consulta i link al codice sorgente delle singole syscall qui sotto per i calcoli esatti dei costi.

Syscall disponibili

L'insieme completo di syscall disponibili per i programmi sBPF, come registrate in create_program_runtime_environment_v1(). Le syscall protette da feature sono disponibili solo quando la feature corrispondente è attiva sul cluster.

Flusso di controllo

SyscallDescrizioneSorgente
abortInterrompe immediatamente il programma. Inserita da LLVM per condizioni insostenibili; non destinata all'uso esplicito.SyscallAbort
sol_panic_Interrompe il programma con nome file, riga e colonna per la diagnostica.SyscallPanic

Logging

SyscallDescrizioneSorgente
sol_log_Registra un messaggio stringa UTF-8 nel log del programma.SyscallLog
sol_log_64_Registra cinque valori u64 come esadecimali nel log del programma.SyscallLogU64
sol_log_pubkeyRegistra un Pubkey come stringa base58 nel log del programma.SyscallLogPubkey
sol_log_compute_units_Registra le compute unit rimanenti nel log del programma.SyscallLogBpfComputeUnits
sol_log_dataRegistra slice di byte arbitrari come dati codificati in base64.SyscallLogData

PDA

SyscallDescrizioneSorgente
sol_create_program_addressDeriva un indirizzo di programma da seed e un ID programma. Restituisce 1 se l'indirizzo derivato è sulla curva Ed25519 (PDA non valido).SyscallCreateProgramAddress
sol_try_find_program_addressTrova un PDA valido iterando i bump seed da 255 fino a 1. Restituisce l'indirizzo e il bump.SyscallTryFindProgramAddress

Hashing

SyscallDescrizioneSorgente
sol_sha256Calcola un hash SHA-256 su una o più sequenze di byte.SyscallHash<Sha256Hasher>
sol_keccak256Calcola un hash Keccak-256 su una o più sequenze di byte.SyscallHash<Keccak256Hasher>
sol_blake3Calcola un hash Blake3 su una o più sequenze di byte. Richiede feature gate.SyscallHash<Blake3Hasher>
sol_poseidonCalcola un hash Poseidon sugli input. Richiede feature gate.SyscallPoseidon

Crittografia

SyscallDescrizioneSorgente
sol_secp256k1_recoverRecupera una chiave pubblica secp256k1 da un hash di messaggio firmato e un ID di recupero.SyscallSecp256k1Recover
sol_curve_validate_pointValida che un array di byte sia un punto valido sulla curva Curve25519 (Edwards o Ristretto). Richiede feature gate.SyscallCurvePointValidation
sol_curve_group_opEsegue operazioni di gruppo Curve25519 (addizione, sottrazione, moltiplicazione) su punti Edwards o Ristretto. Richiede feature gate.SyscallCurveGroupOps
sol_curve_multiscalar_mulEsegue la moltiplicazione multi-scalare su punti Curve25519 Edwards o Ristretto. Richiede feature gate.SyscallCurveMultiscalarMultiplication
sol_alt_bn128_group_opEsegue operazioni di gruppo alt_bn128 (BN254): addizione G1, moltiplicazione G1 e verifica di pairing. Richiede feature gate.SyscallAltBn128
sol_alt_bn128_compressionComprime e decomprime punti G1 e G2 alt_bn128. Richiede feature gate.SyscallAltBn128Compression
sol_big_mod_expCalcola l'esponenziazione modulare di interi grandi (base^exp mod modulus). Richiede feature gate.SyscallBigModExp

CPI

SyscallDescrizioneSorgente
sol_invoke_signed_rustInvoca un'istruzione cross-program da un programma Rust. Serializza istruzione, account e signer seed utilizzando l'ABI Rust.SyscallInvokeSignedRust
sol_invoke_signed_cInvoca un'istruzione cross-program da un programma C. Utilizza l'ABI C SolInstruction per la serializzazione.SyscallInvokeSignedC

Sysvars

SyscallDescrizioneSorgente
sol_get_clock_sysvarScrive la sysvar Clock in un buffer fornito dal programma.SyscallGetClockSysvar
sol_get_epoch_schedule_sysvarScrive la sysvar EpochSchedule in un buffer fornito dal programma.SyscallGetEpochScheduleSysvar
sol_get_rent_sysvarScrive la sysvar Rent in un buffer fornito dal programma.SyscallGetRentSysvar
sol_get_epoch_rewards_sysvarScrive la sysvar EpochRewards in un buffer fornito dal programma.SyscallGetEpochRewardsSysvar
sol_get_last_restart_slotScrive la sysvar LastRestartSlot in un buffer fornito dal programma. Protetto da feature gate.SyscallGetLastRestartSlotSysvar
sol_get_fees_sysvarScrive la sysvar Fees deprecata in un buffer fornito dal programma. Protetto da feature gate (deprecato).SyscallGetFeesSysvar
sol_get_sysvarAccesso generico alle sysvar: legge una sequenza di byte da qualsiasi sysvar in cache tramite la sua pubkey, offset e lunghezza (SIMD-0127). Protetto da feature gate.SyscallGetSysvar

Operazioni di memoria

SyscallDescrizioneSorgente
sol_memcpy_Copia n byte dalla sorgente alla destinazione. Interrompe se le regioni si sovrappongono nello spazio degli indirizzi VM.SyscallMemcpy
sol_memmove_Copia n byte dalla sorgente alla destinazione, gestendo correttamente le regioni sovrapposte.SyscallMemmove
sol_memcmp_Confronta n byte di due regioni di memoria. Scrive il risultato (confronto del primo byte differente) in un indirizzo di risultato.SyscallMemcmp
sol_memset_Riempie n byte di una regione di memoria con un determinato valore byte.SyscallMemset

Dati del programma

SyscallDescrizioneSorgente
sol_set_return_dataImposta i dati di ritorno (max 1.024 byte) per l'istruzione corrente. Leggibili dal chiamante dopo il ritorno della CPI.SyscallSetReturnData
sol_get_return_dataLegge i dati di ritorno impostati dalla CPI più recente. Restituisce la lunghezza dei dati e l'ID del programma che li ha impostati.SyscallGetReturnData
sol_get_processed_sibling_instructionRecupera un'istruzione sibling precedentemente eseguita alla stessa altezza dello stack (per indice inverso). Restituisce l'ID del programma, i dati e i metadati degli account.SyscallGetProcessedSiblingInstruction
sol_get_stack_heightRestituisce l'altezza corrente dello stack di chiamate. Altezza 1 = istruzione di livello superiore; ogni CPI incrementa di 1.SyscallGetStackHeight

Compute

SyscallDescrizioneSorgente
sol_remaining_compute_unitsRestituisce il numero di unità di calcolo rimanenti nel budget della transazione. Controllato da feature gate.SyscallRemainingComputeUnits

Stake dell'epoch

SyscallDescrizioneSorgente
sol_get_epoch_stakeRestituisce lo stake totale del cluster (puntatore nullo) o lo stake delegato di uno specifico account di voto per l'epoch corrente (SIMD-0133). Controllato da feature gate.SyscallGetEpochStake

Allocazione della memoria

SyscallDescrizioneSorgente
sol_alloc_free_Allocatore bump legacy per l'allocazione dinamica della memoria. Disabilitato per i nuovi deployment; disponibile solo per i programmi distribuiti prima del feature gate.SyscallAllocFree

Is this page helpful?

Indice dei contenuti

Modifica pagina

Gestito da

© 2026 Solana Foundation.
Tutti i diritti riservati.
Resta connesso