1个不稳定版本
0.1.0 | 2024年5月31日 |
---|
#1999 in 魔法豆
293 每月下载量
用于 8 crates
1MB
13K SLoC
linera-alloy-networks
Ethereum区块链RPC行为抽象。
此crate包含一个类似Ethereum的区块链的RPC行为的简单抽象。它旨在由Alloy客户端使用,为库的其余部分提供一致的接口,无论底层区块链如何更改RPC接口。
核心模型
此crate处理抽象RPC类型。它不处理实际的网络。核心模型如下
Transaction
- 定义EVM类似事务的抽象接口的特质。Network
- 定义特定区块链的RPC类型。提供者由一个Network
类型参数化,并使用关联类型来定义RPC方法的输入和输出类型。- 待办事项:更多!!!
用法
此crate不打算直接使用。它被linera-alloy-provider库和reth使用,以修改RPC方法的输入和输出类型。
此crate将主要用于区块链维护者添加定制的RPC类型到Alloy提供者。这是通过实现Network
特质,然后使用新的网络类型参数化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