Konfiguration

Jeder Setter spiegelt die entsprechende Builder-Methode des Rust-Typs LiteSVM wider. Änderungen treten sofort in Kraft und geben einen error zurück.

Typisches Test-Setup

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

Signatur und Blockhash

SetSigverify

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

Transaktionssignaturprüfung aktivieren oder deaktivieren.

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)
}

Das Deaktivieren der Signaturprüfung macht Tests schneller, aber weniger realitätsnah.

Sigverify

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

Aktuelle Einstellung auslesen.

SetBlockhashCheck

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

Prüfung des aktuellen Blockhash bei eingereichten Transaktionen aktivieren oder deaktivieren.

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

Programme und Sysvars

SetSysvars

func (s *LiteSVM) SetSysvars() error

Die eingebauten Sysvars (Clock, rent, EpochSchedule, ...) auf ihre Standardwerte zurücksetzen.

SetBuiltins

func (s *LiteSVM) SetBuiltins() error

Den Standardsatz eingebauter Programme laden.

SetDefaultPrograms

func (s *LiteSVM) SetDefaultPrograms() error

Die Standard-SPL-Programme laden (System Program, SPL Token, Memo, ...).

SetPrecompiles

func (s *LiteSVM) SetPrecompiles() error

Die vorkompilierten Programme ed25519 / secp256k1 aktivieren.

WithNativeMints

func (s *LiteSVM) WithNativeMints() error

Die nativen Mint-Konten von SPL Token / Token-2022 (wrapped SOL) mit seed befüllen. Kein Effekt, wenn das zugehörige Programm nicht geladen ist; rufe zuerst SetDefaultPrograms auf, wenn du beides möchtest.

Ressourcenlimits

SetLamports

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

Den Standard-lamport-Kontostand des internen Airdrop-Pool-Kontos festlegen.

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

Die gesamten protokollierten Bytes pro Transaktion begrenzen. Ein negativer Wert hebt das Limit auf.

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

Die Kapazität des In-Memory-Transaktionsverlaufs festlegen. Übergib 0, um die Deduplizierung zu deaktivieren und das erneute Abspielen identischer Transaktionen zu erlauben.

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)
}

Compute Budget

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)

Das aktuelle Compute Budget auslesen. Der zweite Rückgabewert gibt an, ob ein Budget explizit gesetzt wurde; ist er false, enthält das Struct die Standardwerte, die verwendet werden.

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

Ein Compute Budget für nachfolgende Transaktionen festlegen.

Feature-Sets

FeatureSet ist ein undurchsichtiges Handle – erzeuge es, verändere es mit Activate / Deactivate, und installiere es anschließend mit SetFeatureSet. Schließe selbst erstellte Handles.

// 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)
}
MethodeBeschreibung
litesvm.NewFeatureSet() (*FeatureSet, error)Leeres Set (alle Features inaktiv)
litesvm.NewFeatureSetAllEnabled() (*FeatureSet, error)Alle Features aktiv
fs.Activate(featureID, slot) errorFeature ab slot als aktiv markieren
fs.Deactivate(featureID) errorFeature als inaktiv markieren
fs.IsActive(featureID) boolAktivitätsprüfung
fs.ActivatedSlot(featureID) (uint64, bool)slot, in dem ein Feature aktiviert wurde
fs.ActiveCount() intAnzahl aktiver Features
fs.InactiveCount() intAnzahl inaktiver Features
fs.ActiveFeatures() []solana.PublicKeyAktive Feature-IDs auflisten
fs.InactiveFeatures() []solana.PublicKeyInaktive Feature-IDs auflisten
fs.Close()Handle freigeben
svm.SetFeatureSet(*FeatureSet) errorIn der SVM installieren

Nutze Feature-Gating, um das Verhalten von Programmen unter einer bestimmten Solana-Version zu testen – aktiviere die Features, die mit dem angestrebten Release ausgeliefert wurden, und deaktiviere alle, die erst später hinzugekommen sind.

Is this page helpful?

© 2026 Solana Foundation. Alle Rechte vorbehalten.