تستخدم جميع طرق التكوين نمط البناء مع LiteSVM::default().
with_compute_budget
pub fn with_compute_budget(self, compute_budget: ComputeBudget) -> Self
تعيين حدود وحدة الحوسبة وحجم الكومة.
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 testslet mut svm = LiteSVM::default().with_sigverify(false);
with_blockhash_check
pub fn with_blockhash_check(self, check: bool) -> Self
تمكين التحقق من صحة تجزئة الكتلة أو تعطيله. الافتراضي: true.
// Disable to use any blockhashlet mut svm = LiteSVM::default().with_blockhash_check(false);
with_transaction_history
pub fn with_transaction_history(self, capacity: usize) -> Self
تعيين عدد المعاملات المحتفظ بها في السجل. الافتراضي: 0.
// Keep last 100 transactionslet mut svm = LiteSVM::default().with_transaction_history(100);
with_log_bytes_limit
pub fn with_log_bytes_limit(self, limit: Option<usize>) -> Self
تعيين الحد الأقصى للبايتات لسجلات المعاملات. الافتراضي: Some(10_000).
// Unlimited logslet 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
يتضمن المتغيرات النظامية الافتراضية (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
تهيئة مجموعة ميزات سولانا لاختبار ميزات وقت التشغيل المحددة.
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
تضمين حسابات بوابة الميزات في بيئة الاختبار. يضمن ذلك انعكاس سلوك وقت تشغيل سولانا المقيّد بالميزات بدقة في اختباراتك.
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) لإنشاء نسخة مع تفعيل تتبع التسجيلات:
#[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)
سجّل رد نداء يُطلَق قبل كل استدعاء برنامج وبعده. يتطلب ميزة
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?