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 读取数据很有用,是通过调用request
EVM RPC 函数实现的- 包括基于
eth_call
的erc20_balance_of
,用于获取 ERC20 令牌的余额 eth_send_raw_transaction
:一个模块,提供向 EVM 发送已签名交易的方法,这对于修改 EVM 的状态很有用,是通过调用send_raw_transaction
EVM 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-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