substrate-api-client
substrate-api-client a library written in Rust for connecting to the substrate's RPC interface via WebSockets allowing to
- Compose extrinsics, send them and subscribe to updates (synchronously).
- supports composing extrinsics for
no_std
builds - Watch events and execute code upon events.
- Parse and print the node metadata.
Prerequisites
In order to build the substrate-api-client and the examples, Rust and the wasm target are needed. For Linux:
curl https://sh.rustup.rs -sSf | sh
rustup default nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
For more information, please refer to the substrate repository.
Substrate node
To execute the examples, a running substrate node is needed. You can download our node artifact from our GitHub Actions CI, which can be found in the 'Actions' tab.
The unpacked node can be run with:
./node-template --dev
Tutorial
There is a detailed tutorial in the tutorials folder.
Examples
To run an example, clone the substrate-api-client
repository and run the desired example directly with the cargo command:
git clone https://github.com/scs/substrate-api-client.git
cd substrate-api-client
cargo run --example get_storage
Set the output verbosity by prepending RUST_LOG=info
or RUST_LOG=debug
.
The following examples can be found in the examples folder:
- compose_extrinsic_offline: Compose an extrinsic without interacting with the node.
- contract: Handle ink! contracts (put, create, and call). DEPRECATED!
- custom_storage_struct: Fetch and decode custom structs from the runtime. DEPRECATED!
- event_callback: Subscribe and react on events.
- generic_extrinsic: Compose an extrinsic for any call in any module by supplying the module and call name as strings.
- get_storage: Read storage values.
- print_metadata: Print the metadata of the node in a readable way.
- transfer: Transfer tokens by using a wrapper of compose_extrinsic
Alternatives
Parity offers a Rust client with similar functionality: https://github.com/paritytech/substrate-subxt
Acknowledgements
The development of substrate-api-client is financed by web3 foundation's grant programme.
We also thank the teams at
- Parity Technologies for building substrate and supporting us during development.