Crate Reference
This page lists every crate in the Soil workspace, grouped by directory and role.
Naming Conventions
| Prefix |
Layer |
Substrate equivalent |
Description |
subsoil |
Primitives |
sp-* |
Low-level types, traits, and cryptographic primitives |
topsoil |
Runtime framework |
frame-* |
FRAME system, macros, and runtime construction |
soil |
Client / node |
sc-* |
Node services: networking, consensus, RPC, storage |
plant-* |
Pallets |
pallet-* |
Modular on-chain logic |
Core Crates (main/)
Primitives (subsoil)
| Crate |
Description |
subsoil |
Core primitives: runtime types, traits, cryptographic types, storage abstractions, and the runtime API definitions |
subsoil-macros |
Procedural macros used by subsoil |
subsoil-crypto-hashing |
Standalone hashing functions (Blake2, Keccak, etc.) |
Runtime Framework (topsoil)
| Crate |
Description |
topsoil |
Convenience re-export crate (prelude) for building runtimes |
topsoil-core |
The FRAME system pallet and Config trait machinery |
topsoil-core-macros |
Procedural macros for topsoil-core |
topsoil-core-macros-derive |
Derive macros for topsoil-core |
topsoil-core-rpc-runtime-api |
Runtime API definitions for the system RPC |
topsoil-core-system-benchmarking |
Benchmarks for the system pallet |
topsoil-executive |
Block execution engine: initialization, dispatch, finalization |
topsoil-benchmarking |
Framework for writing pallet benchmarks |
topsoil-benchmarking-pallet-pov |
Proof-of-validity benchmarking utilities |
topsoil-try-runtime |
Try-runtime testing support |
Client Services (soil)
| Crate |
Description |
soil |
Top-level client prelude |
soil-cli |
Command-line interface framework and argument parsing |
soil-client |
Client implementation: execution, call dispatch, storage access |
soil-service |
Node builder: wires client, network, consensus, and RPC together |
soil-network |
Peer-to-peer networking (libp2p and litep2p backends) |
soil-consensus |
Common consensus utilities and the longest-chain rule |
soil-babe |
BABE consensus (slot-based block production with VRF) |
soil-aura |
Aura consensus (round-robin block production) |
soil-grandpa |
GRANDPA finality gadget |
soil-beefy |
BEEFY consensus protocol |
soil-pow |
Proof-of-Work consensus |
soil-manual-seal |
Manual and instant block sealing for development |
soil-txpool |
Transaction pool |
soil-rpc |
RPC server setup |
soil-offchain |
Offchain worker infrastructure |
soil-chain-spec |
Chain specification loading and serialization |
soil-chain-spec-macros |
Macros for chain specification construction |
soil-telemetry |
Telemetry reporting |
soil-prometheus |
Prometheus metrics |
soil-fork-tree |
Fork-aware tree data structure |
soil-runtime-utilities |
Utilities shared between runtime and client |
soil-statement-store |
Off-chain statement storage |
soil-sync-state-rpc |
RPC for sync state queries |
soil-transaction-storage-proof |
Transaction storage proofs |
soil-mmr-gadget |
Merkle Mountain Range off-chain gadget |
Pallets (runtime/)
These pallets ship with the framework and cover essential blockchain functionality:
| Crate |
Description |
plant-balances |
Account balances and currency |
plant-assets |
Fungible asset management |
plant-asset-conversion |
DEX / asset swap logic |
plant-asset-conversion-ops |
Asset conversion operations |
plant-asset-conversion-tx-payment |
Pay transaction fees via asset conversion |
plant-asset-tx-payment |
Pay transaction fees with arbitrary assets |
plant-transaction-payment |
Transaction fee calculation and payment |
plant-staking |
Nominated proof-of-stake |
plant-staking-macros |
Macros for staking pallet |
plant-session |
Session key management and rotation |
plant-aura |
Aura consensus hooks |
plant-babe |
BABE consensus hooks |
plant-grandpa |
GRANDPA authority tracking |
plant-beefy |
BEEFY authority tracking |
plant-beefy-mmr |
BEEFY + Merkle Mountain Range integration |
plant-authority-discovery |
Authority discovery via DHT |
plant-authorship |
Block author tracking |
plant-bags-list |
Bags-list data structure for staking |
plant-collective |
Collective decision-making (councils) |
plant-election-provider |
Election provider traits and types |
plant-election-provider-macros |
Macros for election provider |
plant-im-online |
Heartbeat protocol for validator liveness |
plant-metadata-hash-extension |
Metadata hash transaction extension |
plant-mmr |
On-chain Merkle Mountain Range |
plant-offences |
Offence reporting and handling |
plant-sassafras |
Sassafras consensus protocol |
plant-timestamp |
On-chain timestamp |
plant-transaction-storage |
On-chain transaction storage |
plant-utility |
Batch and utility dispatches |
Optional Pallets (contrib/)
These are maintained within the repository but are not required by the core framework. A partial listing of notable crates:
| Crate |
Description |
plant-democracy |
Democratic governance |
plant-referenda |
Referendum-based governance |
plant-treasury |
On-chain treasury |
plant-bounties |
Bounty proposals |
plant-identity |
On-chain identity registration |
plant-nfts |
Non-fungible token management |
plant-nomination-pools |
Staking nomination pools |
plant-sudo |
Superuser access |
plant-multisig |
Multi-signature dispatch |
plant-proxy |
Account proxying |
plant-vesting |
Token vesting schedules |
plant-scheduler |
Scheduled dispatch |
plant-preimage |
Preimage storage for governance |
plant-examples |
Example pallets for learning |
See the contrib/ directory for the complete list.
| Crate |
Description |
subkey |
Command-line key management and signing |
substrate-wasm-builder |
Build script helper for compiling runtimes to Wasm |
substrate-build-script-utils |
Build script utilities |
substrate-frame-rpc-system |
System RPC methods |
substrate-frame-rpc-support |
RPC support utilities |
frame-remote-externalities |
Fetch live chain state for testing |
generate-bags |
Generate bags-list thresholds |
node-template-release |
Release tooling for node templates |
Test Crates (harness/)
| Crate |
Description |
soil-test |
Core test utilities |
soil-test-runtime |
Minimal mock runtime for tests |
soil-test-node-runtime |
Test node runtime with full pallet set |
soil-test-node-client |
Test client builder |
soil-test-node-runtime-client |
Pre-configured test client |
soil-test-node-runtime-txpool |
Transaction pool tests |
soil-test-fuzz |
Fuzzing harness |
topsoil-test-support |
FRAME test utilities |
plant-test-* |
Per-pallet test crates |