@w3lib/evm-batch-call 0.4.1 → 0.5.0

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 (92) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +166 -3
  3. package/dist/aggregate.d.ts.map +1 -1
  4. package/dist/aggregate.js +153 -40
  5. package/dist/aggregate.js.map +1 -1
  6. package/dist/fallback.d.ts +20 -0
  7. package/dist/fallback.d.ts.map +1 -1
  8. package/dist/fallback.js +36 -5
  9. package/dist/fallback.js.map +1 -1
  10. package/dist/lp.d.ts +149 -0
  11. package/dist/lp.d.ts.map +1 -0
  12. package/dist/lp.js +499 -0
  13. package/dist/lp.js.map +1 -0
  14. package/dist/lpMath.d.ts +25 -0
  15. package/dist/lpMath.d.ts.map +1 -0
  16. package/dist/lpMath.js +103 -0
  17. package/dist/lpMath.js.map +1 -0
  18. package/dist/lpV4.d.ts +108 -0
  19. package/dist/lpV4.d.ts.map +1 -0
  20. package/dist/lpV4.js +283 -0
  21. package/dist/lpV4.js.map +1 -0
  22. package/dist/owner.d.ts +1 -1
  23. package/dist/owner.d.ts.map +1 -1
  24. package/dist/owner.js +18 -5
  25. package/dist/owner.js.map +1 -1
  26. package/dist/scan.d.ts +54 -0
  27. package/dist/scan.d.ts.map +1 -1
  28. package/dist/scan.js +124 -92
  29. package/dist/scan.js.map +1 -1
  30. package/dist/source.d.ts +2 -0
  31. package/dist/source.d.ts.map +1 -1
  32. package/dist/source.js +4 -0
  33. package/dist/source.js.map +1 -1
  34. package/dist/subpaths/lp.d.ts +33 -0
  35. package/dist/subpaths/lp.d.ts.map +1 -0
  36. package/dist/subpaths/lp.js +47 -0
  37. package/dist/subpaths/lp.js.map +1 -0
  38. package/dist/subpaths/write.d.ts +20 -0
  39. package/dist/subpaths/write.d.ts.map +1 -0
  40. package/dist/subpaths/write.js +18 -0
  41. package/dist/subpaths/write.js.map +1 -0
  42. package/dist/tron.d.ts +2 -0
  43. package/dist/tron.d.ts.map +1 -1
  44. package/dist/tron.js +4 -0
  45. package/dist/tron.js.map +1 -1
  46. package/dist/write/batch.d.ts +88 -0
  47. package/dist/write/batch.d.ts.map +1 -0
  48. package/dist/write/batch.js +231 -0
  49. package/dist/write/batch.js.map +1 -0
  50. package/dist/write/collect.d.ts +53 -0
  51. package/dist/write/collect.d.ts.map +1 -0
  52. package/dist/write/collect.js +255 -0
  53. package/dist/write/collect.js.map +1 -0
  54. package/dist/write/rpc.d.ts +68 -0
  55. package/dist/write/rpc.d.ts.map +1 -0
  56. package/dist/write/rpc.js +236 -0
  57. package/dist/write/rpc.js.map +1 -0
  58. package/dist/write/send.d.ts +124 -0
  59. package/dist/write/send.d.ts.map +1 -0
  60. package/dist/write/send.js +373 -0
  61. package/dist/write/send.js.map +1 -0
  62. package/dist/write/signer.d.ts +58 -0
  63. package/dist/write/signer.d.ts.map +1 -0
  64. package/dist/write/signer.js +41 -0
  65. package/dist/write/signer.js.map +1 -0
  66. package/dist/write/transfer.d.ts +83 -0
  67. package/dist/write/transfer.d.ts.map +1 -0
  68. package/dist/write/transfer.js +259 -0
  69. package/dist/write/transfer.js.map +1 -0
  70. package/dist/write/tron.d.ts +58 -0
  71. package/dist/write/tron.d.ts.map +1 -0
  72. package/dist/write/tron.js +956 -0
  73. package/dist/write/tron.js.map +1 -0
  74. package/package.json +27 -14
  75. package/src/aggregate.ts +168 -36
  76. package/src/fallback.ts +55 -11
  77. package/src/lp.ts +721 -0
  78. package/src/lpMath.ts +113 -0
  79. package/src/lpV4.ts +406 -0
  80. package/src/owner.ts +19 -6
  81. package/src/scan.ts +155 -86
  82. package/src/source.ts +5 -0
  83. package/src/subpaths/lp.ts +71 -0
  84. package/src/subpaths/write.ts +26 -0
  85. package/src/tron.ts +5 -0
  86. package/src/write/batch.ts +302 -0
  87. package/src/write/collect.ts +312 -0
  88. package/src/write/rpc.ts +277 -0
  89. package/src/write/send.ts +490 -0
  90. package/src/write/signer.ts +90 -0
  91. package/src/write/transfer.ts +344 -0
  92. package/src/write/tron.ts +1100 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tron.js","sourceRoot":"","sources":["../../src/write/tron.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@w3lib/evm-batch-call",
