8 个版本

0.2.1 2024 年 8 月 2 日
0.2.0 2024 年 7 月 16 日
0.1.5 2024 年 7 月 16 日
0.1.3 2024 年 6 月 25 日
0.0.0-预留2024 年 5 月 23 日

#alloy 中排名 12

Download history 71/week @ 2024-05-19 4/week @ 2024-05-26 5/week @ 2024-06-02 3/week @ 2024-06-09 4334/week @ 2024-06-16 7188/week @ 2024-06-23 7031/week @ 2024-06-30 9245/week @ 2024-07-07 11719/week @ 2024-07-14 12319/week @ 2024-07-21 13332/week @ 2024-07-28 16627/week @ 2024-08-04 17863/week @ 2024-08-11 15084/week @ 2024-08-18

每月下载 63,637
49 个 crate(11 个直接)中使用

MIT/Apache

1.5MB
15K SLoC

alloy-networks

Ethereum 区块链 RPC 行为抽象。

该 crate 包含了类似以太坊区块链的 RPC 行为的简单抽象。它旨在被 Alloy 客户端使用,为库的其余部分提供一个一致的接口,无论底层区块链如何更改 RPC 接口。

核心模型

该 crate 处理抽象 RPC 类型。它不处理实际的联网。核心模型如下

  • Transaction - 定义 EVM 类似交易抽象接口的 trait。
  • Network - 定义给定区块链的 RPC 类型。提供者由 Network 类型参数化,并使用关联类型来定义 RPC 方法的输入和输出类型。
  • TODO: 更多!!!

用法

该 crate 不建议直接使用。它被 alloy-provider 库和 reth 使用来修改 RPC 方法的输入和输出类型。

该 crate 将主要被区块链维护者使用,以向 Alloy 提供程序添加定制的 RPC 类型。这是通过实现 Network trait 并使用新的网络类型参数化 Provider 类型来完成的。

例如,要添加一个名为 Foo 的新网络

// Foo must be a ZST. It is a compile error to use a non-ZST type.
struct Foo;

impl Network for Foo {
    type Transaction = FooTransaction;
    type Block = FooBlock;
    type Header = FooHeader;
    type Receipt = FooReceipt;

    // etc.
}

用户可以实例化一个 Provider<Foo> 并像往常一样使用它。这允许用户使用相同的 API 来访问所有网络,而不管底层的 RPC 类型如何。

注意:如果您还需要添加自定义的方法到您的网络中,您应该为Provider<N>创建一个扩展特征,如下所示

#[async_trait]
trait FooProviderExt: Provider<Foo> {
    async fn custom_foo_method(&self) -> RpcResult<Something, TransportError>;

    async fn another_custom_method(&self) -> RpcResult<Something, TransportError>;
}

依赖项

~21MB
~519K SLoC