@w3lib/evm-batch-call 0.2.0 → 0.4.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 (108) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +184 -30
  3. package/contracts/DeploylessMulticall3.sol +5 -0
  4. package/dist/aggregate.d.ts +25 -3
  5. package/dist/aggregate.d.ts.map +1 -1
  6. package/dist/aggregate.js +143 -5
  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 +59 -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 +121 -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 +54 -3
  33. package/dist/fallback.d.ts.map +1 -1
  34. package/dist/fallback.js +273 -21
  35. package/dist/fallback.js.map +1 -1
  36. package/dist/index.d.ts +10 -8
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +7 -5
  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 +145 -0
  48. package/dist/owner.d.ts.map +1 -0
  49. package/dist/owner.js +510 -0
  50. package/dist/owner.js.map +1 -0
  51. package/dist/provider.d.ts +63 -18
  52. package/dist/provider.d.ts.map +1 -1
  53. package/dist/provider.js +166 -100
  54. package/dist/provider.js.map +1 -1
  55. package/dist/scan.d.ts +59 -0
  56. package/dist/scan.d.ts.map +1 -0
  57. package/dist/scan.js +245 -0
  58. package/dist/scan.js.map +1 -0
  59. package/dist/shortcuts.d.ts +34 -35
  60. package/dist/shortcuts.d.ts.map +1 -1
  61. package/dist/shortcuts.js +41 -73
  62. package/dist/shortcuts.js.map +1 -1
  63. package/dist/source.d.ts +6 -2
  64. package/dist/source.d.ts.map +1 -1
  65. package/dist/source.js +49 -6
  66. package/dist/source.js.map +1 -1
  67. package/dist/subpaths/nft.d.ts +46 -0
  68. package/dist/subpaths/nft.d.ts.map +1 -0
  69. package/dist/subpaths/nft.js +55 -0
  70. package/dist/subpaths/nft.js.map +1 -0
  71. package/dist/subpaths/owner.d.ts +33 -0
  72. package/dist/subpaths/owner.d.ts.map +1 -0
  73. package/dist/subpaths/owner.js +34 -0
  74. package/dist/subpaths/owner.js.map +1 -0
  75. package/dist/tron.d.ts +2 -0
  76. package/dist/tron.d.ts.map +1 -1
  77. package/dist/tron.js +5 -0
  78. package/dist/tron.js.map +1 -1
  79. package/dist/util.d.ts +5 -0
  80. package/dist/util.d.ts.map +1 -1
  81. package/dist/util.js +23 -0
  82. package/dist/util.js.map +1 -1
  83. package/dist/watch.d.ts +25 -0
  84. package/dist/watch.d.ts.map +1 -0
  85. package/dist/watch.js +105 -0
  86. package/dist/watch.js.map +1 -0
  87. package/package.json +19 -10
  88. package/src/aggregate.ts +177 -9
  89. package/src/batcher.ts +69 -9
  90. package/src/call.ts +42 -2
  91. package/src/chains.ts +15 -0
  92. package/src/deployless.ts +1 -1
  93. package/src/erc20.ts +171 -8
  94. package/src/events.ts +42 -0
  95. package/src/fallback.ts +306 -22
  96. package/src/index.ts +20 -27
  97. package/src/multicall.ts +34 -2
  98. package/src/nft.ts +5 -0
  99. package/src/owner.ts +660 -0
  100. package/src/provider.ts +255 -112
  101. package/src/scan.ts +293 -0
  102. package/src/shortcuts.ts +76 -88
  103. package/src/source.ts +51 -8
  104. package/src/subpaths/nft.ts +107 -0
  105. package/src/subpaths/owner.ts +69 -0
  106. package/src/tron.ts +7 -0
  107. package/src/util.ts +27 -0
  108. package/src/watch.ts +149 -0
package/dist/aggregate.js CHANGED
@@ -1,11 +1,35 @@
1
1
  import { AbiCoder, Interface, concat, dataSlice, id, isError } from 'ethers';
2
+ import { encodeUint256 } from './call.js';
2
3
  import { DEPLOYLESS_MULTICALL3_BYTECODE } from './deployless.js';
3
4
  import { isExecutionError } from './errors.js';
4
5
  import { MULTICALL3_ADDRESS } from './multicall.js';
6
+ import { isTronChain } from './tron.js';
7
+ const balanceOfInterface = new Interface(['function balanceOf(address owner) view returns (uint256)']);
5
8
  export const multicall3Interface = new Interface([
6
9
  'function aggregate3((address target, bool allowFailure, bytes callData)[] calls) payable returns ((bool success, bytes returnData)[] returnData)',
7
10
  'function getEthBalance(address addr) view returns (uint256 balance)',
11
+ 'function getBlockNumber() view returns (uint256 blockNumber)',
8
12
  ]);
13
+ /** 区块号查询(minBlock 检查用):目标在执行时换成 multicall 地址 */
14
+ const BLOCK_NUMBER_REQUEST = {
15
+ target: MULTICALL3_ADDRESS,
16
+ allowFailure: true,
17
+ callData: multicall3Interface.encodeFunctionData('getBlockNumber'),
18
+ blockNumber: true,
19
+ };
20
+ /**
21
+ * Arbitrum 系的链(Arbitrum One / Nova、Orbit 链如 Robinhood Chain)在合约里 block.number 是 L1 区块号,
22
+ * L2 区块号要从 ArbSys 预编译合约(0x64)的 arbBlockNumber() 读。区块号查询时顺带读它:有返回值就用它,
23
+ * 其他链上 0x64 没有代码、返回空数据,忽略
24
+ */
25
+ const ARB_BLOCK_NUMBER_REQUEST = {
26
+ target: '0x0000000000000000000000000000000000000064',
27
+ allowFailure: true,
28
+ callData: '0xa3b1b31d', // arbBlockNumber()
29
+ };
30
+ /** minBlock:所有节点都落后时的重试间隔和总时长 */
31
+ const MIN_BLOCK_RETRY_INTERVAL = 1000;
32
+ const MIN_BLOCK_DEADLINE = 10_000;
9
33
  const CALL3_TUPLE = 'tuple(address target, bool allowFailure, bytes callData)[]';
