1 个不稳定版本
0.1.0-alpha.2 | 2024 年 1 月 27 日 |
---|
#2964 in 神奇豆子
在 3 crate 中使用
1.5MB
34K SLoC
查看 仓库根目录 以获取构建状态、许可证、Rust 版本等信息。
cometbft-rpc
CometBFT 节点 RPC 端点返回的核心类型的 Rust 实现。这些类型可以用于反序列化 JSON-RPC 响应。
所有与网络相关的功能都将进行特性保护,以保持依赖关系较小,在只需要核心类型时。
文档
请参阅 crates.io 上的文档。
客户端
此 crate 可选地提供访问不同类型的 RPC 客户端功能,以及基于您使用时选择的特性不同而提供的不同客户端传输。
目前提供了几个与客户端相关的特性
http-client
- 提供HttpClient
,这是一个基本的 RPC 客户端,通过 JSON-RPC over HTTP 或 HTTPS 与远程 CometBFT 节点交互。此客户端不提供Event
订阅功能。有关详细信息,请参阅 CometBFT RPC。websocket-client
- 提供了WebSocketClient
,它提供了完整的客户端功能,包括通用RPC功能以及Event
订阅功能。支持通过安全(wss://
)和不安全(ws://
)连接使用。
命令行界面(CLI)
为了测试/实验目的,提供了一个 cometbft-rpc
控制台应用程序。要构建此应用程序
# From the cometbft-rpc crate's directory
cd rpc
cargo build --bin cometbft-rpc --features cli
# To run directly and show usage information
cargo run --bin cometbft-rpc --features cli -- --help
# To install the binary to your Cargo binaries path
# (should be globally accessible)
cargo install --bin cometbft-rpc --features cli --path .
应用程序将日志发送到 stderr,将输出发送到 stdout,因此捕获RPC输出相对容易。
使用示例:(假设你已经安装了二进制文件)
# Check which RPC commands/endpoints are supported.
cometbft-rpc --help
# Query the status of the CometBFT node bound to tcp://127.0.0.1:26657
cometbft-rpc status
# Submit a transaction to the key/value store ABCI app via a CometBFT node
# bound to tcp://127.0.0.1:26657
cometbft-rpc broadcast-tx-async somekey=somevalue
# Query the value associated with key "somekey" (still assuming a key/value
# store ABCI app)
cometbft-rpc abci-query somekey
# To use an HTTP/S proxy to access your RPC endpoint
cometbft-rpc --proxy-url http://yourproxy:8080 abci-query somekey
# To set your HTTP/S proxy for multiple subsequent queries
export HTTP_PROXY=http://yourproxy:8080
cometbft-rpc abci-query somekey
# Subscribe to receive new blocks (must use the WebSocket endpoint)
# Prints out all incoming events
cometbft-rpc -u ws://127.0.0.1:26657/websocket subscribe "tm.event='NewBlock'"
# If you want to execute a number of queries against a specific endpoint and
# don't feel like re-typing the URL over and over again, just set the
# COMETBFT_RPC_URL environment variable
export COMETBFT_RPC_URL=ws://127.0.0.1:26657/websocket
cometbft-rpc subscribe "tm.event='Tx'"
模拟客户端
当启用 http-client
或 websocket-client
中的任一功能时,将包括模拟客户端以帮助测试。这包括 MockClient
,它实现了 Client
和 SubscriptionClient
特性。
相关
-
在 golang 中关于 RPC 的核心类型 core types
-
RPC 端点 REST 接口文档:https://docs.cometbft.com/v1/rpc/
测试
RPC 类型通过 集成测试 直接进行测试。这些测试使用从运行中的 CometBFT 节点获取的固定装置来确保兼容性,无需在测试期间访问运行中的节点。所有这些固定装置都是手动生成的,自动重新生成固定装置的计划在 我们的路线图 上。
要本地运行这些测试
# From within the rpc crate
cargo test --all-features
RPC 客户端还通过在 CometBFT 集成测试 中间接进行测试,这发生在 CI 期间。所有这些测试都需要一个运行中的 CometBFT 节点,因此默认情况下被忽略。要本地运行这些测试
# In one terminal, spin up a CometBFT node
docker pull cometbft/cometbft:latest
docker run -it --rm -v "/tmp/cometbft:/cometbft" \
cometbft/cometbft init
docker run -it --rm -v "/tmp/cometbft:/cometbft" \
-p 26657:26657 \
cometbft/cometbft node --proxy_app=kvstore
# In another terminal, run the ignored CometBFT tests to connect to the node
# running at tcp://127.0.0.1:26657
cd ../cometbft
cargo test --all-features -- --ignored
依赖项
~7–20MB
~322K SLoC