Κάθε 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 txst.Fatal(err)}if err := svm.SetSigverify(true); err != nil { // restore production-like behaviort.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 blockhasht.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 capt.Fatal(err)}if err := svm.SetLogBytesLimit(-1); err != nil { // unlimitedt.Fatal(err)}
SetTransactionHistory
func (s *LiteSVM) SetTransactionHistory(capacity int) error
Ορισμός της χωρητικότητας του ιστορικού συναλλαγών στη μνήμη. Περάστε 0 για απενεργοποίηση του dedup
και αποδοχή επανάληψης πανομοιότυπων συναλλαγών.
if err := svm.SetTransactionHistory(100); err != nil { // cap at 100 entriest.Fatal(err)}if err := svm.SetTransactionHistory(0); err != nil { // disable dedup entirelyt.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 uint64HeapSize 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?