52 个版本 (25 个破坏性版本)
新版本 0.39.1 | 2024年8月9日 |
---|---|
0.38.1 | 2024年7月23日 |
0.35.0 | 2024年3月14日 |
0.34.0 | 2023年10月2日 |
0.15.0 | 2020年7月20日 |
#1087 在 魔法豆
每月下载量 38,720
用于 72 个crate(直接使用 21 个)
1.5MB
31K SLoC
查看仓库根目录以获取构建状态、许可证、Rust 版本等信息。
tendermint-rpc
tendermint-rpc 是 Tendermint 节点 RPC 端点返回的核心类型的 Rust 实现。这些类型可用于反序列化 JSON-RPC 响应。
所有网络相关功能都将进行特性保护,以保持依赖项较小,以便在只需要核心类型的情况下。
文档
请参阅 crates.io 上的文档。
客户端
此 crate 可选提供不同类型的 RPC 客户端功能以及基于使用时选择的特性不同而不同的客户端传输。
目前提供了几个与客户端相关的功能。
http-client
- 提供了HttpClient
,这是一个基本的 RPC 客户端,通过 HTTP 或 HTTPS 的 JSON-RPC 与远程 Tendermint 节点交互。此客户端不提供Event
订阅功能。有关详细信息,请参阅 Tendermint RPC。websocket-client
- 提供了WebSocketClient
,它提供了完整的客户端功能,包括通用 RPC 功能以及Event
订阅功能。可以通过安全 (wss://
) 和不安全 (ws://
) 连接使用。
命令行界面 (CLI)
提供了一个用于测试/实验的 tendermint-rpc
控制台应用程序。要构建此应用程序
# From the tendermint-rpc crate's directory
cd rpc
cargo build --bin tendermint-rpc --features cli
# To run directly and show usage information
cargo run --bin tendermint-rpc --features cli -- --help
# To install the binary to your Cargo binaries path
# (should be globally accessible)
cargo install --bin tendermint-rpc --features cli --path .
该应用程序将日志发送到 stderr,将输出发送到 stdout,因此可以相对容易地捕获 RPC 输出。
使用示例:(假设您已安装了二进制文件)
# Check which RPC commands/endpoints are supported.
tendermint-rpc --help
# Query the status of the Tendermint node bound to tcp://127.0.0.1:26657
tendermint-rpc status
# Submit a transaction to the key/value store ABCI app via a Tendermint node
# bound to tcp://127.0.0.1:26657
tendermint-rpc broadcast-tx-async somekey=somevalue
# Query the value associated with key "somekey" (still assuming a key/value
# store ABCI app)
tendermint-rpc abci-query somekey
# To use an HTTP/S proxy to access your RPC endpoint
tendermint-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
tendermint-rpc abci-query somekey
# Subscribe to receive new blocks (must use the WebSocket endpoint)
# Prints out all incoming events
tendermint-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
# TENDERMINT_RPC_URL environment variable
export TENDERMINT_RPC_URL=ws://127.0.0.1:26657/websocket
tendermint-rpc subscribe "tm.event='Tx'"
模拟客户端
当启用 http-client
或 websocket-client
中的任一功能时,将包括模拟客户端以帮助测试。这包括实现 Client
和 SubscriptionClient
特性的 MockClient
。
相关
-
在 golang 中关于 RPC 的 核心类型
-
RPC 端点 REST 接口文档:https://docs.tendermint.com/v0.34/rpc/
测试
通过 集成测试 直接测试 RPC 类型。这些测试使用从运行中的 Tendermint 节点中获取的固定值以确保兼容性,而无需在测试期间访问运行中的节点。所有这些固定值都是手动生成的,并且自动重新生成固定值在我们的路线图上 上。
要本地运行这些测试
# From within the rpc crate
cargo test --all-features
RPC 客户端也通过 Tendermint 集成测试 间接测试,这发生在 CI 期间。所有这些测试都需要运行中的 Tendermint 节点,因此默认情况下被忽略。要本地运行这些测试
# In one terminal, spin up a Tendermint node
docker pull tendermint/tendermint:latest
docker run -it --rm -v "/tmp/tendermint:/tendermint" \
tendermint/tendermint init
docker run -it --rm -v "/tmp/tendermint:/tendermint" \
-p 26657:26657 \
tendermint/tendermint node --proxy_app=kvstore
# In another terminal, run the ignored Tendermint tests to connect to the node
# running at tcp://127.0.0.1:26657
cd ../tendermint
cargo test --all-features -- --ignored
依赖关系
~8–21MB
~339K SLoC