viem
以 TypeScript ABI 类型推导和 Public Client 为核心的 Ethereum 开发库;适合核对单次与批量只读结果、逐项失败及模拟请求的身份和状态边界。
官方资料核验
访问官方入口 ↗https://viem.sh/
适合做什么
- 检查 readContract ABI与区块范围
- 解读 multicall success/failure与字节批次
- 核对 simulateContract sender/value/覆盖状态
- 解析自定义错误并拆开结果与待执行请求
- 网络与生态
- Ethereum
- 登录与钱包权限
- 文档公开,已有项目按自身 viem 锁定包版本/ABI使用。createPublicClient + Transport 做公开读取,不必建立钱包客户端;不传HTTP URL可回落公共RPC,生产文档推荐自有服务URL,认证/额度另查。固定官方main源码只说明该commit,不证明已安装release。
- 费用
- readContract、multicall、simulateContract 是读取/模拟,不发送交易或产生链上执行Gas;RPC服务仍可收费/限流,批量有望减少请求/CU但没有账单节省保证。模拟里的value/fee字段不是已付款或实际交易费。
局限与核对事项
- 只列已读Ethereum主网示例,非链配置全集、所有RPC兼容或实时部署保证;Multicall3历史部署和EIP1898支持需另核。
- 当前网页部分类型/返回表与示例有冲突;按项目锁定版本与对应源码确定,不把固定main commit当npm当前release。
- multicall默认允许逐项失败,失败result undefined不是0;batchSize以编码字节计,不是调用数。
- stateOverride/override批准仅模拟状态;request是待执行参数,模拟成功既不是交易已发送,也不是以后一定执行成功。
- 账户、ABI、块标签、缓存/CCIP查找和transport影响结果范围;地址型sender不证明持有私钥或已授权。