10
34
  const RESULT_TUPLE = 'tuple(bool success, bytes returnData)[]';
11
35
  /** error Aggregate3Result((bool,bytes)[]) */
@@ -24,18 +48,132 @@ export async function aggregate(ctx, requests, overrides = {}) {
24
48
  if (requests.length === 0) {
25
49
  return [];
26
50
  }
51
+ const mode = ctx.nativeBalance ?? 'contract';
52
+ if (mode !== 'contract' && requests.some((req) => req.ethBalanceOf !== undefined)) {
53
+ return typeof mode === 'object' ? aggregate(ctx, requests.map((req) => toErc20Balance(req, mode.erc20)), overrides) : aggregateWithRpcBalances(ctx, requests, overrides);
54
+ }
27
55
  const size = Math.max(1, ctx.chunkSize);
56
+ const run = overrides.minBlock !== undefined && isLatest(overrides.blockTag) ? aggregateChunkAtLeast : aggregateChunk;
28
57
  if (requests.length <= size) {
29
- return aggregateChunk(ctx, requests, overrides);
58
+ return run(ctx, requests, overrides);
30
59
  }
31
60
  const chunks = [];
32
61
  for (let i = 0; i < requests.length; i += size) {
33
62
  chunks.push(requests.slice(i, i + size));
34
63
  }
35
- const results = await Promise.all(chunks.map((chunk) => aggregateChunk(ctx, chunk, overrides)));
64
+ const results = await Promise.all(chunks.map((chunk) => run(ctx, chunk, overrides)));
36
65
  return results.flat();
37
66
  }
