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
每月下载量 146 次
53KB
1K SLoC
为什么创建这个库
- 当通过 EVM RPC 缸体与 IC 交互时,与 EVM 智能合约交互存在一些常见的模式,这些模式可以抽象给开发者,这有助于减少编写样板代码,并使与 EVM RPC 缸体的交互更加容易
- 该库提供了一组类型和函数,可用于与 EVM 交互
evm_signer:一个模块,提供使用 t-ECDSA 签名消息的方法,并获取签名者的公钥和 EVM 地址fees:一个模块,提供计算给定交易费用的方法conversions:一些有用的函数,用于在 ethers crate 常用的不同类型之间进行转换eth_call:一个模块,提供一种调用智能合约函数的方法,而不修改 EVM 的状态,这对于从 EVM 读取数据很有用,是通过调用requestEVM RPC 函数实现的- 包括基于
eth_call的erc20_balance_of,用于获取 ERC20 令牌的余额 eth_send_raw_transaction:一个模块,提供向 EVM 发送已签名交易的方法,这对于修改 EVM 的状态很有用,是通过调用send_raw_transactionEVM RPC 函数实现的- 包括基于
eth_send_raw_transaction的transfer_eth和contract_interaction函数,用于发送 ETH 和与智能合约交互 request:一个模块,提供一种发出任意 RPC 请求的方法,包括确定请求的周期成本request_costs:一个模块,提供一种计算给定 RPC 请求周期成本的方法
如何使用此库?
- 本库中的方法依赖于
EvmRpcCanister结构体来向EVM RPC canister进行跨canister调用,此结构体用于发起对EVM RPC Canister的调用- 您可以使用
evm-rpc-canister-typescrate来创建此结构体
- 您可以使用
- 在您的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