SuperAPI AI 工具集

evm-rpc

编程与开发

查看项目

更新于 10-16 05:05

技能介绍

用途:让 IC canister(Rust)通过 EVM RPC canister 代理 JSON-RPC 调用,访问以太坊及 EVM 兼容链。请求发往 EVM RPC canister,由其分发至多个 RPC 提供者、比对响应达成共识后返回。默认提供者无需 API key,也无需跨链桥或预言机。

主要能力:支持类型化 API 与原始 JSON-RPC;支持 Ethereum Mainnet(1)、Sepolia(11155111)、Arbitrum One(42161)、Base(8453)、Optimism(10) 及自定义 EVM 链;内置 Alchemy、Ankr、BlockPi、Cloudflare、LlamaNodes、PublicNode 等提供者;提供 requestCost 预估费用;主网已部署于 7hfb6-caaaa-aaaar-qadga-cai。

使用方式:依赖 evm_rpc_client、evm_rpc_types、ic-canister-runtime、ic-cdk、candid、serde_json。客户端构建时可设 .with_rpc_sources(RpcServices::EthMainnet(None))、.with_consensus_strategy(ConsensusStrategy::Threshold { total: Some(3), min: 2 })。调用示例如 get_eth_balance、get_latest_block、get_erc20_balance、send_raw_transaction、get_transaction_receipt。本地用 icp network start -d 与 icp deploy -e local 部署自建副本;主网 icp deploy -e ic 只部署 backend,勿自建 evm_rpc 实例。

限制与注意:每次调用需附加 cycles,默认 10B,可先用 requestCost 估算,典型 100M-1B cycles;默认 Equality 共识对 eth_getBlockByNumber(Latest) 等易失败,建议阈值共识;需处理 MultiRpcResult::Inconsistent;大响应需 .with_response_size_estimate();不能签名交易,须自行签名后传原始字节;勿手写 Candid 类型以免解码陷阱。测试可用 icp canister call evm_rpc 查询余额、区块、回执与 getProviders。