#chain #light #json-rpc #blockchain #download #requests #smoldot

no-std smoldot-light

Substrate 基于区块链的轻客户端的浏览器绑定

15 个重大版本

0.16.2 2024年6月17日
0.15.0 2024年1月24日
0.13.0 2023年12月11日
0.12.0 2023年11月15日
0.2.0 2022年9月7日

#86 in #chain

Download history 23066/week @ 2024-05-04 28152/week @ 2024-05-11 23602/week @ 2024-05-18 34572/week @ 2024-05-25 30474/week @ 2024-06-01 23399/week @ 2024-06-08 25668/week @ 2024-06-15 31526/week @ 2024-06-22 25892/week @ 2024-06-29 26346/week @ 2024-07-06 34143/week @ 2024-07-13 34934/week @ 2024-07-20 30647/week @ 2024-07-27 34445/week @ 2024-08-03 45249/week @ 2024-08-10 31258/week @ 2024-08-17

147,461 每月下载量
24crate(2 直接)中使用

GPL-3.0-or-later…

4.5MB
79K SLoC

Smoldot 轻客户端库。

此库提供了一种创建轻客户端的简单方法。

此轻客户端对某些方面有明确观点:它下载的内容、它愿意消耗的内存和CPU等。

用法

初始化

为了使用轻客户端,请调用 Client::new,传递一个实现 platform::PlatformRef 特性的类型。有关 platform::PlatformRef 特性的更多信息,请参阅其文档。

Client 包含两个泛型参数

  • platform::PlatformRef 特性的实现。
  • 一个不透明的用户数据。如果您不使用它,您可以直接使用 ()

当此库的 std 功能启用时,可以使用 platform::DefaultPlatform 结构作为 platform::PlatformRef 的实现。

例如

use smoldot_light::{Client, platform::DefaultPlatform};
let client = Client::new(DefaultPlatform::new(env!("CARGO_PKG_NAME").into(), env!("CARGO_PKG_VERSION").into()));

如果禁用了此库的 std 功能,则需要手动实现 platform::PlatformRef 特性。

添加链

客户端初始化后,使用 Client::add_chain 请求客户端连接到该链。有关要提供的信息,请参阅 AddChainConfig 的文档。

Client::add_chain 返回一个 ChainId,用于在 Client 中识别链。可以将 Client 视为链连接的集合,每个连接由其 ChainId 识别,类似于一个 HashMap<ChainId, ...>

可以使用 Client::remove_chain 在任何时候移除链。这将导致客户端停止所有连接并清理其内部服务。调用该方法后,ChainId 立即被视为无效。

JSON-RPC 请求和响应

一旦添加了链,就可以使用 Client::json_rpc_request 发送 JSON-RPC 请求。

此函数的请求参数必须是一个文本形式的 JSON-RPC 请求。例如:{"id":53,"jsonrpc":"2.0","method":"system_name","params":[]}

调用 Client::json_rpc_request 将请求排队到客户端的内部。稍后,客户端将处理它。

可以通过调用在添加链之后返回的 AddChainSuccess::json_rpc_responses 来获取响应。

依赖项

~15–30MB
~496K SLoC