Smoldot Swift

一个用于 smoldot 基于 Rust 的 Polkadot 轻客户端的 Swift 封装。

安装

将软件包声明添加到您的项目的 manifest dependencies 数组中

.package(url: "https://github.com/finsig/smoldot-swift.git", from: "0.1.0")

用法

必须提供链规范文件来初始化链。 链规范是一个 JSON 对象,它描述了基于 Polkadot 的区块链网络。

Polkadot、Kusama、Rococo 和 Westend 的链规范 JSON 示例文件可以从 /Tests/SmoldotSwiftTests/Resources 复制以供使用。

从规范文件初始化链

var chain = Chain(specificationFile: {Resource file URL})

将链添加到客户端以连接到网络

try Client.shared.add(chain: &chain)

RPC 请求必须符合 JSON-RPC 2.0 协议。 可以通过编程方式构建请求

let request = try JSONRPC2Request(method: "chain_getHeader", identifier: .int(1))

或从 JSON 数据格式的字符串初始化

let request = try JSONRPC2Request(string: "{\"id\":1,\"jsonrpc\":\"2.0\",\"method\":\"chain_getHeader\",\"params\":[]}")

要发送请求,请使用

try Client.shared.send(request: request, to: chain)

要等待响应,请使用

try await Client.shared.response(from: chain)

或者,可以使用以下方式读取异步响应流

try await Client.shared.responses(from: chain)

要断开客户端与网络的连接,请使用

try Client.shared.remove(chain: &chain)

有关使用方法的更多信息,请参阅 参考文档

日志记录

您可以在运行时使用环境变量 (RUST_LOG) 启用 smoldot Rust FFI 库的日志记录。 该库使用 Rust 的 env_logger 框架,可以相应地设置级别。

本地构建

仓库中有一个 build_xcframework.sh 脚本,可用于从 smoldot Rust FFI 库构建 XCode Framework 目标。

$ zsh build_xcframework.sh dev

省略 dev 参数将修改包设置以使用远程二进制目标,并创建一个压缩的框架文件(以及校验和值)。

测试

除了单元测试外,请参阅此 项目 以进行内存使用情况分析。

Bug 报告

有关日志噪声,请参阅 GitHub issues