Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

System modules

Stable's core protocol behavior lives in SDK modules such as x/bank, x/distribution, and x/staking. Fixed-address precompiles route Solidity calls into their native SDK handlers without duplicating the protocol logic in application contracts.

The three modules

ModulePrecompile addressPurpose
Bank0x0000…1003 (STABLE)Token transfers, balance accounting, allowance management, mint/burn for authorized contracts.
Distribution0x0000…0801Staking-reward claims, reward queries, withdraw-address management.
Staking0x0000…0800Delegation, undelegation, redelegation, validator queries.
System transactions0x0000…9999Guaranteed blockspace lane queries and protocol-emitted EVM events.

Each page above explains what the module does, when to use it, and where to find its ABI.

Why precompiles, not Solidity

Two reasons:

  • Gas efficiency. A precompile runs in the protocol's native execution path. An equivalent Solidity contract would re-implement the same logic with significantly higher gas cost.
  • Single source of truth. Staking, distribution, and token supply are protocol-level state. Exposing them through precompiles avoids maintaining a duplicate Solidity implementation that could drift from the SDK.

Authorization

Some precompile methods (mint, burn, protocol-level staking operations) require caller authorization. The x/precompile module maintains an on-chain whitelist, and calls from unregistered contracts revert. This keeps privileged operations governance-gated without blocking general EVM use of read/transfer methods.

Where to go next

  • Bank module: Understand token transfers, allowances, and the mint/burn authorization model.
  • Staking module: See how delegation and validator management reach the EVM.
  • System transactions: Learn how protocol-level events like unbonding completions surface as EVM logs.