@w3lib/evm-batch-call 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +98 -35
  3. package/contracts/DeploylessMulticall3.sol +5 -0
  4. package/dist/aggregate.d.ts +20 -1
  5. package/dist/aggregate.d.ts.map +1 -1
  6. package/dist/aggregate.js +222 -32
  7. package/dist/aggregate.js.map +1 -1
  8. package/dist/batcher.d.ts +6 -1
  9. package/dist/batcher.d.ts.map +1 -1
  10. package/dist/batcher.js +64 -9
  11. package/dist/batcher.js.map +1 -1
  12. package/dist/call.d.ts +27 -2
  13. package/dist/call.d.ts.map +1 -1
  14. package/dist/call.js +22 -0
  15. package/dist/call.js.map +1 -1
  16. package/dist/chains.d.ts +7 -0
  17. package/dist/chains.d.ts.map +1 -1
  18. package/dist/chains.js +11 -0
  19. package/dist/chains.js.map +1 -1
  20. package/dist/deployless.d.ts +1 -1
  21. package/dist/deployless.d.ts.map +1 -1
  22. package/dist/deployless.js +1 -1
  23. package/dist/deployless.js.map +1 -1
  24. package/dist/erc20.d.ts +70 -4
  25. package/dist/erc20.d.ts.map +1 -1
  26. package/dist/erc20.js +133 -5
  27. package/dist/erc20.js.map +1 -1
  28. package/dist/events.d.ts +25 -0
  29. package/dist/events.d.ts.map +1 -0
  30. package/dist/events.js +25 -0
  31. package/dist/events.js.map +1 -0
  32. package/dist/fallback.d.ts +49 -4
  33. package/dist/fallback.d.ts.map +1 -1
  34. package/dist/fallback.js +239 -37
  35. package/dist/fallback.js.map +1 -1
  36. package/dist/index.d.ts +9 -10
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +6 -7
  39. package/dist/index.js.map +1 -1
  40. package/dist/multicall.d.ts.map +1 -1
  41. package/dist/multicall.js +33 -2
  42. package/dist/multicall.js.map +1 -1
  43. package/dist/nft.d.ts +5 -0
  44. package/dist/nft.d.ts.map +1 -1
  45. package/dist/nft.js +5 -0
  46. package/dist/nft.js.map +1 -1
  47. package/dist/owner.d.ts +9 -0
  48. package/dist/owner.d.ts.map +1 -1
  49. package/dist/owner.js +11 -2
  50. package/dist/owner.js.map +1 -1
  51. package/dist/provider.d.ts +55 -29
  52. package/dist/provider.d.ts.map +1 -1
  53. package/dist/provider.js +140 -111
  54. package/dist/provider.js.map +1 -1
  55. package/dist/shortcuts.d.ts +34 -53
  56. package/dist/shortcuts.d.ts.map +1 -1
  57. package/dist/shortcuts.js +41 -91
  58. package/dist/shortcuts.js.map +1 -1
  59. package/dist/source.d.ts +4 -2
  60. package/dist/source.d.ts.map +1 -1
  61. package/dist/source.js +35 -6
  62. package/dist/source.js.map +1 -1
  63. package/dist/subpaths/nft.d.ts +46 -0
  64. package/dist/subpaths/nft.d.ts.map +1 -0
  65. package/dist/subpaths/nft.js +55 -0
  66. package/dist/subpaths/nft.js.map +1 -0
  67. package/dist/subpaths/owner.d.ts +33 -0
  68. package/dist/subpaths/owner.d.ts.map +1 -0
  69. package/dist/subpaths/owner.js +34 -0
  70. package/dist/subpaths/owner.js.map +1 -0
  71. package/dist/tron.d.ts +2 -0
  72. package/dist/tron.d.ts.map +1 -1
  73. package/dist/tron.js +5 -0
  74. package/dist/tron.js.map +1 -1
  75. package/dist/util.d.ts +5 -0
  76. package/dist/util.d.ts.map +1 -1
  77. package/dist/util.js +23 -0
  78. package/dist/util.js.map +1 -1
  79. package/dist/watch.d.ts +25 -0
  80. package/dist/watch.d.ts.map +1 -0
  81. package/dist/watch.js +106 -0
  82. package/dist/watch.js.map +1 -0
  83. package/package.json +19 -10
  84. package/src/aggregate.ts +253 -34
  85. package/src/batcher.ts +73 -9
  86. package/src/call.ts +42 -2
  87. package/src/chains.ts +15 -0
  88. package/src/deployless.ts +1 -1
  89. package/src/erc20.ts +184 -8
  90. package/src/events.ts +42 -0
  91. package/src/fallback.ts +287 -38
  92. package/src/index.ts +19 -61
  93. package/src/multicall.ts +34 -2
  94. package/src/nft.ts +5 -0
  95. package/src/owner.ts +11 -2
  96. package/src/provider.ts +225 -124
  97. package/src/shortcuts.ts +76 -110
  98. package/src/source.ts +35 -8
  99. package/src/subpaths/nft.ts +107 -0
  100. package/src/subpaths/owner.ts +69 -0
  101. package/src/tron.ts +7 -0
  102. package/src/util.ts +27 -0
  103. package/src/watch.ts +152 -0
