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神奇豆子

Download history 41/week @ 2024-03-15 42/week @ 2024-03-29 11/week @ 2024-04-05

每月下载 67

GPL-3.0 许可证

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