1 unstable release
new 0.41.0 | Mar 11, 2025 |
---|
#189 in Magic Beans
50 downloads per month
Used in 2 crates
(via subxt)
250KB
4.5K
SLoC
subxt ·

Subxt is a library for interacting with Substrate based nodes in Rust and WebAssembly. It can:
- Submit Extrinsics (this is where the name comes from).
- Subscribe to blocks, reading the extrinsics and associated events from them.
- Read and iterate over storage values.
- Read constants and custom values from the metadata.
- Call runtime APIs, returning the results.
- Do all of the above via a safe, statically types interface or via a dynamic one when you need the flexibility.
- Compile to WASM and run entirely in the browser.
- Do a bunch of things in a
#[no_std]
environment via thesubxt-core
crate. - Use a built-in light client (
smoldot
) to interact with chains.
Usage
Take a look in the examples folder or the examples folder for various smaller or
larger subxt
usage examples, or read the guide to learn more.
Downloading metadata from a Substrate node
Use the subxt-cli
tool to download the metadata for your target runtime from a node.
- Install:
cargo install subxt-cli
- Save the encoded metadata to a file:
subxt metadata -f bytes > metadata.scale
This defaults to querying the metadata of a locally running node on the default http://localhost:9933/
. If querying
a different node then the metadata
command accepts a --url
argument.
Subxt Documentation
For more details regarding utilizing subxt, please visit the documentation.
Integration Testing
Most tests require a running substrate node to communicate with. This is done by spawning an instance of the
substrate node per test. It requires an up-to-date substrate
executable on your path.
This can be installed from source via cargo:
cargo install --git https://github.com/paritytech/polkadot-sdk staging-node-cli --force
Real world usage
Please add your project to this list via a PR.
- cargo-contract CLI for interacting with Wasm smart contracts.
- xcm-cli CLI for submitting XCM messages.
- phala-pherry The relayer between Phala blockchain and the off-chain Secure workers.
- crunch CLI to claim staking rewards in batch every Era or X hours for substrate-based chains.
- interbtc-clients Client implementations for the interBTC parachain; notably the Vault / Relayer and Oracle.
- tidext Tidechain client with Stronghold signer.
- staking-miner-v2 Submit NPos election solutions and get rewards.
- polkadot-introspector Tools for monitoring Polkadot nodes.
- ink! Smart contract language that uses
subxt
for allowing developers to conduct End-to-End testing of their contracts. - Chainflip A decentralised exchange for native cross-chain swaps.
- Hyperbridge A hyperscalable coprocessor for verifiable cross-chain interoperability.
- pop CLI The all-in-one tool for Polkadot development.
Alternatives
substrate-api-client provides similar functionality.
License
The entire code within this repository is dual licensed under the GPL-3.0 or Apache-2.0 licenses. See the LICENSE file for more details.
Please contact us if you have questions about the licensing of our products.
lib.rs
:
This crate provides a low level RPC interface to Substrate based nodes.
See the client
module for a client::RpcClient
which is driven by implementations
of client::RpcClientT
(several of which are provided behind feature flags).
See the methods
module for structs which implement sets of concrete RPC calls for
communicating with Substrate based nodes. These structs are all driven by a client::RpcClient
.
The RPC clients/methods here are made use of in subxt
. Enabling the subxt
feature flag ensures
that all Subxt configurations are also valid RPC configurations.
The provided RPC client implementations can be used natively (with the default native
feature
flag) or in WASM based web apps (with the web
feature flag).
Dependencies
~7–26MB
~433K SLoC