package/dist/provider.js CHANGED
@@ -1,16 +1,15 @@
1
1
  import {} from 'ethers';
2
2
  import { aggregate } from './aggregate.js';
3
3
  import { Batcher } from './batcher.js';
4
- import { asStringOrBytes32, decodeCall, encodeCall } from './call.js';
4
+ import { asStringOrBytes32, decodeCall, encodeCall, settleResult, } from './call.js';
5
5
  import { Contract, bindCall } from './contract.js';
6
- import { DEFAULT_NATIVE_TOKENS, ERC20_ABI, formatAmount, getCachedTokenMeta, setCachedTokenMeta, MAX_UINT256, UNLIMITED_ALLOWANCE_THRESHOLD, DEFAULT_TOKEN_FIELDS, } from './erc20.js';
6
+ import { DEFAULT_NATIVE_TOKENS, ERC20_ABI, formatUnits, getCachedTokenMeta, setCachedTokenMeta, MAX_UINT256, UNLIMITED_ALLOWANCE_THRESHOLD, DEFAULT_TOKEN_FIELDS, } from './erc20.js';
7
7
  import { CallFailedError, isExecutionError } from './errors.js';
8
8
  import { MULTICALL3_ADDRESS, getMulticall3 } from './multicall.js';
9
- import { getNativeCurrency } from './chains.js';
10
- import { ownerTokens } from './owner.js';
11
- import { erc1155Balances, nftBalances, nftCollections, nftOwners, nftTokenUris, } from './nft.js';
9
+ import { getNativeBalanceMode, getNativeCurrency } from './chains.js';
12
10
  import { detectChainId } from './detect.js';
13
11
  import { isTronChain, resolveSource } from './source.js';
12
+ import { withSignal } from './util.js';
14
13
  /** 构造参数第一个是 chainId 还是节点:数字、数字字符串、0x 十六进制视为 chainId,其余(URL、对象、数组)视为节点 */
