Configuración

Cada setter refleja el método constructor correspondiente en el tipo LiteSVM de Rust. Las llamadas surten efecto de inmediato y devuelven un error.

Configuración típica de pruebas

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

Firma y Blockhash

SetSigverify

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

Activa o desactiva la verificación de firmas de transacciones.

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

Deshabilitar la verificación de firmas hace que las pruebas sean más rápidas, pero menos realistas.

Sigverify

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

Lee la configuración actual.

SetBlockhashCheck

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

Activa o desactiva la verificación del blockhash reciente en las transacciones enviadas.

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

Programas y Sysvars

SetSysvars

func (s *LiteSVM) SetSysvars() error

Reinicializa las sysvars integradas (Clock, Rent, EpochSchedule, ...) a sus valores predeterminados.

SetBuiltins

func (s *LiteSVM) SetBuiltins() error

Carga el conjunto predeterminado de programas integrados.

SetDefaultPrograms

func (s *LiteSVM) SetDefaultPrograms() error

Carga los programas SPL estándar (System Program, SPL Token, Memo, ...).

SetPrecompiles

func (s *LiteSVM) SetPrecompiles() error

Habilita los programas precompilados ed25519 / secp256k1.

WithNativeMints

func (s *LiteSVM) WithNativeMints() error

Inicializa con seed las cuentas de mint nativa de SPL Token / Token-2022 (SOL envuelto). No tiene efecto si el programa correspondiente no está cargado; llama primero a SetDefaultPrograms si deseas ambos.

Límites de recursos

SetLamports

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

Establece el saldo predeterminado en lamport de la cuenta interna del pool de airdrop.

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

Limita el total de bytes de registro capturados por transacción. Pasa un valor negativo para eliminar el límite.

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

Establece la capacidad del historial de transacciones en memoria. Pasa 0 para deshabilitar la deduplicación y permitir reproducir transacciones idénticas.

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

Presupuesto de cómputo

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)

Lee el presupuesto de cómputo actual. El segundo valor de retorno indica si se ha establecido un presupuesto de forma explícita; si es false, la estructura contiene los valores predeterminados que se utilizarán.

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

Instala un presupuesto de cómputo para las transacciones siguientes.

Conjuntos de características

FeatureSet es un identificador opaco: constrúyelo, modifícalo con Activate / Deactivate e instálalo con SetFeatureSet. Cierra los identificadores que crees.

// 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)
}
MétodoDescripción
litesvm.NewFeatureSet() (*FeatureSet, error)Conjunto vacío (todas las características inactivas)
litesvm.NewFeatureSetAllEnabled() (*FeatureSet, error)Todas las características activas
fs.Activate(featureID, slot) errorMarcar característica como activa en el slot
fs.Deactivate(featureID) errorMarcar característica como inactiva
fs.IsActive(featureID) boolVerificación de estado activo
fs.ActivatedSlot(featureID) (uint64, bool)Slot en el que se activó una característica
fs.ActiveCount() intNúmero de características activas
fs.InactiveCount() intNúmero de características inactivas
fs.ActiveFeatures() []solana.PublicKeyListar los IDs de características activas
fs.InactiveFeatures() []solana.PublicKeyListar los IDs de características inactivas
fs.Close()Liberar el identificador
svm.SetFeatureSet(*FeatureSet) errorInstalar en la SVM

Usa el control de características para probar cómo se comportan los programas bajo una versión específica de Solana: activa las características incluidas en la versión que tienes como objetivo y desactiva las que llegaron posteriormente.

Is this page helpful?