$ show anza-xyz/mollusk
Mollusk is a lightweight test harness for Solana programs, designed to execute program ELFs in a minified Solana Virtual Machine (SVM) without a full validator runtime. It provisions Agave's program cache, transaction context, and invoke context directly, enabling fast, deterministic testing of single instructions, instruction chains, and full transactions. The repository is organized as a Cargo workspace with core harness logic (mollusk-svm), a result validation crate (mollusk-svm-result), a benchmarking crate (mollusk-svm-bencher), a CLI tool (mollusk-svm-cli), fuzz fixture infrastructure, and bundled SPL program helpers (memo, token, token-2022). Key architectural patterns include a pluggable AccountStore trait for stateful testing, a flexible Check builder for result validation, and a Compare enum for cross-version execution comparison. The CLI supports fixture replay, benchmarking, and generating compute unit reports. The harness also supports fuzz fixture generation (both Mollusk and Firedancer formats) via protobuf schemas, enabling regression testing and cross-implementation comparison. While primarily a testing library, the inclusion of fuzz fixture infrastructure and benchmarking tools gives it a hybrid character similar to data research pipelines for test generation and analysis.
The LLM identified 2 files worth highlighting for reuse:
Implements the `Check` builder for validating `InstructionResult` fields such as account data, lamports, owner, compute units, return data, and inner instructions. It is self-contained within the mollusk-svm-result crate, requiring only the result types, and can be extracted for use in any SVM test framework. The builder pattern allows composable, readable assertions and supports custom `CheckContext` for extended validation.
Defines the `Compare` enum for comparing two `InstructionResult` instances, with configurable account field checks (lamports, data, owner, etc.) and a `everything()` variant. It encapsulates a common testing needβdiffing execution results across program versionsβand can be reused independently of Mollusk. The enum design is clean and extensible, supporting both partial and comprehensive comparison.