open-runtime-module-library
The Open Runtime Module Library (ORML) is a community maintained collection of Substrate runtime modules.
Runtime Modules Overview
Utility
- auction
- Implements a generalized auction interface, used by Acala for liquidation auctions.
- authority
- Allow more advanced permission configuration such as timelock for governance actions.
- gradually-update
- Provides way to adjust numeric parameter gradually over a period of time.
- oracle
- Allow offchain oracle providers to feed data to be consumed by onchain pallets.
- rewards
- Implements ability to calculate and distribute token staking rewards.
- traits
- Implements various utility traits including BasicCurrency, MultiCurrency, Auction and more. Used by other ORML pallets.
Tokens
- asset-registry
- Register asset / token metadata including name, decimals, and XCM MultiLocation
- Partially based on the Acala’s asset-registry pallet, which includes some Acala specific code (e.g. EVM+) so not suitable for other teams.
- currencies
- Provide an unified interface to combine pallet-balances and orml-tokens
- nft
- Provide a non-fungible-token implementation
- payments
- This pallet allows users to create secure reversible payments that keep funds locked in a merchant’s account until the off-chain goods are confirmed to be received. Each payment gets assigned its own judge that can help resolve any disputes between the two parties.
- tokens
- Implements fungible tokens pallet with compatibility with Substrate tokens abstractions
- vesting
- Provides scheduled balance locking mechanism, in a graded vesting way.
XCM
- xcm-support
- Provides supporting traits, types and implementations, to support cross-chain message(XCM) integration with ORML modules.
- xcm
- Provides a way for governance body to dispatch XCM.
- xtokens
- Provide crosschain token transfer functionality.
- Used by multiple parachains for their XCM token transfer implementation.
Benchmarking
- bencher
- Benchmarking tool using cargo bench for benchmarking
- benchmarking
- Fork of frame-benchmarking in Substrate to allow implement runtime specific benchmarks
- weight-gen
- Weight meter file generation
- weight-meter
- A low overhead dynamic weight meter
Example
Checkout orml-workshop for example usage.
Development
Makefile targets
make check
- Type check the code, without std feature, excluding tests.
make check-tests
- Type check the code, with std feature, including tests.
make test
Cargo.toml
ORML use Cargo.dev.toml
to avoid workspace conflicts with project cargo config. To use cargo commands in ORML workspace, create Cargo.toml
by running
cp Cargo.dev.toml Cargo.toml
, or
make Cargo.toml
, or
- change the command to
make dev-check
etc which does the copy. (For the full list of make
commands, check Makefile
)
Web3 Foundation Grant Project
ORML is part of the bigger Open-Web3-Stack
initiative, that is currently under a General Grant from Web3 Foundation. See Application details here. The 1st milestone has been delivered.
Projects using ORML
In alphabetical order