Διαμόρφωση

Κάθε setter αντικατοπτρίζει την αντίστοιχη μέθοδο builder στον τύπο LiteSVM της Rust. Οι κλήσεις τίθενται σε ισχύ αμέσως και επιστρέφουν error.

Τυπική Ρύθμιση Δοκιμής

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

Υπογραφή και Blockhash

SetSigverify

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

Εναλλαγή επαλήθευσης υπογραφής συναλλαγής.

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

Η απενεργοποίηση της επαλήθευσης υπογραφής κάνει τις δοκιμές ταχύτερες αλλά λιγότερο ρεαλιστικές.

Sigverify

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

Ανάγνωση της τρέχουσας ρύθμισης.

SetBlockhashCheck

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

Εναλλαγή ελέγχου πρόσφατου blockhash στις υποβαλλόμενες συναλλαγές.

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

Προγράμματα και Sysvars

SetSysvars

func (s *LiteSVM) SetSysvars() error

Επανεκκίνηση των ενσωματωμένων sysvars (Clock, Rent, EpochSchedule, ...) στις προεπιλεγμένες τιμές τους.

SetBuiltins

func (s *LiteSVM) SetBuiltins() error

Φόρτωση του προεπιλεγμένου συνόλου ενσωματωμένων προγραμμάτων.

SetDefaultPrograms

func (s *LiteSVM) SetDefaultPrograms() error

Φόρτωση των τυπικών προγραμμάτων SPL (System Program, SPL Token, Memo, ...).

SetPrecompiles

func (s *LiteSVM) SetPrecompiles() error

Ενεργοποίηση των προμεταγλωττισμένων προγραμμάτων ed25519 / secp256k1.

WithNativeMints

func (s *LiteSVM) WithNativeMints() error

Seed των λογαριασμών native-mint SPL Token / Token-2022 (wrapped SOL). Δεν έχει αποτέλεσμα αν το αντίστοιχο πρόγραμμα δεν είναι φορτωμένο· καλέστε πρώτα SetDefaultPrograms αν θέλετε και τα δύο.

Όρια Πόρων

SetLamports

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

Ορισμός του προεπιλεγμένου υπολοίπου lamport του εσωτερικού λογαριασμού airdrop-pool.

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

Περιορισμός των συνολικών bytes καταγραφής που λαμβάνονται ανά συναλλαγή. Περάστε αρνητική τιμή για κατάργηση του ορίου.

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

Ορισμός της χωρητικότητας του ιστορικού συναλλαγών στη μνήμη. Περάστε 0 για απενεργοποίηση του dedup και αποδοχή επανάληψης πανομοιότυπων συναλλαγών.

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

Προϋπολογισμός Υπολογισμού

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)

Ανάγνωση του τρέχοντος προϋπολογισμού υπολογισμού. Η δεύτερη τιμή επιστροφής αναφέρει αν ο προϋπολογισμός ορίστηκε ρητά· αν είναι false, η δομή περιέχει τις προεπιλεγμένες τιμές που θα χρησιμοποιηθούν.

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

Εγκατάσταση προϋπολογισμού υπολογισμού για τις επόμενες συναλλαγές.

Σύνολα Χαρακτηριστικών

Το FeatureSet είναι ένας αδιαφανής χειριστής - κατασκευάστε το, μεταλλάξτε το με Activate / Deactivate, έπειτα εγκαταστήστε το με SetFeatureSet. Κλείστε τους χειριστές που δημιουργείτε.

// 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)
}
ΜέθοδοςΠεριγραφή
litesvm.NewFeatureSet() (*FeatureSet, error)Κενό σύνολο (όλα τα χαρακτηριστικά ανενεργά)
litesvm.NewFeatureSetAllEnabled() (*FeatureSet, error)Όλα τα χαρακτηριστικά ενεργά
fs.Activate(featureID, slot) errorΣήμανση χαρακτηριστικού ως ενεργού στο slot
fs.Deactivate(featureID) errorΣήμανση χαρακτηριστικού ως ανενεργού
fs.IsActive(featureID) boolΈλεγχος ενεργοποίησης
fs.ActivatedSlot(featureID) (uint64, bool)Το slot στο οποίο ενεργοποιήθηκε ένα χαρακτηριστικό
fs.ActiveCount() intΠλήθος ενεργών χαρακτηριστικών
fs.InactiveCount() intΠλήθος ανενεργών χαρακτηριστικών
fs.ActiveFeatures() []solana.PublicKeyΛίστα αναγνωριστικών ενεργών χαρακτηριστικών
fs.InactiveFeatures() []solana.PublicKeyΛίστα αναγνωριστικών ανενεργών χαρακτηριστικών
fs.Close()Αποδέσμευση χειριστή
svm.SetFeatureSet(*FeatureSet) errorΕγκατάσταση στο SVM

Χρησιμοποιήστε το feature gating για να δοκιμάσετε πώς συμπεριφέρονται τα προγράμματα σε μια συγκεκριμένη έκδοση Solana

  • ενεργοποιήστε τα χαρακτηριστικά που παραδόθηκαν με την έκδοση-στόχο σας, έπειτα απενεργοποιήστε όσα προστέθηκαν αργότερα.

Is this page helpful?

© 2026 Ίδρυμα Solana. Με επιφύλαξη παντός δικαιώματος.