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.
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.
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
There is a detailed tutorial in the tutorials folder.
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 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:
- example_compose_extrinsic_offline: Compose an extrinsic without interacting with the node.
- example_contract: Handle ink! contracts (put, create, and call). DEPRECATED!
- example_custom_storage_struct: Fetch and decode custom structs from the runtime. DEPRECATED!
- example_event_callback: Subscribe and react on events.
- example_generic_extrinsic: Compose an extrinsic for any call in any module by supplying the module and call name as strings.
- example_get_storage: Read storage values.
- example_print_metadata: Print the metadata of the node in a readable way.
- example_transfer: Transfer tokens by using a wrapper of compose_extrinsic
Parity offers a Rust client with similar functionality: https://github.com/paritytech/substrate-subxt
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.