8 个版本
0.2.1 | 2024 年 8 月 2 日 |
---|---|
0.2.0 | 2024 年 7 月 16 日 |
0.1.5 |
|
0.1.3 | 2024 年 6 月 25 日 |
0.0.0-预留 | 2024 年 5 月 23 日 |
在 #alloy 中排名 12
每月下载 63,637 次
在 49 个 crate(11 个直接)中使用
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