4 个版本 (1 个稳定版)

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

#icp 中排名第 36

Download history 318/week @ 2024-06-24 4/week @ 2024-07-01 2/week @ 2024-07-08 123/week @ 2024-07-15 5/week @ 2024-07-22 15/week @ 2024-07-29

每月下载量 146

Apache-2.0

53KB
1K SLoC

为什么创建这个库

  • 当通过 EVM RPC 缸体与 IC 交互时,与 EVM 智能合约交互存在一些常见的模式,这些模式可以抽象给开发者,这有助于减少编写样板代码,并使与 EVM RPC 缸体的交互更加容易
  • 该库提供了一组类型和函数,可用于与 EVM 交互
    • evm_signer:一个模块,提供使用 t-ECDSA 签名消息的方法,并获取签名者的公钥和 EVM 地址
    • fees:一个模块,提供计算给定交易费用的方法
    • conversions:一些有用的函数,用于在 ethers crate 常用的不同类型之间进行转换
    • eth_call:一个模块,提供一种调用智能合约函数的方法,而不修改 EVM 的状态,这对于从 EVM 读取数据很有用,是通过调用 request EVM RPC 函数实现的
    • 包括基于 eth_callerc20_balance_of,用于获取 ERC20 令牌的余额
    • eth_send_raw_transaction:一个模块,提供向 EVM 发送已签名交易的方法,这对于修改 EVM 的状态很有用,是通过调用 send_raw_transaction EVM RPC 函数实现的
    • 包括基于 eth_send_raw_transactiontransfer_ethcontract_interaction 函数,用于发送 ETH 和与智能合约交互
    • request:一个模块,提供一种发出任意 RPC 请求的方法,包括确定请求的周期成本
    • request_costs:一个模块,提供一种计算给定 RPC 请求周期成本的方法

如何使用此库?

  • 本库中的方法依赖于EvmRpcCanister结构体来向EVM RPC canister进行跨canister调用,此结构体用于发起对EVM RPC Canister的调用
    • 您可以使用evm-rpc-canister-types crate来创建此结构体
  • 在您的Rust项目中导入此库
    [dependencies]
    ic-evm-utils= 0.1
    
  • 在需要的地方导入crate,并在必要时将EvmRpcCanister结构体传递给函数
    use ic_evm_utils::eth_send_raw_transaction::{contract_interaction, ContractDetails};
    // ...
    let status = contract_interaction(
        contract_details,
        gas,
        rpc_services,
        nonce,
        key_id,
        vec![],
        EVM_RPC, // EvmRpcCanister struct
    )
    .await;
    

依赖项

~18–33MB
~508K SLoC