Διαμόρφωση Περιβάλλοντος

Όλες οι μέθοδοι διαμόρφωσης χρησιμοποιούν το μοτίβο builder με LiteSVM::default().

with_compute_budget

pub fn with_compute_budget(self, compute_budget: ComputeBudget) -> Self

Ορισμός ορίων μονάδων υπολογισμού και μεγέθους heap.

use solana_compute_budget::compute_budget::ComputeBudget;
let mut svm = LiteSVM::default()
.with_compute_budget(ComputeBudget {
compute_unit_limit: 1_400_000,
heap_size: 256 * 1024,
..ComputeBudget::default()
});

with_sigverify

pub fn with_sigverify(self, sigverify: bool) -> Self

Ενεργοποίηση ή απενεργοποίηση επαλήθευσης υπογραφής. Προεπιλογή: true.

// Disable for faster tests
let mut svm = LiteSVM::default()
.with_sigverify(false);

with_blockhash_check

pub fn with_blockhash_check(self, check: bool) -> Self

Ενεργοποίηση ή απενεργοποίηση επικύρωσης blockhash. Προεπιλογή: true.

// Disable to use any blockhash
let mut svm = LiteSVM::default()
.with_blockhash_check(false);

with_transaction_history

pub fn with_transaction_history(self, capacity: usize) -> Self

Ορισμός αριθμού συναλλαγών που θα διατηρούνται στο ιστορικό. Προεπιλογή: 0.

// Keep last 100 transactions
let mut svm = LiteSVM::default()
.with_transaction_history(100);

with_log_bytes_limit

pub fn with_log_bytes_limit(self, limit: Option<usize>) -> Self

Ορισμός μέγιστων bytes για αρχεία καταγραφής συναλλαγών. Προεπιλογή: Some(10_000).

// Unlimited logs
let mut svm = LiteSVM::default()
.with_log_bytes_limit(None);
// Custom limit (50KB)
let mut svm = LiteSVM::default()
.with_log_bytes_limit(Some(50_000));

with_lamports

pub fn with_lamports(self, lamports: u64) -> Self

Ορισμός αρχικών lamport για είσπραξη τελών. Προεπιλογή: 1_000_000_000.

let mut svm = LiteSVM::default()
.with_lamports(10_000_000_000);

with_default_programs

pub fn with_default_programs(self) -> Self

Συμπερίληψη προεπιλεγμένων προγραμμάτων SPL (Token, Associated Token, κ.λπ.).

let mut svm = LiteSVM::default()
.with_default_programs();

with_sysvars

pub fn with_sysvars(self) -> Self

Συμπεριλαμβάνει προεπιλεγμένες sysvars (Clock, Rent, EpochSchedule, SlotHashes, StakeHistory, κ.λπ.).

let mut svm = LiteSVM::default()
.with_sysvars();

with_feature_set

pub fn with_feature_set(self, feature_set: FeatureSet) -> Self

Διαμόρφωση του συνόλου χαρακτηριστικών του Solana για δοκιμή συγκεκριμένων λειτουργιών χρόνου εκτέλεσης.

use agave_feature_set::FeatureSet;
let mut svm = LiteSVM::default()
.with_feature_set(FeatureSet::all_enabled());

with_precompiles

#[cfg(feature = "precompiles")]
pub fn with_precompiles(self) -> Self

Συμπεριλαμβάνει τυπικά προμεταγλωττισμένα προγράμματα (ed25519, secp256k1, secp256r1).

let mut svm = LiteSVM::default()
.with_precompiles();

Απαιτεί τη σημαία χαρακτηριστικού precompiles:

[dev-dependencies]
litesvm = { version = "0.11", features = ["precompiles"] }

with_feature_accounts

pub fn with_feature_accounts(self) -> Self

Συμπερίληψη λογαριασμών πύλης χαρακτηριστικών στο περιβάλλον δοκιμών. Αυτό διασφαλίζει ότι η συμπεριφορά του χρόνου εκτέλεσης του Solana που ελέγχεται από χαρακτηριστικά αντικατοπτρίζεται με ακρίβεια στις δοκιμές σας.

let mut svm = LiteSVM::default()
.with_feature_accounts();

Χαρακτηριστικό register-tracing

Το χαρακτηριστικό register-tracing ενεργοποιεί λεπτομερή ανίχνευση καταχωρητών SBF κατά την εκτέλεση συναλλαγής. Συνεπάγεται το χαρακτηριστικό invocation-inspect-callback.

[dev-dependencies]
litesvm = { version = "0.11", features = ["register-tracing"] }

Χρησιμοποιήστε το LiteSVM::new_debuggable(true) για να δημιουργήσετε ένα instance με ενεργοποιημένη την ανίχνευση καταχωρητών:

#[cfg(feature = "register-tracing")]
let mut svm = LiteSVM::new_debuggable(true);

Όταν είναι ενεργοποιημένο, ορίστε τη μεταβλητή περιβάλλοντος SBF_TRACE_DISASSEMBLE για να εξάγετε επίσης αποτέλεσμα αποσυναρμολόγησης παράλληλα με τις ανιχνεύσεις καταχωρητών:

SBF_TRACE_DISASSEMBLE=1 cargo test

set_invocation_inspect_callback

pub fn set_invocation_inspect_callback<C: InvocationInspectCallback + 'static>(&mut self, callback: C)

Καταχωρήστε ένα callback που ενεργοποιείται πριν και μετά από κάθε κλήση προγράμματος. Απαιτεί το χαρακτηριστικό invocation-inspect-callback.

[dev-dependencies]
litesvm = { version = "0.11", features = ["invocation-inspect-callback"] }
use litesvm::{LiteSVM, types::InvocationInspectCallback};
use solana_svm::invoke_context::InvokeContext;
use solana_svm_transaction::svm_message::SVMMessage;
struct MyInspector;
impl InvocationInspectCallback for MyInspector {
fn before_invocation(
&self,
_svm: &LiteSVM,
_tx: &impl SVMMessage,
_program_indices: &[u16],
_invoke_context: &InvokeContext,
) {
println!("Before program invocation");
}
fn after_invocation(
&self,
_svm: &LiteSVM,
_invoke_context: &InvokeContext,
_enable_register_tracing: bool,
) {
println!("After program invocation");
}
}
let mut svm = LiteSVM::new();
svm.set_invocation_inspect_callback(MyInspector);

Is this page helpful?

Πίνακας Περιεχομένων

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