Smoldot light client library.
This library provides an easy way to create a light client.
This light client is opinionated towards certain aspects: what it downloads, how much memory and CPU it is willing to consume, etc.
Usage
Initialization
In order to use the light client, call [Client::new
], passing an implementation of the
[platform::PlatformRef
] trait. See the documentation of the [platform::PlatformRef
] trait
for more information.
The [Client
] contains two generic parameters:
- An implementation of the [
platform::PlatformRef
] trait. - An opaque user data. If you do not use this, you can simply use
()
.
When the std
feature of this library is enabled, the [platform::DefaultPlatform
] struct
can be used as an implementation of [platform::PlatformRef
].
For example:
use ;
let client = new;
# let _: = client; // Used in this example to infer the generic parameters of the Client
If the std
feature of this library is disabled, then you need to implement the
[platform::PlatformRef
] trait manually.
Adding a chain
After the client has been initialized, use [Client::add_chain
] to ask the client to connect
to said chain. See the documentation of [AddChainConfig
] for information about what to
provide.
[Client::add_chain
] returns a [ChainId
], which identifies the chain within the [Client
].
A [Client
] can be thought of as a collection of chain connections, each identified by their
[ChainId
], akin to a HashMap<ChainId, ...>
.
A chain can be removed at any time using [Client::remove_chain
]. This will cause the client
to stop all connections and clean up its internal services. The [ChainId
] is instantly
considered as invalid as soon as the method is called.
JSON-RPC requests and responses
Once a chain has been added, one can send JSON-RPC requests using [Client::json_rpc_request
].
The request parameter of this function must be a JSON-RPC request in its text form. For
example: {"id":53,"jsonrpc":"2.0","method":"system_name","params":[]}
.
Calling [Client::json_rpc_request
] queues the request in the internals of the client. Later,
the client will process it.
Responses can be pulled by calling the [AddChainSuccess::json_rpc_responses
] that is returned
after a chain has been added.