67
+ /**
68
+ * minBlock:先按最新状态查,同一次 eth_call 里顺带读区块号;节点落后时按 minBlock 指定区块重查——
69
+ * 落后的节点对未来区块报 “header not found” 等错误,FallbackRpc 换节点(不冷却);所有节点都落后时稍等重试。
70
+ * 重查得到的是 minBlock 那个区块的状态(已包含刚确认的交易)。Tron 只能查最新状态,落后时等节点跟上再查。
71
+ * overrides.signal 取消后不再重试
72
+ */
73
+ async function aggregateChunkAtLeast(ctx, requests, overrides) {
74
+ const minBlock = overrides.minBlock;
75
+ // Tron 节点只能查最新状态(不支持按区块号查询)
76
+ const canPinBlock = !isTronChain(ctx.chainId);
77
+ return retryUntilCaughtUp(overrides, async () => {
78
+ const results = await aggregateChunk(ctx, [...requests, BLOCK_NUMBER_REQUEST], overrides);
79
+ if ((blockOf(results[results.length - 1]) ?? -1n) >= BigInt(minBlock)) {
80
+ return results.slice(0, -1);
81
+ }
82
+ if (canPinBlock) {
83
+ return aggregateChunk(ctx, requests, { ...overrides, blockTag: minBlock });
84
+ }
85
+ throw new Error(`Node is behind minBlock ${minBlock}`);
86
+ });
87
+ }
88
+ /** 节点落后时的重试:确定性错误(合约执行结果)直接抛;其余错误每秒重试,最多约 10 秒;signal 取消后停止 */
89
+ async function retryUntilCaughtUp(overrides, run) {
90
+ const deadline = Date.now() + MIN_BLOCK_DEADLINE;
91
+ for (;;) {
92
+ overrides.signal?.throwIfAborted();
93
+ try {
94
+ return await run();
95
+ }
96
+ catch (err) {
97
+ if (isExecutionError(err) || Date.now() + MIN_BLOCK_RETRY_INTERVAL > deadline) {
98
+ throw err;
99
+ }
100
+ }
101
+ await sleep(MIN_BLOCK_RETRY_INTERVAL, overrides.signal);
102
+ }
103
+ }
104
+ function sleep(ms, signal) {
105
+ return new Promise((resolve, reject) => {
106
+ const timer = setTimeout(() => {
107
+ signal?.removeEventListener('abort', onAbort);
108
+ resolve();
109
+ }, ms);
110
+ const onAbort = () => {
111
+ clearTimeout(timer);
112
+ reject(signal?.reason);
113
+ };
114
+ signal?.addEventListener('abort', onAbort, { once: true });
115
+ });
116
+ }
117
+ /** 区块号查询的结果;失败时为 null */
118
+ function blockOf(result) {
119
+ return result?.success && result.returnData !== '0x' ? BigInt(result.returnData) : null;
120
+ }
121
+ /** 主币余额请求改成主币 ERC20 合约的 balanceOf(返回值同样是 uint256,解码方式不变) */
122
+ function toErc20Balance(req, erc20) {
123
+ if (req.ethBalanceOf === undefined) {
124
+ return req;
125
+ }
126
+ return { target: erc20, allowFailure: req.allowFailure, callData: balanceOfInterface.encodeFunctionData('balanceOf', [req.ethBalanceOf]) };
127
+ }
128
+ /**
129
+ * 主币余额单独走 eth_getBalance,结果按原顺序合并;节点错误照常抛出。
130
+ * 需要区块号(withBlock / minBlock)时,先执行其余请求并读出实际区块号,再在这个区块上读主币余额——
131
+ * 主币和代币余额、blockNumber 一致,minBlock 的等待 / 换节点也由其余请求负责;否则两者同时发出
132
+ */
133
+ async function aggregateWithRpcBalances(ctx, requests, overrides) {
134
+ const others = requests.filter((req) => req.ethBalanceOf === undefined);
135
+ const owners = requests.filter((req) => req.ethBalanceOf !== undefined).map((req) => req.ethBalanceOf);
136
+ const contractCtx = { ...ctx, nativeBalance: 'contract' };
137
+ let otherResults;
138
+ let balances;
139
+ // Tron 节点只能查最新状态,不能按区块号读余额
140
+ if (isLatest(overrides.blockTag) && !isTronChain(ctx.chainId) && (overrides.minBlock !== undefined || others.some((req) => req.blockNumber))) {
141
+ const results = await aggregate(contractCtx, [...others, BLOCK_NUMBER_REQUEST], overrides);
142
+ const block = blockOf(results.pop());
143
+ otherResults = results;
144
+ const blockTag = block === null ? overrides.blockTag : Number(block);
145
+ const read = () => Promise.all(owners.map((owner) => ctx.provider.getBalance(owner, blockTag)));
146
+ // 只有 minBlock 才等待重试(读的区块可能来自比当前节点更新的节点);只要 withBlock 时出错照常抛出
147
+ balances = await (overrides.minBlock !== undefined ? retryUntilCaughtUp(overrides, read) : read());
148
+ }
149
+ else {
150
+ ;
151
+ [otherResults, balances] = await Promise.all([
152
+ aggregate(contractCtx, others, overrides),
153
+ Promise.all(owners.map((owner) => ctx.provider.getBalance(owner, overrides.blockTag))),
154
+ ]);
155
+ }
156
+ let i = 0;
157
+ let j = 0;
158
+ return requests.map((req) => req.ethBalanceOf === undefined ? otherResults[i++] : { success: true, returnData: encodeUint256(balances[j++]) });
159
+ }
160
+ /** 执行一批请求;其中有区块号查询时顺带读 Arbitrum 的 L2 区块号,并用它替换(见 ARB_BLOCK_NUMBER_REQUEST) */
38
161
  async function aggregateChunk(ctx, requests, overrides) {
162
+ if (!requests.some((req) => req.blockNumber)) {
163
+ return aggregateRawChunk(ctx, requests, overrides);
164
+ }
165
+ const results = await aggregateRawChunk(ctx, [...requests, ARB_BLOCK_NUMBER_REQUEST], overrides);
166
+ const arb = results.pop();
167
+ if (arb.success && arb.returnData.length === 66) {
168
+ requests.forEach((req, i) => {
169
+ if (req.blockNumber) {
170
+ results[i] = arb;
171
+ }
172
+ });
173
+ }
174
+ return results;
175
+ }
176
+ async function aggregateRawChunk(ctx, requests, overrides) {
39
177
  const multicall = ctx.multicall;
40
178
  if (multicall && isUsable(ctx.chainId, multicall, overrides.blockTag)) {
41
179
  const results = await callContract(ctx, multicall, requests, overrides);
@@ -58,7 +196,7 @@ async function aggregateChunk(ctx, requests, overrides) {
58
196
  */
59
197
  async function callContract(ctx, multicall, requests, overrides) {
60
198
  const calls = requests.map((req) => ({
61
- target: req.ethBalanceOf ? multicall.address : req.target,
199
+ target: req.ethBalanceOf || req.blockNumber ? multicall.address : req.target,
62
200
  allowFailure: req.allowFailure,
63
201
  callData: req.callData,
64
202
  }));
@@ -105,8 +243,8 @@ async function callDeployless(ctx, requests, overrides) {
105
243
  }
106
244
  async function callDeploylessChunk(ctx, requests, overrides) {
107
245
  const args = AbiCoder.defaultAbiCoder().encode([CALL3_TUPLE], [
108
- requests.map(({ target, allowFailure, callData, ethBalanceOf }) => ({
109
- target: ethBalanceOf ? MULTICALL3_ADDRESS : target,
246
+ requests.map(({ target, allowFailure, callData, ethBalanceOf, blockNumber }) => ({
247
+ target: ethBalanceOf || blockNumber ? MULTICALL3_ADDRESS : target,
110
248
  allowFailure,
111
249
  callData,
112
250
  })),
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../src/aggregate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../src/aggregate.ts"],"names":[],"mappings":"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"}
package/dist/batcher.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type Call, type CallRequest, type RawResult } from './call.js';
1
+ import { type Call, type CallRequest, type RawResult, type Settled } from './call.js';
2
2
  import type { CallOverrides } from './aggregate.js';
3
3
  export interface BatchOptions {
4
4
  /** 收集窗口(毫秒),窗口内发起的 call 合并成一次 multicall。默认 0:同一事件循环 tick 内的调用合并 */
@@ -16,6 +16,11 @@ export declare class Batcher {
16
16
  #private;
17
17
  constructor(run: Runner, options?: BatchOptions);
18
18
  load<T>(call: Call, overrides?: CallOverrides): Promise<T>;
19
+ /**
20
+ * 一组调用一起入队(不会被 maxSize 拆到不同批次),逐条返回成功的值或失败原因;
21
+ * 只有节点错误(整批失败)时 reject。balances / tokens / allowances 用它参与自动合并。
22
+ */
23
+ loadSettled(calls: readonly Call[], overrides?: CallOverrides): Promise<Settled[]>;
19
24
  }
20
25
  export {};
21
26
  //# sourceMappingURL=batcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"batcher.d.ts","sourceRoot":"","sources":["../src/batcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAA;AAC/F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAGnD,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,KAAK,MAAM,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,aAAa,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;AAczF;;;;GAIG;AACH,qBAAa,OAAO;;gBAMN,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB;IAMnD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,GAAE,aAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;CAmF/D"}
1
+ {"version":3,"file":"batcher.d.ts","sourceRoot":"","sources":["../src/batcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6D,KAAK,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAA;AAChJ,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAGnD,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,KAAK,MAAM,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,aAAa,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;AAsCzF;;;;GAIG;AACH,qBAAa,OAAO;;gBAMN,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB;IAMnD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,GAAE,aAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAS9D;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,EAAE,SAAS,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CA0GvF"}
package/dist/batcher.js CHANGED
@@ -1,5 +1,24 @@
1
- import { decodeCall, encodeCall } from './call.js';
1
+ import { decodeCall, encodeCall, encodeFailureReason, settleResult } from './call.js';
2
2
  import { CallFailedError } from './errors.js';
3
+ /**
4
+ * 整批请求的 signal:所有调用方都传了 signal、并且都取消后才取消(如 minBlock 的等待重试随之停止);
5
+ * 有调用方没传 signal 时返回 undefined(整批照常完成)
6
+ */
7
+ function combinedSignal(entries) {
8
+ const signals = [...new Set(entries.map((entry) => entry.signal))];
9
+ if (!signals.length || signals.some((signal) => signal === undefined)) {
10
+ return undefined;
11
+ }
12
+ const controller = new AbortController();
13
+ const check = () => {
14
+ if (signals.every((signal) => signal?.aborted)) {
15
+ controller.abort(signals[0]?.reason);
16
+ }
17
+ };
18
+ signals.forEach((signal) => signal?.addEventListener('abort', check, { once: true }));
19
+ check();
20
+ return controller.signal;
21
+ }
3
22
  /**
4
23
  * DataLoader 式的自动合并:各处独立调用 `provider.call(x)`,
5
24
  * 落在同一个收集窗口、且 blockTag/from 相同的调用会合成一次 aggregate3。
@@ -16,22 +35,44 @@ export class Batcher {
16
35
  this.#maxSize = Math.max(1, options.maxSize ?? 500);
17
36
  }
18
37
  load(call, overrides = {}) {
19
- const key = `${String(overrides.blockTag ?? 'latest')}|${overrides.from ?? ''}`;
38
+ const [key, queue] = this.#queue(overrides);
39
+ const promise = new Promise((resolve, reject) => {
40
+ queue.entries.push({ call, signal: overrides.signal, settle: false, resolve: resolve, reject });
41
+ });
42
+ this.#schedule(key, queue);
43
+ return promise;
44
+ }
45
+ /**
46
+ * 一组调用一起入队(不会被 maxSize 拆到不同批次),逐条返回成功的值或失败原因;
47
+ * 只有节点错误(整批失败)时 reject。balances / tokens / allowances 用它参与自动合并。
48
+ */
49
+ loadSettled(calls, overrides = {}) {
50
+ if (!calls.length) {
51
+ return Promise.resolve([]);
52
+ }
53
+ const [key, queue] = this.#queue(overrides);
54
+ const promises = calls.map((call) => new Promise((resolve, reject) => {
55
+ queue.entries.push({ call, signal: overrides.signal, settle: true, resolve: resolve, reject });
56
+ }));
57
+ this.#schedule(key, queue);
58
+ return Promise.all(promises);
59
+ }
60
+ #queue(overrides) {
61
+ const key = `${String(overrides.blockTag ?? 'latest')}|${overrides.from ?? ''}|${overrides.minBlock ?? ''}`;
20
62
  let queue = this.#queues.get(key);
21
63
  if (!queue) {
22
64
  queue = { overrides, entries: [], timer: null };
23
65
  this.#queues.set(key, queue);
24
66
  }
25
- const promise = new Promise((resolve, reject) => {
26
- queue.entries.push({ call, resolve: resolve, reject });
27
- });
67
+ return [key, queue];
68
+ }
69
+ #schedule(key, queue) {
28
70
  if (queue.entries.length >= this.#maxSize) {
29
71
  this.#flush(key);
30
72
  }
31
73
  else if (!queue.timer) {
32
74
  queue.timer = setTimeout(() => this.#flush(key), this.#wait);
33
75
  }
34
- return promise;
35
76
  }
36
77
  #flush(key) {
37
78
  const queue = this.#queues.get(key);
@@ -54,11 +95,16 @@ export class Batcher {
54
95
  request = encodeCall(entry.call, true);
55
96
  }
56
97
  catch (err) {
57
- entry.reject(err);
98
+ if (entry.settle) {
99
+ entry.resolve({ ok: false, reason: encodeFailureReason(err) });
100
+ }
101
+ else {
102
+ entry.reject(err);
103
+ }
58
104
  requestIndex.push(-1);
59
105
  continue;
60
106
  }
61
- const dedupeKey = `${request.ethBalanceOf ? 'eth' : request.target.toLowerCase()}|${request.callData}`;
107
+ const dedupeKey = `${request.ethBalanceOf ? 'eth' : request.blockNumber ? 'block' : request.target.toLowerCase()}|${request.callData}`;
62
108
  let index = indexByKey.get(dedupeKey);
63
109
  if (index === undefined) {
64
110
  index = requests.push(request) - 1;
@@ -71,7 +117,7 @@ export class Batcher {
71
117
  }
72
118
  let results;
73
119
  try {
74
- results = await this.#run(requests, overrides);
120
+ results = await this.#run(requests, { ...overrides, signal: combinedSignal(entries) });
75
121
  }
76
122
  catch (err) {
77
123
  entries.forEach((entry, i) => requestIndex[i] !== -1 && entry.reject(err));
@@ -83,6 +129,10 @@ export class Batcher {
83
129
  return;
84
130
  }
85
131
  const result = results[index];
132
+ if (entry.settle) {
133
+ entry.resolve(settleResult(entry.call, result));
134
+ return;
135
+ }
86
136
  if (!result.success) {
87
137
  entry.reject(new CallFailedError(entry.call, result.returnData));
88
138
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"batcher.js","sourceRoot":"","sources":["../src/batcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batcher.js","sourceRoot":"","sources":["../src/batcher.ts"],"names":[],"mappings":"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"}
package/dist/call.d.ts CHANGED
@@ -26,9 +26,10 @@ export interface Call<T = any> {
26
26
  /**
27
27
  * 内部标记:
28
28
  * - ethBalance:原生币余额查询(见 Provider.getEthBalance)
29
+ * - blockNumber:当前区块号(Multicall3.getBlockNumber;deployless 合约里直接返回 block.number)
29
30
  * - stringOrBytes32:string 返回值,解码失败时按 bytes32 解析(MKR 等老代币的 symbol / name)
30
31
  */
31
- kind?: 'ethBalance' | 'stringOrBytes32';
32
+ kind?: 'ethBalance' | 'blockNumber' | 'stringOrBytes32';
32
33
  /** 仅用于类型推断 */
33
34
  readonly __result?: T;
34
35
  }
@@ -42,13 +43,37 @@ export interface RawResult {
42
43
  success: boolean;
43
44
  returnData: string;
44
45
  }
46
+ /**
47
+ * 单条调用的失败原因:
48
+ * - invalid-address:合约地址或参数里的地址非法
49
+ * - invalid-argument:其他参数编码失败(个数不对、数值超出范围等)
50
+ * - no-contract:调用成功但返回空数据,多半是目标地址上没有合约
51
+ * - reverted:执行 revert
52
+ * - decode-failed:有返回数据但无法按 ABI 解码(如合约不是预期的标准)
53
+ * - not-configured:没有发请求的信息缺失,如主币不在内置链信息表里、也没有配置 nativeName / nativeSymbol
54
+ */
55
+ export type FailureReason = 'invalid-address' | 'invalid-argument' | 'no-contract' | 'reverted' | 'decode-failed' | 'not-configured';
56
+ /** 单条调用的结果:成功的值,或失败原因 */
57
+ export type Settled<T = any> = {
58
+ ok: true;
59
+ value: T;
60
+ } | {
61
+ ok: false;
62
+ reason: FailureReason;
63
+ };
64
+ /** 按 multicall 的原始结果判断成功 / 失败原因 */
65
+ export declare function settleResult<T>(call: Call, result: RawResult): Settled<T>;
66
+ /** 参数编码失败的原因:地址非法,还是其他参数问题 */
67
+ export declare function encodeFailureReason(err: unknown): FailureReason;
45
68
  /** 发给 aggregate3 前的单条请求 */
46
69
  export interface CallRequest {
47
70
  target: string;
48
71
  allowFailure: boolean;
49
72
  callData: string;
50
- /** 原生币余额查询:有 multicall 合约时走 getEthBalance,deployless 时改走 eth_getBalance */
73
+ /** 原生币余额查询:默认有 multicall 合约时走 getEthBalance、deployless 时用 BALANCE;其他读取方式见 NativeBalanceMode */
51
74
  ethBalanceOf?: string;
75
+ /** 区块号查询:目标换成实际的 multicall 地址(deployless 时由合约内部处理) */
76
+ blockNumber?: boolean;
52
77
  }
53
78
  export declare function encodeCall(call: Call, allowFailure: boolean): CallRequest;
54
79
  /** 单返回值直接返回该值,多返回值返回 ethers Result(可按下标或名字取) */
@@ -1 +1 @@
1
- {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../src/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgG,KAAK,gBAAgB,EAA+B,MAAM,QAAQ,CAAA;AAKzK,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,CAAA;AAE1B;;;GAGG;AAEH,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG;IAC3B,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACnC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACpC,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;QACnC,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;QAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KACpC,CAAA;IACD;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,GAAG,iBAAiB,CAAA;IACvC,cAAc;IACd,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;CACtB;AAED,2EAA2E;AAC3E,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;AAEzD,MAAM,WAAW,YAAa,SAAQ,IAAI;IACxC,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,0BAA0B;AAC1B,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,2BAA2B;AAC3B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAgCD,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,GAAG,WAAW,CAUzE;AAkCD,gDAAgD;AAChD,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,CAQ/D;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAG3D;AAkBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD"}
1
+ {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../src/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgG,KAAK,gBAAgB,EAA+B,MAAM,QAAQ,CAAA;AAKzK,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,CAAA;AAE1B;;;GAGG;AAEH,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG;IAC3B,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACnC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACpC,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;QACnC,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;QAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KACpC,CAAA;IACD;;;;;OAKG;IACH,IAAI,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,iBAAiB,CAAA;IACvD,cAAc;IACd,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;CACtB;AAED,2EAA2E;AAC3E,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;AAEzD,MAAM,WAAW,YAAa,SAAQ,IAAI;IACxC,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,0BAA0B;AAC1B,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,aAAa,GAAG,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAA;AAEpI,yBAAyB;AACzB,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAA;AAE5F,mCAAmC;AACnC,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAazE;AAED,8BAA8B;AAC9B,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAG/D;AAED,2BAA2B;AAC3B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,+FAA+F;IAC/F,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sDAAsD;IACtD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAgCD,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,GAAG,WAAW,CAWzE;AAkCD,gDAAgD;AAChD,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,CAQ/D;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAG3D;AAkBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD"}
package/dist/call.js CHANGED
@@ -1,5 +1,26 @@
1
1
  import { FunctionFragment, Interface, Utf8ErrorFuncs, getAddress, toBeHex, toUtf8String, zeroPadValue } from 'ethers';
2
2
  import { isTronAddress, toEvmAddress } from './tron.js';
3
+ /** 按 multicall 的原始结果判断成功 / 失败原因 */
4
+ export function settleResult(call, result) {
5
+ if (!result.success) {
6
+ return { ok: false, reason: 'reverted' };
7
+ }
8
+ // 没有返回值的函数成功时本来就返回空数据,照常解码;有返回值却拿到空数据,多半是地址上没有合约
9
+ if ((!result.returnData || result.returnData === '0x') && call.outputs.length > 0) {
10
+ return { ok: false, reason: 'no-contract' };
11
+ }
12
+ try {
13
+ return { ok: true, value: decodeCall(call, result.returnData) };
14
+ }
15
+ catch {
16
+ return { ok: false, reason: 'decode-failed' };
17
+ }
18
+ }
19
+ /** 参数编码失败的原因:地址非法,还是其他参数问题 */
20
+ export function encodeFailureReason(err) {
21
+ const e = err;
22
+ return /address/i.test(String(e?.argument ?? '')) || /address/i.test(String(e?.message ?? '')) ? 'invalid-address' : 'invalid-argument';
23
+ }
3
24
  // inputs → name → outputs → Interface。同一份 ABI 生成的 Call 共享 inputs/outputs 数组(见 contract.ts 的 ABI 缓存),
4
25
  // 按引用缓存,避免每条 Call 都重新解析;三者都参与 key,手工构造的 Call 共用数组时也不会串
5
26
  const interfaceCache = new WeakMap();
@@ -37,6 +58,7 @@ export function encodeCall(call, allowFailure) {
37
58
  allowFailure,
38
59
  callData: iface.encodeFunctionData(fragment, params),
39
60
  ethBalanceOf: call.kind === 'ethBalance' ? toEvmAddress(params[0]) : undefined,
61
+ blockNumber: call.kind === 'blockNumber' ? true : undefined,
40
62
  };
41
63
  }
42
64
  // Tron 的 T 开头地址在 ABI 里就是去掉 0x41 前缀的 20 字节,这里统一转成 0x 形式再编码
package/dist/call.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"call.js","sourceRoot":"","sources":["../src/call.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call.js","sourceRoot":"","sources":["../src/call.ts"],"names":[],"mappings":"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"}
package/dist/chains.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { NativeBalanceMode } from './aggregate.js';
1
2
  /**
2
3
  * 内置链的主币信息(balances() / tokens() 里主币的 name / symbol / 精度)。
3
4
  * 来源:https://chainid.network/chains.json 的 nativeCurrency;999 在该表里与 Wanchain 测试网撞号,
@@ -10,4 +11,10 @@ export interface NativeCurrency {
10
11
  }
11
12
  export declare const NATIVE_CURRENCIES: Readonly<Record<number, NativeCurrency>>;
12
13
  export declare function getNativeCurrency(chainId: number): NativeCurrency | undefined;
14
+ /**
15
+ * 合约里读主币余额不可靠的链,以及应改用的读取方式(ProviderConfig.nativeBalance 的默认值)。
16
+ * 新链可用 `pnpm check:rpc` 比对“合约里读到的主币余额”和 eth_getBalance 来发现。
17
+ */
18
+ export declare const NATIVE_BALANCE_MODES: Readonly<Record<number, NativeBalanceMode>>;
19
+ export declare function getNativeBalanceMode(chainId: number): NativeBalanceMode;
13
20
  //# sourceMappingURL=chains.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA8BtE,CAAA;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE7E"}
1
+ {"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEvD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA8BtE,CAAA;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE7E;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAG5E,CAAA;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAEvE"}
package/dist/chains.js CHANGED
@@ -32,4 +32,15 @@ export const NATIVE_CURRENCIES = {
32
32
  export function getNativeCurrency(chainId) {
33
33
  return NATIVE_CURRENCIES[chainId];
34
34
  }
35
+ /**
36
+ * 合约里读主币余额不可靠的链,以及应改用的读取方式(ProviderConfig.nativeBalance 的默认值)。
37
+ * 新链可用 `pnpm check:rpc` 比对“合约里读到的主币余额”和 eth_getBalance 来发现。
38
+ */
39
+ export const NATIVE_BALANCE_MODES = {
40
+ // Anubis:Multicall3.getEthBalance 和 deployless 里的 BALANCE 对任何地址都返回 0,eth_getBalance 正常
41
+ 6714: 'rpc',
42
+ };
43
+ export function getNativeBalanceMode(chainId) {
44
+ return NATIVE_BALANCE_MODES[chainId] ?? 'contract';
45
+ }
35
46
  //# sourceMappingURL=chains.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  /** constructor((address target, bool allowFailure, bytes callData)[] calls) — 以 aggregate3 的返回格式带回结果 */
2
- export declare const DEPLOYLESS_MULTICALL3_BYTECODE = "0x608060405260405161060f38038061060f8339810160408190526100229161036c565b80516000816001600160401b0381111561003e5761003e6102da565b60405190808252806020026020018201604052801561008457816020015b60408051808201909152600081526060602082015281526020019060019003908161005c5790505b50905060005b828110156102875760008482815181106100a6576100a6610507565b602090810291909101015160408101518151919250906001600160a01b031673ca11bde05977b3631167028862be2a173976ca111480156100e8575080516024145b801561010c5750631348c07360e21b6101008261051d565b6001600160e01b031916145b1561017e5760248101516040805180820182526001815290516001600160a01b039290921691602080830191610149918531910190815260200190565b60405160208183030381529060405281525085858151811061016d5761016d610507565b60200260200101819052505061027d565b60008083600001516001600160a01b03168360405161019d919061055b565b6000604051808303816000865af19150503d80600081146101da576040519150601f19603f3d011682016040523d82523d6000602084013e6101df565b606091505b5091509150811580156101f457508360200151155b156102465760405162461bcd60e51b815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064015b60405180910390fd5b604051806040016040528083151581526020018281525086868151811061026f5761026f610507565b602002602001018190525050505b505060010161008a565b5060008160405160200161029b9190610577565b6040516020818303038152906040529050616000815111156102d25781604051633649f05160e01b815260040161023d9190610577565b805160208201f35b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715610312576103126102da565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610340576103406102da565b604052919050565b60005b8381101561036357818101518382015260200161034b565b50506000910152565b60006020828403121561037e57600080fd5b81516001600160401b0381111561039457600080fd5b8201601f810184136103a557600080fd5b80516001600160401b038111156103be576103be6102da565b8060051b6103ce60208201610318565b918252602081840181019290810190878411156103ea57600080fd5b6020850192505b838310156104fc5782516001600160401b0381111561040f57600080fd5b85016060818a03601f1901121561042557600080fd5b61042d6102f0565b60208201516001600160a01b038116811461044757600080fd5b81526040820151801515811461045c57600080fd5b602082015260608201516001600160401b0381111561047a57600080fd5b60208184010192505089601f83011261049257600080fd5b81516001600160401b038111156104ab576104ab6102da565b6104be601f8201601f1916602001610318565b8181528b60208386010111156104d357600080fd5b6104e4826020830160208701610348565b604083015250835250602092830192909101906103f1565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b805160208201516001600160e01b0319811691906004821015610554576001600160e01b0319600483900360031b81901b82161692505b5050919050565b6000825161056d818460208701610348565b9190910192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561060257603f198786030184528151805115158652602081015190506040602087015280518060408801526105df816060890160208501610348565b601f01601f1916959095016060019450602093840193919091019060010161059f565b5092969550505050505056fe";
2
+ export declare const DEPLOYLESS_MULTICALL3_BYTECODE = "0x60806040526040516106c13803806106c18339810160408190526100229161041e565b80516000816001600160401b0381111561003e5761003e61038c565b60405190808252806020026020018201604052801561008457816020015b60408051808201909152600081526060602082015281526020019060019003908161005c5790505b50905060005b828110156103395760008482815181106100a6576100a66105b9565b602090810291909101015160408101518151919250906001600160a01b031673ca11bde05977b3631167028862be2a173976ca111480156100e8575080516024145b801561010c5750631348c07360e21b610100826105cf565b6001600160e01b031916145b1561017e5760248101516040805180820182526001815290516001600160a01b039290921691602080830191610149918531910190815260200190565b60405160208183030381529060405281525085858151811061016d5761016d6105b9565b60200260200101819052505061032f565b81516001600160a01b031673ca11bde05977b3631167028862be2a173976ca111480156101ac575080516004145b80156101d057506310b2ec5760e21b6101c4826105cf565b6001600160e01b031916145b15610230576040518060400160405280600115158152602001436040516020016101fc91815260200190565b604051602081830303815290604052815250848481518110610220576102206105b9565b602002602001018190525061032f565b60008083600001516001600160a01b03168360405161024f919061060d565b6000604051808303816000865af19150503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150811580156102a657508360200151155b156102f85760405162461bcd60e51b815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064015b60405180910390fd5b6040518060400160405280831515815260200182815250868681518110610321576103216105b9565b602002602001018190525050505b505060010161008a565b5060008160405160200161034d9190610629565b6040516020818303038152906040529050616000815111156103845781604051633649f05160e01b81526004016102ef9190610629565b805160208201f35b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156103c4576103c461038c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103f2576103f261038c565b604052919050565b60005b838110156104155781810151838201526020016103fd565b50506000910152565b60006020828403121561043057600080fd5b81516001600160401b0381111561044657600080fd5b8201601f8101841361045757600080fd5b80516001600160401b038111156104705761047061038c565b8060051b610480602082016103ca565b9182526020818401810192908101908784111561049c57600080fd5b6020850192505b838310156105ae5782516001600160401b038111156104c157600080fd5b85016060818a03601f190112156104d757600080fd5b6104df6103a2565b60208201516001600160a01b03811681146104f957600080fd5b81526040820151801515811461050e57600080fd5b602082015260608201516001600160401b0381111561052c57600080fd5b60208184010192505089601f83011261054457600080fd5b81516001600160401b0381111561055d5761055d61038c565b610570601f8201601f19166020016103ca565b8181528b602083860101111561058557600080fd5b6105968260208301602087016103fa565b604083015250835250602092830192909101906104a3565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b805160208201516001600160e01b0319811691906004821015610606576001600160e01b0319600483900360031b81901b82161692505b5050919050565b6000825161061f8184602087016103fa565b9190910192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156106b457603f198786030184528151805115158652602081015190506040602087015280518060408801526106918160608901602085016103fa565b601f01601f19169590950160600194506020938401939190910190600101610651565b5092969550505050505056fe";
3
3
  //# sourceMappingURL=deployless.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deployless.d.ts","sourceRoot":"","sources":["../src/deployless.ts"],"names":[],"mappings":"AAEA,wGAAwG;AACxG,eAAO,MAAM,8BAA8B,qiGACy/F,CAAA"}
1
+ {"version":3,"file":"deployless.d.ts","sourceRoot":"","sources":["../src/deployless.ts"],"names":[],"mappings":"AAEA,wGAAwG;AACxG,eAAO,MAAM,8BAA8B,y4GAC61G,CAAA"}
@@ -1,4 +1,4 @@
1
1
  // 由 scripts/build-contracts.mjs 生成,不要手改。源码:contracts/DeploylessMulticall3.sol(solc 0.8.30+commit.73712a01.Emscripten.clang)
2
2
  /** constructor((address target, bool allowFailure, bytes callData)[] calls) — 以 aggregate3 的返回格式带回结果 */
3
- export const DEPLOYLESS_MULTICALL3_BYTECODE = '0x608060405260405161060f38038061060f8339810160408190526100229161036c565b80516000816001600160401b0381111561003e5761003e6102da565b60405190808252806020026020018201604052801561008457816020015b60408051808201909152600081526060602082015281526020019060019003908161005c5790505b50905060005b828110156102875760008482815181106100a6576100a6610507565b602090810291909101015160408101518151919250906001600160a01b031673ca11bde05977b3631167028862be2a173976ca111480156100e8575080516024145b801561010c5750631348c07360e21b6101008261051d565b6001600160e01b031916145b1561017e5760248101516040805180820182526001815290516001600160a01b039290921691602080830191610149918531910190815260200190565b60405160208183030381529060405281525085858151811061016d5761016d610507565b60200260200101819052505061027d565b60008083600001516001600160a01b03168360405161019d919061055b565b6000604051808303816000865af19150503d80600081146101da576040519150601f19603f3d011682016040523d82523d6000602084013e6101df565b606091505b5091509150811580156101f457508360200151155b156102465760405162461bcd60e51b815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064015b60405180910390fd5b604051806040016040528083151581526020018281525086868151811061026f5761026f610507565b602002602001018190525050505b505060010161008a565b5060008160405160200161029b9190610577565b6040516020818303038152906040529050616000815111156102d25781604051633649f05160e01b815260040161023d9190610577565b805160208201f35b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715610312576103126102da565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610340576103406102da565b604052919050565b60005b8381101561036357818101518382015260200161034b565b50506000910152565b60006020828403121561037e57600080fd5b81516001600160401b0381111561039457600080fd5b8201601f810184136103a557600080fd5b80516001600160401b038111156103be576103be6102da565b8060051b6103ce60208201610318565b918252602081840181019290810190878411156103ea57600080fd5b6020850192505b838310156104fc5782516001600160401b0381111561040f57600080fd5b85016060818a03601f1901121561042557600080fd5b61042d6102f0565b60208201516001600160a01b038116811461044757600080fd5b81526040820151801515811461045c57600080fd5b602082015260608201516001600160401b0381111561047a57600080fd5b60208184010192505089601f83011261049257600080fd5b81516001600160401b038111156104ab576104ab6102da565b6104be601f8201601f1916602001610318565b8181528b60208386010111156104d357600080fd5b6104e4826020830160208701610348565b604083015250835250602092830192909101906103f1565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b805160208201516001600160e01b0319811691906004821015610554576001600160e01b0319600483900360031b81901b82161692505b5050919050565b6000825161056d818460208701610348565b9190910192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561060257603f198786030184528151805115158652602081015190506040602087015280518060408801526105df816060890160208501610348565b601f01601f1916959095016060019450602093840193919091019060010161059f565b5092969550505050505056fe';
3
+ export const DEPLOYLESS_MULTICALL3_BYTECODE = '0x60806040526040516106c13803806106c18339810160408190526100229161041e565b80516000816001600160401b0381111561003e5761003e61038c565b60405190808252806020026020018201604052801561008457816020015b60408051808201909152600081526060602082015281526020019060019003908161005c5790505b50905060005b828110156103395760008482815181106100a6576100a66105b9565b602090810291909101015160408101518151919250906001600160a01b031673ca11bde05977b3631167028862be2a173976ca111480156100e8575080516024145b801561010c5750631348c07360e21b610100826105cf565b6001600160e01b031916145b1561017e5760248101516040805180820182526001815290516001600160a01b039290921691602080830191610149918531910190815260200190565b60405160208183030381529060405281525085858151811061016d5761016d6105b9565b60200260200101819052505061032f565b81516001600160a01b031673ca11bde05977b3631167028862be2a173976ca111480156101ac575080516004145b80156101d057506310b2ec5760e21b6101c4826105cf565b6001600160e01b031916145b15610230576040518060400160405280600115158152602001436040516020016101fc91815260200190565b604051602081830303815290604052815250848481518110610220576102206105b9565b602002602001018190525061032f565b60008083600001516001600160a01b03168360405161024f919061060d565b6000604051808303816000865af19150503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150811580156102a657508360200151155b156102f85760405162461bcd60e51b815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064015b60405180910390fd5b6040518060400160405280831515815260200182815250868681518110610321576103216105b9565b602002602001018190525050505b505060010161008a565b5060008160405160200161034d9190610629565b6040516020818303038152906040529050616000815111156103845781604051633649f05160e01b81526004016102ef9190610629565b805160208201f35b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156103c4576103c461038c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103f2576103f261038c565b604052919050565b60005b838110156104155781810151838201526020016103fd565b50506000910152565b60006020828403121561043057600080fd5b81516001600160401b0381111561044657600080fd5b8201601f8101841361045757600080fd5b80516001600160401b038111156104705761047061038c565b8060051b610480602082016103ca565b9182526020818401810192908101908784111561049c57600080fd5b6020850192505b838310156105ae5782516001600160401b038111156104c157600080fd5b85016060818a03601f190112156104d757600080fd5b6104df6103a2565b60208201516001600160a01b03811681146104f957600080fd5b81526040820151801515811461050e57600080fd5b602082015260608201516001600160401b0381111561052c57600080fd5b60208184010192505089601f83011261054457600080fd5b81516001600160401b0381111561055d5761055d61038c565b610570601f8201601f19166020016103ca565b8181528b602083860101111561058557600080fd5b6105968260208301602087016103fa565b604083015250835250602092830192909101906104a3565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b805160208201516001600160e01b0319811691906004821015610606576001600160e01b0319600483900360031b81901b82161692505b5050919050565b6000825161061f8184602087016103fa565b9190910192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156106b457603f198786030184528151805115158652602081015190506040602087015280518060408801526106918160608901602085016103fa565b601f01601f19169590950160600194506020938401939190910190600101610651565b5092969550505050505056fe';
4
4
  //# sourceMappingURL=deployless.js.map