1个不稳定版本

0.1.0 2024年5月31日

#1999 in 魔法豆

Download history 182/week @ 2024-05-27 111/week @ 2024-06-03 79/week @ 2024-06-10 90/week @ 2024-06-17 21/week @ 2024-06-24 76/week @ 2024-07-01 19/week @ 2024-07-08 86/week @ 2024-07-15 83/week @ 2024-07-22 104/week @ 2024-07-29

293 每月下载量
用于 8 crates

MIT/Apache

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