Configuration

Chaque setter correspond à la méthode builder équivalente du type Rust LiteSVM. Les appels prennent effet immédiatement et retournent une error.

Configuration typique d'un test

svm, err := litesvm.New()
if err != nil {
t.Fatal(err)
}
defer svm.Close()
// Each setter returns an error. The calls below are infallible in practice,
// so the docs use _ = ... for brevity; check the error in production code.
_ = svm.SetSigverify(false) // skip signature verification (faster)
_ = svm.SetBlockhashCheck(false) // skip blockhash validation (simpler)
_ = svm.SetSysvars() // reset Clock, Rent, etc. to defaults
_ = svm.SetBuiltins() // reload built-in programs
_ = svm.SetTransactionHistory(100) // keep the last 100 transactions

Signature et Blockhash

SetSigverify

func (s *LiteSVM) SetSigverify(enabled bool) error

Active ou désactive la vérification des signatures de transaction.

if err := svm.SetSigverify(false); err != nil { // accept unsigned / badly-signed txs
t.Fatal(err)
}
if err := svm.SetSigverify(true); err != nil { // restore production-like behavior
t.Fatal(err)
}

Désactiver la vérification des signatures accélère les tests, mais les rend moins réalistes.

Sigverify

func (s *LiteSVM) Sigverify() (bool, error)

Lire le paramètre actuel.

SetBlockhashCheck

func (s *LiteSVM) SetBlockhashCheck(enabled bool) error

Active ou désactive la vérification du blockhash récent sur les transactions soumises.

if err := svm.SetBlockhashCheck(false); err != nil { // accept any blockhash
t.Fatal(err)
}

Programmes et Sysvars

SetSysvars

func (s *LiteSVM) SetSysvars() error

Réinitialise les sysvars intégrées (Clock, rent, EpochSchedule, ...) à leurs valeurs par défaut.

SetBuiltins

func (s *LiteSVM) SetBuiltins() error

Charge l'ensemble par défaut des programmes intégrés.

SetDefaultPrograms

func (s *LiteSVM) SetDefaultPrograms() error

Charge les programmes SPL standards (System Program, SPL Token, Memo, ...).

SetPrecompiles

func (s *LiteSVM) SetPrecompiles() error

Active les programmes précompilés ed25519 / secp256k1.

WithNativeMints

func (s *LiteSVM) WithNativeMints() error

Initialise avec seed les comptes native-mint de SPL Token / Token-2022 (SOL encapsulé). Sans effet si le programme correspondant n'est pas chargé ; appelez d'abord SetDefaultPrograms si vous souhaitez les deux.

Limites de ressources

SetLamports

func (s *LiteSVM) SetLamports(lamports uint64) error

Définit le solde en lamport par défaut du compte interne du pool d'airdrop.

if err := svm.SetLamports(1 << 40); err != nil { // ~1.1 trillion lamports (~1,100 SOL)
t.Fatal(err)
}

SetLogBytesLimit

func (s *LiteSVM) SetLogBytesLimit(limit int) error

Limite le total des octets de log capturés par transaction. Passez une valeur négative pour supprimer la limite.

if err := svm.SetLogBytesLimit(10_000); err != nil { // 10 KB cap
t.Fatal(err)
}
if err := svm.SetLogBytesLimit(-1); err != nil { // unlimited
t.Fatal(err)
}

SetTransactionHistory

func (s *LiteSVM) SetTransactionHistory(capacity int) error

Définit la capacité de l'historique de transactions en mémoire. Passez 0 pour désactiver la déduplication et autoriser la répétition de transactions identiques.

if err := svm.SetTransactionHistory(100); err != nil { // cap at 100 entries
t.Fatal(err)
}
if err := svm.SetTransactionHistory(0); err != nil { // disable dedup entirely
t.Fatal(err)
}

Budget de calcul

type ComputeBudget struct {
// See litesvm-go/litesvm.go for the full field list.
// usize fields are normalized to uint64; HeapSize stays uint32.
ComputeUnitLimit uint64
HeapSize uint32
// ...
}

ComputeBudget

func (s *LiteSVM) ComputeBudget() (ComputeBudget, bool, error)

Lit le budget de calcul actuel. La deuxième valeur de retour indique si un budget a été explicitement défini ; si false, la structure contient les valeurs par défaut qui seront utilisées.

budget, set, err := svm.ComputeBudget()
if err != nil {
t.Fatal(err)
}
if !set {
budget.ComputeUnitLimit = 1_400_000
}
if err := svm.SetComputeBudget(budget); err != nil {
t.Fatal(err)
}

SetComputeBudget

func (s *LiteSVM) SetComputeBudget(b ComputeBudget) error

Installe un budget de calcul pour les transactions suivantes.

Ensembles de fonctionnalités

FeatureSet est un handle opaque — construisez-le, modifiez-le avec Activate / Deactivate, puis installez-le avec SetFeatureSet. Fermez les handles que vous créez.

// Start with all features off, then activate what you care about.
fs, err := litesvm.NewFeatureSet()
if err != nil {
t.Fatal(err)
}
defer fs.Close()
if err := fs.Activate(featureID, 0); err != nil {
t.Fatal(err)
}
// Or start from "everything enabled" and flip specific features off.
fs2, err := litesvm.NewFeatureSetAllEnabled()
if err != nil {
t.Fatal(err)
}
defer fs2.Close()
if err := fs2.Deactivate(featureID); err != nil {
t.Fatal(err)
}
if err := svm.SetFeatureSet(fs); err != nil {
t.Fatal(err)
}
MéthodeDescription
litesvm.NewFeatureSet() (*FeatureSet, error)Ensemble vide (toutes les fonctionnalités inactives)
litesvm.NewFeatureSetAllEnabled() (*FeatureSet, error)Toutes les fonctionnalités actives
fs.Activate(featureID, slot) errorMarquer la fonctionnalité comme active au slot
fs.Deactivate(featureID) errorMarquer la fonctionnalité comme inactive
fs.IsActive(featureID) boolVérification de l'état actif
fs.ActivatedSlot(featureID) (uint64, bool)slot auquel une fonctionnalité a été activée
fs.ActiveCount() intNombre de fonctionnalités actives
fs.InactiveCount() intNombre de fonctionnalités inactives
fs.ActiveFeatures() []solana.PublicKeyLister les IDs des fonctionnalités actives
fs.InactiveFeatures() []solana.PublicKeyLister les IDs des fonctionnalités inactives
fs.Close()Libérer le handle
svm.SetFeatureSet(*FeatureSet) errorInstaller sur la SVM

Utilisez le feature gating pour tester le comportement des programmes sous une version spécifique de Solana — activez les fonctionnalités livrées avec la version ciblée, puis désactivez celles qui sont arrivées ultérieurement.

Is this page helpful?

© 2026 Fondation Solana. Tous droits réservés.