3
- "version": "0.4.1",
4
- "description": "Batched EVM/Tron contract reads via Multicall3 with deployless fallback, native balances, RPC failover, auto-batching and staticCall simulation. ethcall compatible.",
3
+ "version": "0.5.0",
4
+ "description": "Batched EVM/Tron contract reads via Multicall3 with deployless fallback, native balances, RPC failover, auto-batching and staticCall simulation; batch transfer, collect and contract calls (Disperse / EIP-7702). ethcall compatible.",
5
5
  "keywords": [
6
6
  "ethers",
7
7
  "ethereum",
@@ -9,7 +9,10 @@
9
9
  "multicall",
10
10
  "multicall3",
11
11
  "batch",
12
- "ethcall"
12
+ "ethcall",
13
+ "batch-transfer",
14
+ "disperse",
15
+ "eip-7702"
13
16
  ],
14
17
  "license": "MIT",
15
18
  "author": "L",
@@ -25,9 +28,17 @@
25
28
  "types": "./dist/subpaths/nft.d.ts",
26
29
  "import": "./dist/subpaths/nft.js"
27
30
  },
31
+ "./lp": {
32
+ "types": "./dist/subpaths/lp.d.ts",
33
+ "import": "./dist/subpaths/lp.js"
34
+ },
28
35
  "./owner": {
29
36
  "types": "./dist/subpaths/owner.d.ts",
30
37
  "import": "./dist/subpaths/owner.js"
38
+ },
39
+ "./write": {
40
+ "types": "./dist/subpaths/write.d.ts",
41
+ "import": "./dist/subpaths/write.js"
31
42
  }
32
43
  },
