@w3lib/evm-batch-call demo

EVM / Tron 批量查询:所有合约读取经 Multicall3 合并,下面每次查询都会显示实际发出的节点请求数。

设置

未连接(只读查询不需要钱包)

不填时:已连接的钱包正好在当前这条链上,就先用钱包的节点(只读请求,不会弹窗),出错再换内置公共节点;否则直接用内置公共节点。内置公共节点限频较严,偶尔失败时库会自动换节点;频繁使用请填自己的节点。设置保存在本地浏览器。

余额getBalances:主币 + 代币,一次 multicall

代币信息getTokens:name / symbol / decimals / totalSupply

资产列表getOwnerTokens(子路径 /owner):从公开代币列表发现代币,链上核对余额

只能发现公开代币列表里的代币,结果不保证完整;要查几千个代币的余额,可能需要几秒。Tron 没有默认的代币来源(需要在代码里传 source)。

LP 仓位getLpPositions(子路径 /lp):V2 LP 代币、V3 / V4 仓位 NFT

V2 用常用计价币之间的组合找池子,只能尽量查;质押到农场(MasterChef)的仓位 NFT 不在用户名下,查不到。V4 的仓位合约不能按地址列出 NFT,只能扫描它发给这个地址的 Transfer 事件来发现:每次点“查询 LP”推进一段(约 5 秒),进度存在浏览器里,扫完之前结果不完整,再点一次继续;公共节点扫全部历史很慢,建议在设置里填自己的节点。

添加 / 移除流动性子路径 /liquidity:build* 只构建(报价 + 要发送的交易),连接钱包后可以直接发送

新建仓位不填价格区间时是全区间;报价结果里有池子当前的价格,可以据此再填区间。发送会在钱包里逐笔确认(授权在前),交易真实上链,请先用小额试。 已有仓位的追加 / 移除要由仓位的所有者发送。

NFT子路径 /nft:集合信息、持有人、元数据地址

价格 / 资产总值子路径 /price:getTokenPrices(DefiLlama,没收录的从链上池子算)、getPortfolio(余额 × 价格)

EVM 不能只靠节点列出持仓,资产总值只计入上面列出的代币(想自动发现用“资产列表”)。

授权子路径 /approvals:批量读 ERC20 / Permit2 / NFT 授权,批量撤销

先查询,勾选要撤销的授权(默认勾选无限授权的)

撤销要由授权的所有者发送:钱包地址要和查询时的地址一致;每笔撤销在钱包里单独确认,交易真实上链。钱包在顶部连接。

域名子路径 /names:ENS(Ethereum)、SPACE ID(BNB Chain)、Basenames(Base)正向 + 反向解析

反向解析只返回正查也回到同一个地址的名字。只有 Ethereum、BNB Chain、Base 有内置的域名服务。

手续费子路径 /fees:EIP-1559 三档建议;一笔交易的手续费(含 L1 数据费;Tron 算要烧的 TRX)

估算会在节点上执行一遍交易,会 revert 的交易(余额不够等)估算不出来;只估算,不发送。

兑换子路径 /swap:在内置 V2 / V3 池子里找最好的路线(直接或两跳),报价后可以用钱包发送

带转账税的代币要填税率(V2 报价不含税,不填会因 INSUFFICIENT_OUTPUT_AMOUNT 回滚;V3 不支持带税的代币),税率可以在“代币风险”页查。 报价和“最少收到”按不含税算。发送用“添加 / 移除流动性”里连接的钱包(授权在前,逐笔确认),交易真实上链,请先用小额试。

批量转账 子路径 /write:batchTransfer,走 Disperse 合约一笔转给多人,链上没有该合约时逐笔发送

取消勾选“只预估”后会弹出确认再发送,钱包里还要逐笔确认。归集(多个钱包 → 一个地址)和通用批量调用要多个钱包的私钥,不放进浏览器 demo,用法见 README 的“批量写操作”。

智能账户 / EIP-5792子路径 /smart-account:SimpleAccount 地址、bundler 支持的 EntryPoint、钱包的原子批量能力

只读:用顶部的地址算 owner 的 SimpleAccount(部署前就能算出,资产要转到这个地址才能用 mode: '4337');已连接钱包时查 wallet_getCapabilities (支持原子批量时,mode: '5792' 一次确认、一笔交易)。要真发一笔原子批量:批量转账、兑换、领取里选“EIP-5792”(钱包一次确认);7702 / 4337 需要本地签名或 bundler,用法见 README 的“智能账户批量”。

免 gas 授权 子路径 /permit:detectPermit、buildPermit、signPermit、permitCalldata

“检测”只读;“签名”只让钱包签一段 EIP-712 数据,不发交易、不花 gas。额度是精确的,有效期 30 分钟,签完在本地验签。

代币风险子路径 /risk:模拟买入 / 转账 / 卖出,算买卖税、判断貔貅盘,看是否可升级代理、owner 是否放弃

只在这条链内置的 V2 协议的“代币 / 包装主币”池子里用 eth_call 模拟,不发交易;没有这样的池子(或只在 V3 有流动性)时测不出税。结果是模拟,不能保证以后不变。

交易模拟子路径 /simulate:发送前看成败、gas、资产进出、授权变化、解码和风险提示(eth_simulateV1,不支持时退回 eth_call)

发送者用顶部的地址(已连接钱包时用钱包地址)。“兑换”表单会先报价,再把授权和兑换放进同一次模拟(状态延续)。只是模拟,不会发交易。

领取奖励子路径 /rewards:V3 / V4 仓位的手续费 + PancakeSwap 农场 / Aerodrome gauge 的奖励,合并成尽量少的交易

“查询”只读;“生成领取计划”把能领的合并成交易并模拟,会失败的仓位被跳过;“领取全部”用连接的钱包发送(只支持 EVM)。V4 仓位不能按地址列出,要填 tokenId。

历史记录子路径 /history:转账 / 兑换 / 授权 / 流动性 / 铸造,来源可换:Blockscout、Etherscan、RPC 日志、TronGrid

Blockscout 公共实例按请求频率限流(一页 3~5 个请求),被限流时自动换下一个来源;rpc 来源没有主币转账,且只在区块窗口里扫,稀疏的地址可能要多点几次“下一页”。

Flap 分红子路径 /dividends:BNB Chain 上 Flap(flap.sh)税收代币的分红,可领取 / 已领取 / 美元价值,批量领取

只支持 BSC。任何人都可以替持有人领取,款项直接到持有人地址;卖光的代币上已累计的分红也能领。公共节点只允许很小的区块范围,发现只能扫最近几百个区块,已知代币请直接填上。