# How was this library created? - used `didc` to generate the rust bindings from the evm rpc canister did file - added `call_with_payment128` to functions that expect cycles - derive `Debug` and `Clone` trait for types for convenience # How to use this library? - make sure you deploy the evm rpc canister to its mainnet id locally (`7hfb6-caaaa-aaaar-qadga-cai`) ```json "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 })" } ``` - if you deploy your own evm rpc canister, you can use the `EvmRpcCanister` struct to initiate the canister with your own canister id ```rust 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); ``` - import the libary in your rust project ```toml [dependencies] evm_rpc_canister_types = 0.1 ``` - import the crate where needed, e.g. ```rust use evm_rpc_canister_types::{ BlockTag, GetBlockByNumberResult, GetLogsArgs, GetLogsResult, HttpOutcallError, MultiGetBlockByNumberResult, MultiGetLogsResult, RejectionCode, RpcError, EVM_RPC, }; ``` - the `EVM_RPC` struct exposes the EVM RPC canisters interface and is used to make inter canister calls to it ```rust let (result,) = EVM_RPC .eth_get_block_by_number(rpc_providers, None, block_tag, cycles) .await .expect("Call failed"); ```