8 个版本
0.2.2 | 2023 年 8 月 25 日 |
---|---|
0.2.1 | 2023 年 8 月 22 日 |
0.2.0 | 2023 年 5 月 17 日 |
0.1.6 | 2023 年 2 月 21 日 |
0.1.3 | 2023 年 1 月 11 日 |
#90 在 神奇豆子
每月下载 67 次
1MB
7K SLoC
ethportal-api
警告! 此软件包为实验性!不要在生产环境中依赖它。
此软件包包含使用 jsonrpsee 框架为各种门户网络 JSON-RPC API 提供定义。
客户端使用示例
启用 client
功能的 ethportal-api
软件包。
use ethportal_api::jsonrpsee::http_client::HttpClientBuilder;
use ethportal_api::{
HistoryContentValue, HistoryContentKey, HistoryNetworkApiClient, Web3ApiClient,
};
#[tokio::main]
async fn main() {
// Connect to a local node JSON-RPC
let client = HttpClientBuilder::default()
.build("http://localhost:8545")
.unwrap();
// Call web3_clientVersion endpoint
let client_version = client.client_version().await.unwrap();
println!("Current client version is {client_version}");
let content_key_json =
r#""0x00cb5cab7266694daa0d28cbf40496c08dd30bf732c41e0455e7ad389c10d79f4f""#;
let content_item_json = r#""0x0800000022020000f90217a08e38b4dbf6b11fcc3b9dee84fb7986e29ca0a02cecd8977c161ff7333329681ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942a65aca4d5fc5b5c859090a6c34d164135398226a07dd4aabb93795feba9866821c0c7d6a992eda7fbdd412ea0f715059f9654ef23a0c61c50a0a2800ddc5e9984af4e6668de96aee1584179b3141f458ffa7d4ecec6a0b873ddefdb56d448343d13b188241a4919b2de10cccea2ea573acf8dbc839befb9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000860b6b4bbd735f830f4241832fefd88252088456bfb41a98d783010303844765746887676f312e352e31856c696e7578a0d5332614a151dd917b84fc5ff62580d7099edb7c37e0ac843d873de978d50352889112b8c2b377fbe801c971eaaa41600563000000000000000000000000000000000000000000000000629f9dbe275316ef21073133b8ecec062a44e20201be7b24a22c56db91df336f0c71aaaec1b3526027a54b15387ef014fcd18bb46e90e05657b46418fd326e785392c40ec6d38f000042798fee52ed833ff376b1d5a95dc7c2356dc8d8d02e30b704e9ee8e4d712920a18fd4e8833a7979a14e5b972d4b27958dcfa5187e3aa14d61c29c3fda0fb425078a0479c5ea375ff95ad7780d0cdc87012009fd4a3dd003b06c7a28d6188e6be50ac544548cc7e3ee6cd07a8129f5c6d4d494b62ee8d96d26d0875bc87b56be0bf3e45846c0e3773abfccc239fdab29640b4e2aef297efcc6cb89b00a2566221cb4197ece3f66c24ea89969bd16265a74910aaf08d775116191117416b8799d0984f452a6fba19623442a7f199ef1627f1ae7295963a67db5534a292f98edbfb419ed85756abe76cd2d2bff8eb9b848b1e7b80b8274bbc469a36dce58b48ae57be6312bca843463ac45c54122a9f3fa9dca124b0fd50bce300708549c77b81b031278b9d193464f5e4b14769f6018055a457a577c508e811bcf55b297df3509f3db7e66ec68451e25acfbf935200e246f71e3c48240d00020000000000000000000000000000000000000000000000000000000000000""#;
// Deserialise to a portal history content key type from a hex string
let content_key: HistoryContentKey = serde_json::from_str(content_key_json).unwrap();
let content_item: HistoryContentValue = serde_json::from_str(content_item_json).unwrap();
// Store content to remote node, call portal_historyStore endpoint
let result: bool = client
.store(content_key.clone(), content_item.clone())
.await
.unwrap();
assert!(result);
// Call portal_historyLocalContent endpoint and deserialize to `HistoryContentValue::BlockHeaderWithProof` type
let result: HistoryContentValue = client.local_content(content_key).await.unwrap();
assert_eq!(result, content_item);
}
类型
在 types
模块中发布了各种类型。目前,如果类型 1) 被多个软件包使用,或 2) 是 ethportal-api 类型签名的一部分,则类型会放入此模块。重要的是,ethportal-api 不应该对工作空间中的其他软件包有依赖。目标是能够在不发布任何其他支持软件包的情况下发布 ethportal-api。
特别是在这个实验期间,类型可能会发生变化,因为其中许多类型在 trin 内部使用。当 ethportal-api 准备好用于生产时,类型将遵循语义版本控制:任何不兼容的更改都将通过增加主要版本号引入。
Trin 中使用的实用工具通常仍保存在 trin-utils 中,除非它们被 ethportal-api 使用。然后它们会发布到 ethportal-api 中,就像 hex 工具一样。
许可协议
本仓库中的所有代码均受 GNU 通用公共许可证 v3.0 许可。
依赖项
~32–50MB
~873K SLoC