Skip to content

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.

Tools (library/)

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