5 个版本 (1 个稳定版)

1.0.0 2024年7月16日
0.1.3 2024年7月15日
0.1.2 2024年6月26日
0.1.1 2024年6月21日
0.1.0 2024年6月21日

#38#icp

Download history 189/week @ 2024-06-17 184/week @ 2024-06-24 10/week @ 2024-07-01 24/week @ 2024-07-08 311/week @ 2024-07-15 19/week @ 2024-07-22 51/week @ 2024-07-29

407 每月下载量
3 crates 中使用

Apache-2.0

43KB
1K SLoC

这个库是如何创建的?

  • 使用 didc 从 evm rpc canister did 文件生成 Rust 绑定
  • 为期望 cycles 的函数添加 call_with_payment128
  • 为类型添加 DebugClone 特性以提高便利性

如何使用这个库?

  • 确保您在本地上部署了 evm rpc canister 到其主网 ID (7hfb6-caaaa-aaaar-qadga-cai)
    "evm_rpc": {
      "type": "custom",
      "candid": "https://github.com/internet-computer-protocol/evm-rpc-canister/releases/latest/download/evm_rpc.did",
      "wasm": "https://github.com/internet-computer-protocol/evm-rpc-canister/releases/latest/download/evm_rpc.wasm.gz",
      "remote": {
        "id": {
          "ic": "7hfb6-caaaa-aaaar-qadga-cai"
        }
      },
      "specified_id": "7hfb6-caaaa-aaaar-qadga-cai",
      "init_arg": "(record { nodesInSubnet = 28 })"
    }
    
  • 如果您部署了自己的 evm rpc canister,可以使用 EvmRpcCanister 结构体使用您自己的 canister ID 初始化 canister
    pub const CANISTER_ID: Principal =
      Principal::from_slice(b"\x00\x00\x00\x00\x02\x30\x00\xCC\x01\x01"); // 7hfb6-caaaa-aaaar-qadga-cai
    pub const EVM_RPC: EvmRpcCanister = EvmRpcCanister(CANISTER_ID);
    
  • 在您的 Rust 项目中导入库
    [dependencies]
    evm_rpc_canister_types = 0.1
    
  • 在需要的地方导入 crate,例如
    use evm_rpc_canister_types::{
      BlockTag, GetBlockByNumberResult, GetLogsArgs, GetLogsResult, HttpOutcallError,
      MultiGetBlockByNumberResult, MultiGetLogsResult, RejectionCode, RpcError, EVM_RPC,
    };
    
  • EVM_RPC 结构体公开了 EVM RPC canister 接口,用于对其执行跨 canister 调用
    let (result,) = EVM_RPC
      .eth_get_block_by_number(rpc_providers, None, block_tag, cycles)
      .await
      .expect("Call failed");
    

依赖项

~8–21MB
~283K SLoC