ethers.js 是用于与以太坊交互的完整且紧凑的库,适用于 dapp、钱包和脚本。本技能基于 ethers.js v6.16.0,官方文档见 https://docs.ethers.org/v6/。
用途:覆盖与以太坊交互的核心流程。主要能力分几个方面。Provider、Signer、Contract:读写分离,BrowserProvider、JsonRpcProvider 与连接方式。单位与格式化:parseEther、parseUnits、formatEther、formatUnits。ABI:人类可读 ABI、Fragment、编码、事件主题与数据。钱包:Wallet、HDNodeWallet、助记词、用于测试的 id()。交易与回执:sendTransaction、wait、getBlockNumber、getFeeData、getTransactionCount。数据与十六进制工具:getBytes、toBeHex、ZeroAddress、ZeroHash、encodeBytes32String、solidityPacked。地址:getAddress、isAddress、isAddressable、校验和。哈希:keccak256、id(string),用于选择器和测试。
合约与签名方面包括:合约创建、view/pure、状态变更、staticCall、事件、queryFilter;签名 signMessage、verifyMessage、Signature、EIP-191、EIP-712;ENS 的 resolveName、getResolver、getAddress、getText 与文本记录;React Native 通过 react-native-quick-crypto 注册以提升性能;Provider 选项 getDefaultProvider、JsonRpcProvider staticNetwork、broadcastTransaction;合约部署使用 ContractFactory、bytecode、deploy()、waitForDeployment、fromSolidity;EIP-712 类型化数据使用 signTypedData、verifyTypedData、TypedDataEncoder。
使用方式与最佳实践:按读写职责分离组织代码,处理回滚交易、receipt.status、CALL_EXCEPTION 与 provider 错误。迁移方面,v5→v6 涉及 BigInt、Provider/Contract/Signature 及 utils 重命名。
限制:资料未提供具体定价、收费或运行环境要求等细节,暂未提供。