15
14
  function isChainIdArg(value) {
16
15
  return (typeof value === 'number' ||
@@ -19,6 +18,7 @@ function isChainIdArg(value) {
19
18
  }
20
19
  const ETH_BALANCE_INPUTS = [{ name: 'addr', type: 'address' }];
21
20
  const ETH_BALANCE_OUTPUTS = [{ name: 'balance', type: 'uint256' }];
21
+ const BLOCK_NUMBER_OUTPUTS = [{ name: 'blockNumber', type: 'uint256' }];
22
22
  /**
23
23
  * Multicall Provider,API 与 ethcall 的 Provider 保持一致:
24
24
  *
@@ -93,6 +93,7 @@ export class Provider {
93
93
  chainId,
94
94
  multicall: config.deployless ? null : resolveMulticall(chainId, config.multicall),
95
95
  chunkSize: config.chunkSize ?? 500,
96
+ nativeBalance: config.nativeBalance ?? getNativeBalanceMode(chainId),
96
97
  };
97
98
  }
98
99
  /** 链 ID(不传 chainId 构造时,会等待从节点识别完成) */
@@ -128,20 +129,11 @@ export class Provider {
128
129
  erc20(address) {
129
130
  return new Contract(address, ERC20_ABI, this);
130
131
  }
131
- /**
132
- * 批量查余额(含按 decimals 换算后的数值),主币和代币混在一起、一次请求。
133
- *
134
- * ```ts
135
- * const list = await multi.balances(user, [NATIVE_TOKEN, USDT, { address: USDC, decimals: 6 }], { symbol: true })
136
- * list[1] // { token: USDT, native: false, balance: '1234500000000000000000', decimals: 18, formatted: '1234.5', symbol: 'USDT', success: true }
137
- * ```
138
- *
139
- * - 主币地址见 config.nativeTokens(默认 0xeeee…eeee 和零地址);精度 / symbol 按内置链信息表,可用 nativeDecimals / nativeSymbol 覆盖
140
- * - decimals、symbol 查到一次后缓存,之后只查 balanceOf;也可以直接传 `{ address, decimals }`
141
- * - 单个代币失败(非合约地址、非法地址等)不影响其他代币,该项 success 为 false
142
- */
143
- async balances(owner, tokens, options = {}) {
144
- const { symbol: withSymbol = false, ...overrides } = options;
132
+ balances(owner, tokens, options = {}) {
133
+ return withSignal(options.signal, () => this.#balances(owner, tokens, options));
134
+ }
135
+ async #balances(owner, tokens, options) {
136
+ const { symbol: withSymbol = false, decimals: withDecimals = true, ...overrides } = options;
145
137
  const { chainId } = await this.#ensureReady();
146
138
  const nativeCurrency = this.#nativeCurrency(chainId);
147
139
  const items = tokens.map((token) => {
@@ -152,114 +144,122 @@ export class Provider {
152
144
  const calls = [];
153
145
  const plan = items.map(({ address, native, decimals, symbol }) => {
154
146
  const balanceIndex = calls.push(native ? this.getEthBalance(owner) : this.erc20(address).balanceOf(owner)) - 1;
155
- const decimalsIndex = decimals === undefined ? calls.push(this.erc20(address).decimals()) - 1 : -1;
147
+ const decimalsIndex = withDecimals && decimals === undefined ? calls.push(this.erc20(address).decimals()) - 1 : -1;
156
148
  const symbolIndex = withSymbol && !native && symbol === undefined ? calls.push(this.#symbolCall(address)) - 1 : -1;
157
149
  return { balanceIndex, decimalsIndex, symbolIndex };
158
150
  });
159
- const results = await this.tryAll(calls, overrides);
151
+ const blockIndex = this.#pushBlockNumber(calls, options);
152
+ const results = await this.#settleAll(calls, overrides);
153
+ const block = blockField(results, blockIndex);
160
154
  return items.map((item, i) => {
161
155
  const { balanceIndex, decimalsIndex, symbolIndex } = plan[i];
162
156
  const balance = results[balanceIndex];
163
- const fetchedDecimals = decimalsIndex === -1 ? null : results[decimalsIndex];
164
- const fetchedSymbol = symbolIndex === -1 ? null : results[symbolIndex];
157
+ const fetchedDecimals = valueOf(results[decimalsIndex]);
158
+ const fetchedSymbol = valueOf(results[symbolIndex]);
165
159
  if (!item.native && (fetchedDecimals !== null || fetchedSymbol !== null)) {
166
160
  setCachedTokenMeta(chainId, item.address, {
167
161
  ...(fetchedDecimals !== null ? { decimals: Number(fetchedDecimals) } : {}),
168
162
  ...(fetchedSymbol !== null ? { symbol: fetchedSymbol } : {}),
169
163
  });
170
164
  }
165
+ const extra = { ...(withSymbol ? { symbol: item.symbol ?? fetchedSymbol ?? null } : {}), ...block };
166
+ if (!withDecimals) {
167
+ return balance.ok
168
+ ? { token: item.address, native: item.native, balance: balance.value.toString(), ...extra, success: true }
169
+ : { token: item.address, native: item.native, balance: '0', ...extra, success: false, error: balance.reason, errorField: 'balance' };
170
+ }
171
171
  const decimals = item.decimals ?? (fetchedDecimals === null ? null : Number(fetchedDecimals));
172
- const extra = withSymbol ? { symbol: item.symbol ?? fetchedSymbol ?? null } : {};
173
- if (balance === null || decimals === null) {
174
- return { token: item.address, native: item.native, balance: '0', decimals: decimals ?? 0, formatted: '0', ...extra, success: false };
172
+ if (!balance.ok || decimals === null) {
173
+ const failure = !balance.ok
174
+ ? { error: balance.reason, errorField: 'balance' }
175
+ : { error: reasonOf(results[decimalsIndex]), errorField: 'decimals' };
176
+ return { token: item.address, native: item.native, balance: '0', decimals: decimals ?? 0, formatted: '0', ...extra, success: false, ...failure };
175
177
  }
176
178
  // 结果全是字符串 / 数字 / 布尔 / null,可以直接 JSON.stringify
177
179
  return {
178
180
  token: item.address,
179
181
  native: item.native,
180
- balance: balance.toString(),
182
+ balance: balance.value.toString(),
181
183
  decimals,
182
- formatted: formatAmount(balance, decimals),
184
+ formatted: formatUnits(balance.value, decimals),
183
185
  ...extra,
184
186
  success: true,
185
187
  };
186
188
  });
187
189
  }
188
- /**
189
- * 批量查 ERC20 授权额度(发交易前判断是否需要 approve),一次请求。
190
- *
191
- * ```ts
192
- * const [usdt] = await multi.allowances(user, router, [USDT])
193
- * usdt // { token: USDT, spender: router, native: false, allowance: '…', decimals: 18, formatted: '100', unlimited: false, success: true }
194
- * ```
195
- *
196
- * - 主币不需要授权:native 为 true,额度视为 MaxUint256、unlimited 为 true,不发请求
197
- * - decimals 与 balances / tokens 共用缓存;也可以直接传 `{ address, decimals }`
198
- */
199
- async allowances(owner, spender, tokens, overrides) {
190
+ multiBalances(queries, options = {}) {
191
+ // 各钱包的子调用在同一 tick 进入合并队列,合成一次 eth_call(相同的 decimals / 区块号查询只发一次)
192
+ return withSignal(options.signal, () => Promise.all(queries.map((query) => this.#balances(query.owner, query.tokens, options))));
193
+ }
194
+ allowances(owner, spender, tokens, options = {}) {
195
+ return withSignal(options.signal, () => this.#allowances(owner, spender, tokens, options));
196
+ }
197
+ async #allowances(owner, spender, tokens, options) {
198
+ const { decimals: withDecimals = true, ...overrides } = options;
200
199
  const { chainId } = await this.#ensureReady();
201
200
  const nativeDecimals = this.#nativeCurrency(chainId).decimals;
202
201
  const calls = [];
203
202
  const plan = tokens.map((token) => {
204
203
  const { address, native, decimals } = this.#resolveToken(chainId, token, nativeDecimals);
205
204
  const allowanceIndex = native ? -1 : calls.push(this.erc20(address).allowance(owner, spender)) - 1;
206
- const decimalsIndex = native || decimals !== undefined ? -1 : calls.push(this.erc20(address).decimals()) - 1;
205
+ const decimalsIndex = native || !withDecimals || decimals !== undefined ? -1 : calls.push(this.erc20(address).decimals()) - 1;
207
206
  return { address, native, decimals, allowanceIndex, decimalsIndex };
208
207
  });
209
- const results = calls.length ? await this.tryAll(calls, overrides) : [];
208
+ const blockIndex = this.#pushBlockNumber(calls, options);
209
+ const results = await this.#settleAll(calls, overrides);
210
+ const block = blockField(results, blockIndex);
210
211
  return plan.map(({ address, native, decimals: known, allowanceIndex, decimalsIndex }) => {
211
- const allowance = native ? MAX_UINT256 : (results[allowanceIndex] ?? null);
212
- const fetched = decimalsIndex === -1 ? null : (results[decimalsIndex] ?? null);
212
+ const settled = native ? { ok: true, value: MAX_UINT256 } : results[allowanceIndex];
213
+ const fetched = valueOf(results[decimalsIndex]);
213
214
  if (fetched !== null) {
214
215
  setCachedTokenMeta(chainId, address, { decimals: Number(fetched) });
215
216
  }
217
+ if (!withDecimals) {
218
+ return settled.ok
219
+ ? { token: address, spender, native, allowance: settled.value.toString(), unlimited: settled.value >= UNLIMITED_ALLOWANCE_THRESHOLD, ...block, success: true }
220
+ : { token: address, spender, native, allowance: '0', unlimited: false, ...block, success: false, error: settled.reason, errorField: 'allowance' };
221
+ }
216
222
  const decimals = known ?? (fetched === null ? null : Number(fetched));
217
- if (allowance === null || decimals === null) {
218
- return { token: address, spender, native, allowance: '0', decimals: decimals ?? 0, formatted: '0', unlimited: false, success: false };
223
+ if (!settled.ok || decimals === null) {
224
+ const failure = !settled.ok
225
+ ? { error: settled.reason, errorField: 'allowance' }
226
+ : { error: reasonOf(results[decimalsIndex]), errorField: 'decimals' };
227
+ return { token: address, spender, native, allowance: '0', decimals: decimals ?? 0, formatted: '0', unlimited: false, ...block, success: false, ...failure };
219
228
  }
220
229
  return {
221
230
  token: address,
222
231
  spender,
223
232
  native,
224
- allowance: allowance.toString(),
233
+ allowance: settled.value.toString(),
225
234
  decimals,
226
- formatted: formatAmount(allowance, decimals),
227
- unlimited: allowance >= UNLIMITED_ALLOWANCE_THRESHOLD,
235
+ formatted: formatUnits(settled.value, decimals),
236
+ unlimited: settled.value >= UNLIMITED_ALLOWANCE_THRESHOLD,
237
+ ...block,
228
238
  success: true,
229
239
  };
230
240
  });
231
241
  }
232
242
  /**
233
- * 列出持有人拥有的代币(资产列表):从代币来源拿候选代币,再用 multicall 在链上核对余额。
234
- * 默认来源是公开代币列表,**只能发现列表里的代币**,局限性见 README「资产列表」一节。
235
- *
236
- * @deprecated 不推荐使用:EVM 链上无法只靠节点可靠地列出地址持有的全部代币,这个方法只是尽力而为——
237
- * 默认来源只能发现公开列表里的代币,依赖第三方免费服务(可能限流、改格式或停止服务),要查几千个代币的余额、耗时数秒,
238
- * 价格也不一定可信;传 `alchemy` / `nodereal` 来源能查全,但同样受第三方服务的额度和可用性约束。
239
- * 已知要查哪些代币时请用 `getBalances`;需要可靠的完整持仓请直接接入索引服务的接口或自己的索引。局限性详见 README「资产列表」。
243
+ * balances / tokens / allowances 的子调用进自动合并队列:与同一时刻其他组件发起的查询合并成一次 multicall。
244
+ * 逐条返回值或失败原因;节点错误照常抛出
240
245
  */
241
- ownerTokens(owner, options) {
242
- return ownerTokens(this, owner, options);
243
- }
244
- /** 批量查 NFT 集合信息(标准 / name / symbol / totalSupply),字段可选 */
245
- nftCollections(collections, options) {
246
- return nftCollections(this, collections, options);
247
- }
248
- /** 批量查 ERC721 持有数量(balanceOf) */
249
- nftBalances(owner, collections, overrides) {
250
- return nftBalances(this, owner, collections, overrides);
251
- }
252
- /** 批量查 ERC721 持有人(ownerOf),可混合多个集合 */
253
- nftOwners(items, overrides) {
254
- return nftOwners(this, items, overrides);
246
+ #settleAll(calls, overrides = {}) {
247
+ return this.#batcher.loadSettled(calls, { blockTag: overrides.blockTag, from: overrides.from, minBlock: overrides.minBlock, signal: overrides.signal });
255
248
  }
256
- /** 批量查 NFT 元数据地址:兼容 ERC721 tokenURI 与 ERC1155 uri({id} 按规范替换),可转换 ipfs:// */
257
- nftTokenUris(items, options) {
258
- return nftTokenUris(this, items, options);
259
- }
260
- /** 批量查 ERC1155 余额 */
261
- erc1155Balances(owner, items, overrides) {
262
- return erc1155Balances(this, owner, items, overrides);
249
+ /** withBlock / minBlock 时在同一批里加一条区块号查询,返回它的下标(不需要时为 -1) */
250
+ #pushBlockNumber(calls, options) {
251
+ if (!options.withBlock && options.minBlock === undefined) {
252
+ return -1;
253
+ }
254
+ return (calls.push({
255
+ // 地址只用于展示:执行时换成实际的 multicall 地址,deployless 时由合约内部处理
256
+ contract: { address: MULTICALL3_ADDRESS },
257
+ name: 'getBlockNumber',
258
+ inputs: [],
259
+ outputs: BLOCK_NUMBER_OUTPUTS,
260
+ params: [],
261
+ kind: 'blockNumber',
262
+ }) - 1);
263
263
  }
264
264
  /** symbol() 调用:string 解码失败时按 bytes32 解析(MKR 等老代币) */
265
265
  #symbolCall(address) {
@@ -287,7 +287,10 @@ export class Provider {
287
287
  * - symbol / name 兼容返回 bytes32 的老代币(MKR 等)
288
288
  * - 读取失败的字段为 null;请求的字段都读到时 success 为 true
289
289
  */
290
- async tokens(tokens, options = {}) {
290
+ tokens(tokens, options = {}) {
291
+ return withSignal(options.signal, () => this.#tokens(tokens, options));
292
+ }
293
+ async #tokens(tokens, options) {
291
294
  const { fields = DEFAULT_TOKEN_FIELDS, ...overrides } = options;
292
295
  const wanted = new Set(fields);
293
296
  const needDecimals = wanted.has('decimals') || wanted.has('totalSupply');
@@ -317,8 +320,10 @@ export class Provider {
317
320
  }
318
321
  return { address, native, meta, index };
319
322
  });
320
- const results = calls.length ? await this.tryAll(calls, overrides) : [];
321
- const read = (i) => (i === undefined ? null : (results[i] ?? null));
323
+ const blockIndex = this.#pushBlockNumber(calls, options);
324
+ const results = await this.#settleAll(calls, overrides);
325
+ const block = blockField(results, blockIndex);
326
+ const read = (i) => (i === undefined ? null : valueOf(results[i]));
322
327
  return plan.map(({ address, native, meta, index }) => {
323
328
  const name = meta.name ?? read(index.name);
324
329
  const symbol = meta.symbol ?? read(index.symbol);
@@ -339,18 +344,25 @@ export class Provider {
339
344
  totalSupply: totalSupply === null ? null : totalSupply.toString(),
340
345
  };
341
346
  const out = { address, native };
342
- let success = true;
347
+ let failedField = null;
343
348
  for (const field of fields) {
344
349
  out[field] = values[field];
345
350
  // 主币没有 totalSupply,不算失败
346
351
  if (values[field] === null && !(native && field === 'totalSupply')) {
347
- success = false;
352
+ failedField ??= field;
348
353
  }
349
354
  }
350
355
  if (wanted.has('totalSupply')) {
351
- out.totalSupplyFormatted = totalSupply === null || decimals === null ? null : formatAmount(totalSupply, decimals);
356
+ out.totalSupplyFormatted = totalSupply === null || decimals === null ? null : formatUnits(totalSupply, decimals);
357
+ }
358
+ Object.assign(out, block);
359
+ out.success = failedField === null;
360
+ if (failedField !== null) {
361
+ // 没发请求的字段(主币信息不在内置表、也没有配置)不是调用失败
362
+ const callIndex = index[failedField];
363
+ out.error = callIndex === undefined ? 'not-configured' : reasonOf(results[callIndex]);
364
+ out.errorField = failedField;
352
365
  }
353
- out.success = success;
354
366
  return out;
355
367
  });
356
368
  }
@@ -370,10 +382,12 @@ export class Provider {
370
382
  };
371
383
  return bindCall(call, this);
372
384
  }
373
- async all(calls, overrides) {
374
- const [list, pack] = unpack(calls);
375
- const results = await this.#aggregate(list.map((call) => encodeCall(call, false)), overrides);
376
- return pack(list.map((call, i) => decodeCall(call, results[i].returnData)));
385
+ all(calls, overrides) {
386
+ return withSignal(overrides?.signal, async () => {
387
+ const [list, pack] = unpack(calls);
388
+ const results = await this.#aggregate(list.map((call) => encodeCall(call, false)), overrides);
389
+ return pack(list.map((call, i) => decodeCall(call, results[i].returnData)));
390
+ });
377
391
  }
378
392
  async tryAll(calls, overrides) {
379
393
  const [list, pack] = unpack(calls);
@@ -382,7 +396,10 @@ export class Provider {
382
396
  /**
383
397
  * 逐条指定是否允许失败:允许失败的位置返回 null,不允许失败的一旦失败整体抛错。
384
398
  */
385
- async tryEach(calls, canFail, overrides) {
399
+ tryEach(calls, canFail, overrides) {
400
+ return withSignal(overrides?.signal, () => this.#tryEach(calls, canFail, overrides));
401
+ }
402
+ async #tryEach(calls, canFail, overrides) {
386
403
  // 允许失败的条目编码出错(如后端给的脏地址)只让该条为 null,不拖垮整批
387
404
  const requests = calls.map((call, i) => {
388
405
  const callCanFail = canFail[i];
@@ -411,7 +428,7 @@ export class Provider {
411
428
  */
412
429
  call(call, overrides) {
413
430
  const own = call.overrides;
414
- return this.#batcher.load(call, merge({ blockTag: own?.blockTag, from: own?.from }, overrides));
431
+ return withSignal(overrides?.signal, () => this.#batcher.load(call, merge({ blockTag: own?.blockTag, from: own?.from }, { blockTag: overrides?.blockTag, from: overrides?.from, minBlock: overrides?.minBlock, signal: overrides?.signal })));
415
432
  }
416
433
  /**
417
434
  * 预执行(模拟交易):直接对目标合约发 eth_call,可带 from / value / gasLimit,
@@ -422,12 +439,14 @@ export class Provider {
422
439
  *
423
440
  * overrides 优先级:参数 overrides > Call 上的 overrides(`contract.swap(params, { value })`)。
424
441
  */
425
- async staticCall(call, overrides = {}) {
426
- const result = await this.#staticCall(call, overrides);
427
- if (!result.success) {
428
- throw result.error;
429
- }
430
- return result.data;
442
+ staticCall(call, overrides = {}) {
443
+ return withSignal(overrides.signal, async () => {
444
+ const result = await this.#staticCall(call, overrides);
445
+ if (!result.success) {
446
+ throw result.error;
447
+ }
448
+ return result.data;
449
+ });
431
450
  }
432
451
  /**
433
452
  * 批量预执行:每条都是独立的 eth_call,同时发出(JsonRpcProvider 会合进一个 JSON-RPC batch 请求;
@@ -436,7 +455,10 @@ export class Provider {
436
455
  * @param items Call,或 `{ call, overrides }` 以便每条带不同的 value / from
437
456
  * @param overrides 所有条目共享的 overrides,优先级最低
438
457
  */
439
- async staticCallAll(items, overrides = {}) {
458
+ staticCallAll(items, overrides = {}) {
459
+ return withSignal(overrides.signal, () => this.#staticCallAll(items, overrides));
460
+ }
461
+ #staticCallAll(items, overrides) {
440
462
  return Promise.all(items.map((item) => 'call' in item && 'contract' in item.call
441
463
  ? this.#staticCall(item.call, item.overrides, overrides)
442
464
  : this.#staticCall(item, undefined, overrides)));
@@ -446,7 +468,10 @@ export class Provider {
446
468
  const merged = merge(merge({ ...shared }, call.overrides), explicit);
447
469
  if (call.kind === 'ethBalance') {
448
470
  try {
449
- const { provider } = await this.#ensureReady();
471
+ const { provider, nativeBalance } = await this.#ensureReady();
472
+ if (typeof nativeBalance === 'object') {
473
+ return await this.#staticCall(this.erc20(nativeBalance.erc20).balanceOf(call.params[0]), explicit, shared);
474
+ }
450
475
  return { success: true, data: (await provider.getBalance(call.params[0], merged.blockTag)) };
451
476
  }
452
477
  catch (err) {
@@ -546,19 +571,23 @@ function unpack(calls) {
546
571
  return [keys.map((key) => record[key]), (results) => Object.fromEntries(keys.map((key, i) => [key, results[i]]))];
547
572
  }
548
573
  function decodeTry(calls, results) {
549
- return calls.map((call, i) => {
550
- const result = results[i];
551
- if (!result.success) {
552
- return null;
553
- }
554
- try {
555
- return decodeCall(call, result.returnData);
556
- }
557
- catch {
558
- // 解码失败:多半是目标地址没有合约
559
- return null;
560
- }
561
- });
574
+ return calls.map((call, i) => valueOf(settleResult(call, results[i])));
575
+ }
576
+ /** withBlock 时每项结果附带的 { blockNumber }(区块号查询失败时为 null);不需要时为空对象 */
577
+ function blockField(results, index) {
578
+ if (index === -1) {
579
+ return {};
580
+ }
581
+ const value = valueOf(results[index]);
582
+ return { blockNumber: value === null ? null : Number(value) };
583
+ }
584
+ /** 成功的值;失败或没有这一项(下标为 -1)时为 null */
585
+ function valueOf(settled) {
586
+ return settled?.ok ? settled.value : null;
587
+ }
588
+ /** 失败原因;没有对应的调用时(不应发生)按 decode-failed */
589
+ function reasonOf(settled) {
590
+ return settled && !settled.ok ? settled.reason : 'decode-failed';
562
591
  }
563
592
  export default Provider;
564
593
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}