33
44
  "files": [
@@ -42,21 +53,13 @@
42
53
  "engines": {
43
54
  "node": ">=18"
44
55
  },
45
- "scripts": {
46
- "build": "rm -rf dist && tsc -p tsconfig.build.json",
47
- "typecheck": "tsc -p tsconfig.json --noEmit",
48
- "test": "vitest run",
49
- "test:live": "LIVE=1 vitest run test/live.test.ts",
50
- "prepublishOnly": "pnpm typecheck && pnpm test && pnpm build",
51
- "build:contracts": "node scripts/build-contracts.mjs",
52
- "check:rpc": "node scripts/check-rpc-nodes.mjs"
53
- },
54
56
  "peerDependencies": {
55
57
  "ethers": "^6.0.0"
56
58
  },
57
59
  "devDependencies": {
58
60
  "ethers": "^6.17.0",
59
- "solc": "0.8.30"
61
+ "solc": "0.8.30",
62
+ "vite": "^8.3.4"
60
63
  },
61
64
  "publishConfig": {
62
65
  "access": "public"
@@ -69,5 +72,15 @@
69
72
  "homepage": "https://github.com/web3-lib/libs/tree/main/packages/evm-batch-call#readme",
70
73
  "bugs": {
71
74
  "url": "https://github.com/web3-lib/libs/issues"
75
+ },
76
+ "scripts": {
77
+ "build": "rm -rf dist && tsc -p tsconfig.build.json",
78
+ "typecheck": "tsc -p tsconfig.json --noEmit",
79
+ "test": "vitest run",
80
+ "test:live": "LIVE=1 vitest run test/live.test.ts",
81
+ "build:contracts": "node scripts/build-contracts.mjs",
82
+ "check:rpc": "node scripts/check-rpc-nodes.mjs",
83
+ "demo": "vite demo",
84
+ "demo:build": "vite build demo"
72
85
  }
73
- }
86
+ }
package/src/aggregate.ts CHANGED
@@ -3,7 +3,7 @@ import { AbiCoder, Interface, concat, dataSlice, id, isError, type Provider as E
3
3
  import { encodeUint256, type CallRequest, type RawResult } from './call.js'
4
4
  import { DEPLOYLESS_MULTICALL3_BYTECODE } from './deployless.js'
5
5
  import { isExecutionError } from './errors.js'
6
- import { AllNodesFailedError, FallbackRpc, InvalidResultError } from './fallback.js'
6
+ import { AllNodesFailedError, FallbackRpc, InvalidResultError, NodeBehindError, isBehind } from './fallback.js'
7
7
  import { MULTICALL3_ADDRESS, type Multicall } from './multicall.js'
8
8
  import { isTronChain } from './tron.js'
9
9
 
@@ -87,16 +87,47 @@ const invalidStrikes = new Map<string, number>()
87
87
  * eth_call 并解码 aggregate3 的结果:通过 FallbackRpc 时空数据 / 无法解码的结果换下一个节点(解码只做一次,结果复用);
88
88
  * 其他 Provider 不支持校验参数,取到结果后自己校验
89
89
  */
90
- async function callAggregate3(provider: EthersLikeProvider, tx: Parameters<EthersLikeProvider['call']>[0]): Promise<RawResult[]> {
90
+ async function callAggregate3(
91
+ provider: EthersLikeProvider,
92
+ tx: Parameters<EthersLikeProvider['call']>[0],
93
+ requests: readonly CallRequest[],
94
+ atLeast?: bigint,
95
+ ): Promise<RawResult[]> {
91
96
  const decoded = new Map<string, RawResult[]>()
97
+ // deployless 结果超过 24KB 时通过 revert Aggregate3Result 带回:同样校验区块号,落后时换成 NodeBehindError(FallbackRpc 换节点)
98
+ const inspectError = (err: unknown) => {
99
+ const results = atLeast === undefined ? null : revertedResults(err)
100
+ if (results) {
101
+ assertAtLeast(requests, results, atLeast as bigint)
102
+ }
103
+ }
92
104
  const accept = (data: string) => {
93
105
  const results = decodeAggregate3Data(data)
94
- if (results) {
95
- decoded.set(data, results)
106
+ if (!results) {
107
+ return false
108
+ }
109
+ // minBlock:结果里的区块号早于要求时节点落后,抛 NodeBehindError 让 FallbackRpc 换下一个节点
110
+ if (atLeast !== undefined) {
111
+ assertAtLeast(requests, results, atLeast)
112
+ }
113
+ decoded.set(data, results)
114
+ return true
115
+ }
116
+ let data: string
117
+ if (provider instanceof FallbackRpc) {
118
+ data = await provider.call(tx, { accept, inspectError })
119
+ } else {
120
+ // 其他 Provider 不支持校验参数:取到结果后自己校验(同样包括区块号)
121
+ try {
122
+ data = await provider.call(tx)
123
+ } catch (err) {
124
+ inspectError(err)
125
+ throw err
126
+ }
127
+ if (!accept(data)) {
128
+ throw new InvalidResultError(data)
96
129
  }
97
- return results !== null
98
130
  }
99
- const data = provider instanceof FallbackRpc ? await provider.call(tx, { accept }) : await provider.call(tx)
100
131
  const results = decoded.get(data) ?? decodeAggregate3Data(data)
101
132
  if (!results) {
102
133
  throw new InvalidResultError(data)
@@ -104,6 +135,54 @@ async function callAggregate3(provider: EthersLikeProvider, tx: Parameters<Ether
104
135
  return results
105
136
  }
106
137
 
138
+ /** 已解析过的 revert 结果(同一个错误在 inspectError 和 callDeploylessChunk 里各用一次,只解析一次) */
139
+ const revertedCache = new WeakMap<object, RawResult[] | null>()
140
+
141
+ /** deployless 通过 revert Aggregate3Result(...) 带回的结果;不是这种 revert、或数据无法解码时为 null(保留原来的错误) */
142
+ function revertedResults(err: unknown): RawResult[] | null {
143
+ const revertData = (err as { data?: string | null } | null)?.data
144
+ if (!isError(err, 'CALL_EXCEPTION') || !revertData?.startsWith(AGGREGATE3_RESULT_SELECTOR)) {
145
+ return null
146
+ }
147
+ const cached = revertedCache.get(err)
148
+ if (cached !== undefined) {
149
+ return cached
150
+ }
151
+ let results: RawResult[] | null
152
+ try {
153
+ results = decodeAggregate3(AbiCoder.defaultAbiCoder().decode([RESULT_TUPLE], dataSlice(revertData, 4))[0])
154
+ } catch {
155
+ results = null
156
+ }
157
+ revertedCache.set(err, results)
158
+ return results
159
+ }
160
+
161
+ /** ArbSys.arbBlockNumber() 的结果(Arbitrum 系的 L2 区块号);其他链上 0x64 没有代码、返回空数据,为 null */
162
+ function l2BlockOf(result: RawResult | undefined): bigint | null {
163
+ return result?.success && result.returnData.length === 66 ? BigInt(result.returnData) : null
164
+ }
165
+
166
+ /**
167
+ * minBlock 校验:这次 eth_call 里附带的区块号查询(BLOCK_NUMBER_REQUEST,Arbitrum 上用一起附带的 L2 区块号)早于要求时,
168
+ * 抛 NodeBehindError(FallbackRpc 换下一个节点)。每次 eth_call 都附带了这两条(deployless 切片时每片各自附带)
169
+ */
170
+ function assertAtLeast(requests: readonly CallRequest[], results: readonly RawResult[], atLeast: bigint): void {
171
+ const blockIndex = requests.lastIndexOf(BLOCK_NUMBER_REQUEST)
172
+ if (blockIndex === -1) {
173
+ return
174
+ }
175
+ const arbIndex = requests.lastIndexOf(ARB_BLOCK_NUMBER_REQUEST)
176
+ assertBlock((arbIndex === -1 ? null : l2BlockOf(results[arbIndex])) ?? blockOf(results[blockIndex]), atLeast)
177
+ }
178
+
179
+ /** 区块号不早于 minBlock,否则节点落后(读不到区块号也按落后处理) */
180
+ function assertBlock(block: bigint | null, atLeast: bigint): void {
181
+ if (block === null || block < atLeast) {
182
+ throw new NodeBehindError(atLeast, block ?? -1n)
183
+ }
184
+ }
185
+
107
186
  /** aggregate3 返回数据的解码结果;空数据或无法解码时为 null */
108
187
  function decodeAggregate3Data(data: string): RawResult[] | null {
109
188
  if (!data || data === '0x') {
@@ -166,22 +245,54 @@ async function aggregateChunkAtLeast(ctx: AggregateContext, requests: CallReques
166
245
  const minBlock = overrides.minBlock as number
167
246
  // Tron 节点只能查最新状态(不支持按区块号查询)
168
247
  const canPinBlock = !isTronChain(ctx.chainId)
248
+ const atLeast = BigInt(minBlock)
249
+ let pinned = false
169
250
  return retryUntilCaughtUp(overrides, async () => {
170
- const results = await aggregateChunk(ctx, [...requests, BLOCK_NUMBER_REQUEST], overrides)
171
- if ((blockOf(results[results.length - 1]) ?? -1n) >= BigInt(minBlock)) {
172
- return results.slice(0, -1)
251
+ // 区块号校验在 FallbackRpc 里做:落后的节点(结果的区块号早于 minBlock)当场换下一个节点,跟上的节点直接给出最新状态
252
+ try {
253
+ return withoutBlock(await aggregateChunk(ctx, [...requests, BLOCK_NUMBER_REQUEST], overrides, atLeast))
254
+ } catch (err) {
255
+ // 有节点落后(其余节点可能因限频、超时等失败)时,按区块号重查一次;之后只等最新状态跟上,避免每秒把所有节点问两遍
256
+ if (!canPinBlock || pinned || !isBehindFailure(err)) {
257
+ throw err
258
+ }
173
259
  }
174
- if (canPinBlock) {
175
- // 按区块号重查时同样带上区块号并校验:有的节点对未来区块不报错、直接返回最新状态(如 HyperEVM),不能当成 minBlock 的结果
176
- const pinned = await aggregateChunk(ctx, [...requests, BLOCK_NUMBER_REQUEST], { ...overrides, blockTag: minBlock })
177
- if ((blockOf(pinned[pinned.length - 1]) ?? -1n) >= BigInt(minBlock)) {
178
- return pinned.slice(0, -1)
260
+ // 按区块号重查:落后的节点对未来区块报错或返回较旧区块,同样校验区块号、换节点;仍然都落后时由 retryUntilCaughtUp 稍等重试。
261
+ // 确认节点都落后后不再重查(只等最新状态跟上);因限频、超时等失败时下次照常重查
262
+ try {
263
+ return withoutBlock(await aggregateChunk(ctx, [...requests, BLOCK_NUMBER_REQUEST], { ...overrides, blockTag: minBlock }, atLeast))
264
+ } catch (err) {
265
+ // 所有节点都落后才不再重查;有节点只是限频、超时等失败时下次照常重查
266
+ if (isAllBehind(err)) {
267
+ pinned = true
179
268
  }
269
+ throw err
180
270
  }
181
- throw new Error(`Node is behind minBlock ${minBlock}`)
182
271
  })
183
272
  }
184
273
 
274
+ /** 去掉附带的区块号查询(区块号已在每次 eth_call 时由 assertAtLeast 校验过) */
275
+ function withoutBlock(results: RawResult[]): RawResult[] {
276
+ return results.slice(0, -1)
277
+ }
278
+
279
+ /**
280
+ * 是否有节点落后:结果早于 minBlock(NodeBehindError),或对按区块号的查询报“区块不存在”(header not found 等);
281
+ * 多节点时其中有节点是这样(其余可能是限频、超时等)
282
+ */
283
+ function isBehindFailure(err: unknown): boolean {
284
+ return isBehindError(err) || (err instanceof AllNodesFailedError && err.errors.some((e) => isBehindError(e.error)))
285
+ }
286
+
287
+ /** 所有节点都落后(单节点时就是它落后) */
288
+ function isAllBehind(err: unknown): boolean {
289
+ return isBehindError(err) || (err instanceof AllNodesFailedError && err.errors.every((e) => isBehindError(e.error)))
290
+ }
291
+
292
+ function isBehindError(err: unknown): boolean {
293
+ return err instanceof NodeBehindError || isBehind(err)
294
+ }
295
+
185
296
  /** 节点落后时的重试:确定性错误(合约执行结果)直接抛;其余错误每秒重试,最多约 10 秒;signal 取消后停止 */
186
297
  async function retryUntilCaughtUp<T>(overrides: CallOverrides, run: () => Promise<T>): Promise<T> {
187
298
  const deadline = Date.now() + MIN_BLOCK_DEADLINE
@@ -242,6 +353,8 @@ async function aggregateWithRpcBalances(ctx: AggregateContext, requests: CallReq
242
353
  const block = blockOf(results.pop())
243
354
  otherResults = results
244
355
  const blockTag = block === null ? overrides.blockTag : Number(block)
356
+ // 已知限制:eth_getBalance 不返回区块号,没法校验。读余额的节点如果忽略区块参数、又比给出 blockTag 的节点落后,
357
+ // 主币余额可能比代币余额早几个块(仍不早于 minBlock 的节点才会给出 blockTag 之后的区块)
245
358
  const read = () => Promise.all(owners.map((owner) => ctx.provider.getBalance(owner, blockTag)))
246
359
  // 只有 minBlock 才等待重试(读的区块可能来自比当前节点更新的节点);只要 withBlock 时出错照常抛出
247
360
  balances = await (overrides.minBlock !== undefined ? retryUntilCaughtUp(overrides, read) : read())
@@ -259,13 +372,13 @@ async function aggregateWithRpcBalances(ctx: AggregateContext, requests: CallReq
259
372
  }
260
373
 
261
374
  /** 执行一批请求;其中有区块号查询时顺带读 Arbitrum 的 L2 区块号,并用它替换(见 ARB_BLOCK_NUMBER_REQUEST) */
262
- async function aggregateChunk(ctx: AggregateContext, requests: CallRequest[], overrides: CallOverrides): Promise<RawResult[]> {
375
+ async function aggregateChunk(ctx: AggregateContext, requests: CallRequest[], overrides: CallOverrides, atLeast?: bigint): Promise<RawResult[]> {
263
376
  if (!requests.some((req) => req.blockNumber)) {
264
- return aggregateRawChunk(ctx, requests, overrides)
377
+ return aggregateRawChunk(ctx, requests, overrides, atLeast)
265
378
  }
266
- const results = await aggregateRawChunk(ctx, [...requests, ARB_BLOCK_NUMBER_REQUEST], overrides)
379
+ const results = await aggregateRawChunk(ctx, [...requests, ARB_BLOCK_NUMBER_REQUEST], overrides, atLeast)
267
380
  const arb = results.pop() as RawResult
268
- if (arb.success && arb.returnData.length === 66) {
381
+ if (l2BlockOf(arb) !== null) {
269
382
  requests.forEach((req, i) => {
270
383
  if (req.blockNumber) {
271
384
  results[i] = arb
@@ -279,11 +392,12 @@ async function aggregateRawChunk(
279
392
  ctx: AggregateContext,
280
393
  requests: CallRequest[],
281
394
  overrides: CallOverrides,
395
+ atLeast?: bigint,
282
396
  ): Promise<RawResult[]> {
283
397
  const multicall = ctx.multicall
284
398
  if (multicall && isUsable(ctx.chainId, multicall, overrides.blockTag)) {
285
399
  const key = cacheKey(ctx.chainId, multicall.address)
286
- const results = await callContract(ctx, multicall, requests, overrides)
400
+ const results = await callContract(ctx, multicall, requests, overrides, atLeast)
287
401
  if (Array.isArray(results)) {
288
402
  invalidStrikes.delete(key)
289
403
  return results
@@ -303,7 +417,7 @@ async function aggregateRawChunk(
303
417
  }
304
418
  }
305
419
  }
306
- return callDeployless(ctx, requests, overrides)
420
+ return callDeployless(ctx, requests, overrides, atLeast)
307
421
  }
308
422
 
309
423
  /**
@@ -316,6 +430,7 @@ async function callContract(
316
430
  multicall: Multicall,
317
431
  requests: CallRequest[],
318
432
  overrides: CallOverrides,
433
+ atLeast?: bigint,
319
434
  ): Promise<RawResult[] | 'invalid' | 'invalid-confirmed' | 'reverted'> {
320
435
  const calls = requests.map((req) => ({
321
436
  target: req.ethBalanceOf || req.blockNumber ? multicall.address : req.target,
@@ -324,16 +439,21 @@ async function callContract(
324
439
  }))
325
440
  try {
326
441
  // 地址上没有代码时 eth_call 返回 0x;空数据 / 无法解码的结果换下一个节点(节点偶发出错时别的节点能给出正确结果)
327
- return await callAggregate3(ctx.provider, {
328
- to: multicall.address,
329
- data: multicall3Interface.encodeFunctionData('aggregate3', [calls]),
330
- blockTag: overrides.blockTag,
331
- from: overrides.from,
332
- })
442
+ return await callAggregate3(
443
+ ctx.provider,
444
+ { to: multicall.address, data: multicall3Interface.encodeFunctionData('aggregate3', [calls]), blockTag: overrides.blockTag, from: overrides.from },
445
+ requests,
446
+ atLeast,
447
+ )
333
448
  } catch (err) {
334
449
  if (err instanceof InvalidResultError) {
335
450
  return 'invalid'
336
451
  }
452
+ // 有节点只是落后(minBlock):不能据此判断合约不存在,按落后处理(由 minBlock 的等待重试负责),不记次数
453
+ // (只看 minBlock 校验得出的 NodeBehindError;“区块不存在”的报错和空数据混在一起时照常退回 deployless)
454
+ if (atLeast !== undefined && (err instanceof NodeBehindError || (err instanceof AllNodesFailedError && err.errors.some((e) => e.error instanceof NodeBehindError)))) {
455
+ throw err
456
+ }
337
457
  // 有节点返回空数据、其余节点出错(超时、限频等):合约可能不存在,退回 deployless;
338
458
  // 只有 2 个以上节点都返回空数据才算确认,记缓存
339
459
  if (err instanceof AllNodesFailedError && err.errors.some((e) => e.error instanceof InvalidResultError)) {
@@ -361,9 +481,10 @@ async function callDeployless(
361
481
  ctx: AggregateContext,
362
482
  requests: CallRequest[],
363
483
  overrides: CallOverrides,
484
+ atLeast?: bigint,
364
485
  ): Promise<RawResult[]> {
365
486
  const chunks = splitByInitcodeSize(requests)
366
- const results = await Promise.all(chunks.map((chunk) => callDeploylessChunk(ctx, chunk, overrides)))
487
+ const results = await Promise.all(chunks.map((chunk) => callDeploylessChunk(ctx, chunk, overrides, atLeast)))
367
488
  return results.flat()
368
489
  }
369
490
 
@@ -371,11 +492,21 @@ async function callDeploylessChunk(
371
492
  ctx: AggregateContext,
372
493
  requests: CallRequest[],
373
494
  overrides: CallOverrides,
495
+ atLeast?: bigint,
374
496
  ): Promise<RawResult[]> {
497
+ // minBlock:每片都附带区块号查询并各自校验——只校验带区块号的那一片的话,其他片可能来自落后节点、混进旧数据
498
+ const sent =
499
+ atLeast === undefined
500
+ ? requests
501
+ : [
502
+ ...requests,
503
+ ...(requests.includes(BLOCK_NUMBER_REQUEST) ? [] : [BLOCK_NUMBER_REQUEST]),
504
+ ...(requests.includes(ARB_BLOCK_NUMBER_REQUEST) ? [] : [ARB_BLOCK_NUMBER_REQUEST]),
505
+ ]
375
506
  const args = AbiCoder.defaultAbiCoder().encode(
376
507
  [CALL3_TUPLE],
377
508
  [
378
- requests.map(({ target, allowFailure, callData, ethBalanceOf, blockNumber }) => ({
509
+ sent.map(({ target, allowFailure, callData, ethBalanceOf, blockNumber }) => ({
379
510
  target: ethBalanceOf || blockNumber ? MULTICALL3_ADDRESS : target,
380
511
  allowFailure,
381
512
  callData,
@@ -384,19 +515,20 @@ async function callDeploylessChunk(
384
515
  )
385
516
  try {
386
517
  // 返回空数据 / 无法解码(节点不支持合约创建式 eth_call,或偶发出错)时换下一个节点
387
- return await callAggregate3(ctx.provider, { data: concat([DEPLOYLESS_MULTICALL3_BYTECODE, args]), blockTag: overrides.blockTag, from: overrides.from })
518
+ const results = await callAggregate3(ctx.provider, { data: concat([DEPLOYLESS_MULTICALL3_BYTECODE, args]), blockTag: overrides.blockTag, from: overrides.from }, sent, atLeast)
519
+ return results.slice(0, requests.length)
388
520
  } catch (err) {
389
- const revertData = (err as { data?: string | null }).data
390
- if (isError(err, 'CALL_EXCEPTION') && revertData?.startsWith(AGGREGATE3_RESULT_SELECTOR)) {
391
- // 结果超过 24KB,合约通过 revert Aggregate3Result(...) 带回
392
- return decodeAggregate3(AbiCoder.defaultAbiCoder().decode([RESULT_TUPLE], dataSlice(revertData, 4))[0])
521
+ // 结果超过 24KB,合约通过 revert Aggregate3Result(...) 带回(区块号已在 callAggregate3 里校验)
522
+ const reverted = revertedResults(err)
523
+ if (reverted) {
524
+ return reverted.slice(0, requests.length)
393
525
  }
394
526
  // 有的钱包 / 中间层会丢掉 revert 数据,大结果拿不回来:对半拆开重试,小批量能正常 return
395
527
  if (requests.length > 1 && isExecutionError(err) && !hasRevertData(err)) {
396
528
  const mid = Math.ceil(requests.length / 2)
397
529
  const [a, b] = await Promise.all([
398
- callDeploylessChunk(ctx, requests.slice(0, mid), overrides),
399
- callDeploylessChunk(ctx, requests.slice(mid), overrides),
530
+ callDeploylessChunk(ctx, requests.slice(0, mid), overrides, atLeast),
531
+ callDeploylessChunk(ctx, requests.slice(mid), overrides, atLeast),
400
532
  ])
401
533
  return [...a, ...b]
402
534
  }
package/src/fallback.ts CHANGED
@@ -37,6 +37,22 @@ export interface CallValidation {
37
37
  * 不必把所有节点挨个试一遍——链上确实没有合约时,每个节点都会这样)
38
38
  */
39
39
  maxInvalid?: number
40
+ /**
41
+ * 检查节点返回的错误:可以抛出别的错误替换它(如 deployless 结果过大时通过 revert 带回的结果,
42
+ * 校验出节点落后时抛 NodeBehindError,这样也能换节点,而不是当成确定性的合约错误直接返回)
43
+ */
44
+ inspectError?: (err: unknown) => void
45
+ }
46
+
47
+ /** 节点的结果早于要求的区块(minBlock):节点落后,换下一个节点,不冷却(节点是健康的,只是慢几个块) */
48
+ export class NodeBehindError extends Error {
49
+ constructor(
50
+ readonly minBlock: bigint,
51
+ readonly block: bigint,
52
+ ) {
53
+ super(`Node is behind: block ${block} < minBlock ${minBlock}`)
54
+ this.name = 'NodeBehindError'
55
+ }
40
56
  }
41
57
 
42
58
  /** 节点返回的结果没通过校验(如 eth_call 返回 0x / 无法解码):换节点,不冷却(可能是合约确实不存在,所有节点都会这样) */
@@ -54,8 +70,13 @@ interface Health {
54
70
  timeouts: number
55
71
  /** 开了 stallTimeout 时,在并发竞争中输给后发节点的时间(慢但没出错):冷却期内排在健康节点之后 */
56
72
  slowAt: number
73
+ /** minBlock 校验发现节点落后的时间:短时间内(BEHIND_DEMOTE)排在健康节点之后——出块只要几秒,不必像故障那样冷却 30 秒 */
74
+ behindAt: number
57
75
  }
58
76
 
77
+ /** 落后的节点排到后面的时长:通常几秒内就会跟上,不长期影响其他查询的节点顺序 */
78
+ const BEHIND_DEMOTE = 5_000
79
+
59
80
  /** 连续超时多少次后才冷却(偶尔慢不算坏节点) */
60
81
  const TIMEOUTS_BEFORE_COOLDOWN = 3
61
82
  const MAX_TRACKED_URLS = 1000
@@ -67,7 +88,7 @@ function healthOf(key: string | object, scope?: number): Health {
67
88
  if (typeof key === 'string') {
68
89
  let health = healthByUrl.get(key)
69
90
  if (!health) {
70
- health = { failedAt: 0, timeouts: 0, slowAt: 0 }
91
+ health = { failedAt: 0, timeouts: 0, slowAt: 0, behindAt: 0 }
71
92
  healthByUrl.set(key, health)
72
93
  if (healthByUrl.size > MAX_TRACKED_URLS) {
73
94
  healthByUrl.delete(healthByUrl.keys().next().value as string)
@@ -82,7 +103,7 @@ function healthOf(key: string | object, scope?: number): Health {
82
103
  }
83
104
  let health = byScope.get(scope)
84
105
  if (!health) {
85
- health = { failedAt: 0, timeouts: 0, slowAt: 0 }
106
+ health = { failedAt: 0, timeouts: 0, slowAt: 0, behindAt: 0 }
86
107
  byScope.set(scope, health)
87
108
  }
88
109
  return health
@@ -150,16 +171,30 @@ export class FallbackRpc implements EthersLikeProvider {
150
171
  return this.#run(
151
172
  'call',
152
173
  (node) =>
153
- node.call(tx).then((result) => {
154
- if (accept && !accept(result)) {
155
- throw new InvalidResultError(result)
156
- }
157
- return result
158
- }),
174
+ node.call(tx).then(
175
+ (result) => {
176
+ if (accept && !accept(result)) {
177
+ throw new InvalidResultError(result)
178
+ }
179
+ return result
180
+ },
181
+ (err: unknown) => {
182
+ validation?.inspectError?.(err)
183
+ throw err
184
+ },
185
+ ),
159
186
  accept ? (validation?.maxInvalid ?? 2) : Number.POSITIVE_INFINITY,
160
187
  )
161
188
  }
162
189
 
190
+ /**
191
+ * 用任意方法请求节点,与 call / getBalance 相同的故障切换(写操作模块用:nonce、预估 gas、广播交易、查回执等)。
192
+ * fn 抛出的确定性错误(revert、参数错误等)直接抛出,不换节点
193
+ */
194
+ request<T>(method: string, fn: (node: EthersLikeProvider) => Promise<T>): Promise<T> {
195
+ return this.#run(method, fn)
196
+ }
197
+
163
198
  #health(index: number): Health {
164
199
  return healthOf(this.#healthKeys[index] as string | object, this.#healthScopes[index])
165
200
  }
@@ -324,6 +359,7 @@ export class FallbackRpc implements EthersLikeProvider {
324
359
  done(index)
325
360
  health.failedAt = 0
326
361
  health.timeouts = 0
362
+ health.behindAt = 0 // 已经能给出结果:不再因为之前落后而排到后面
327
363
  if (!settled) {
328
364
  health.slowAt = 0
329
365
  // 先发出却还没返回的节点输掉了竞争:记一次慢,冷却期内排在健康节点之后(之后返回成功也不清除)
@@ -340,7 +376,11 @@ export class FallbackRpc implements EthersLikeProvider {
340
376
  health.failedAt = Date.now()
341
377
  health.timeouts = 0
342
378
  }
343
- } else if (!deterministic && !isBehind(err) && !(err instanceof InvalidResultError) && !isNullResult(err)) {
379
+ } else if (err instanceof NodeBehindError || isBehind(err)) {
380
+ // 落后(结果早于 minBlock,或对按区块号的查询报“区块不存在”)不算故障、不冷却,
381
+ // 只在几秒内排到健康节点之后:紧接着的查询先问别的节点
382
+ health.behindAt = Date.now()
383
+ } else if (!deterministic && !(err instanceof InvalidResultError) && !isNullResult(err)) {
344
384
  health.failedAt = Date.now()
345
385
  }
346
386
  if (settled) {
@@ -378,7 +418,11 @@ export class FallbackRpc implements EthersLikeProvider {
378
418
  failed.forEach((at, i) => {
379
419
  if (at && now - at < this.#cooldown) {
380
420
  cooling.push(i)
381
- } else if (!failedAt && (health[i] as Health).slowAt && now - (health[i] as Health).slowAt < this.#cooldown) {
421
+ } else if (
422
+ !failedAt &&
423
+ (((health[i] as Health).slowAt && now - (health[i] as Health).slowAt < this.#cooldown) ||
424
+ ((health[i] as Health).behindAt && now - (health[i] as Health).behindAt < BEHIND_DEMOTE))
425
+ ) {
382
426
  slow.push(i)
383
427
  } else {
384
428
  healthy.push(i)
@@ -433,7 +477,7 @@ function isRateLimited(err: unknown): boolean {
433
477
  /**
434
478
  * 节点还没有请求的区块(minBlock 按指定区块重查时,落后的节点会这样报错):只换节点、不冷却——节点本身是健康的,只是慢一两个块
435
479
  */
436
- function isBehind(err: unknown): boolean {
480
+ export function isBehind(err: unknown): boolean {
437
481
  return BEHIND_RE.test(errorText(err))
438
482
  }
439
483