@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.
- package/CHANGELOG.md +56 -0
- package/README.md +184 -30
- package/contracts/DeploylessMulticall3.sol +5 -0
- package/dist/aggregate.d.ts +25 -3
- package/dist/aggregate.d.ts.map +1 -1
- package/dist/aggregate.js +143 -5
- package/dist/aggregate.js.map +1 -1
- package/dist/batcher.d.ts +6 -1
- package/dist/batcher.d.ts.map +1 -1
- package/dist/batcher.js +59 -9
- package/dist/batcher.js.map +1 -1
- package/dist/call.d.ts +27 -2
- package/dist/call.d.ts.map +1 -1
- package/dist/call.js +22 -0
- package/dist/call.js.map +1 -1
- package/dist/chains.d.ts +7 -0
- package/dist/chains.d.ts.map +1 -1
- package/dist/chains.js +11 -0
- package/dist/chains.js.map +1 -1
- package/dist/deployless.d.ts +1 -1
- package/dist/deployless.d.ts.map +1 -1
- package/dist/deployless.js +1 -1
- package/dist/deployless.js.map +1 -1
- package/dist/erc20.d.ts +70 -4
- package/dist/erc20.d.ts.map +1 -1
- package/dist/erc20.js +121 -5
- package/dist/erc20.js.map +1 -1
- package/dist/events.d.ts +25 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +25 -0
- package/dist/events.js.map +1 -0
- package/dist/fallback.d.ts +54 -3
- package/dist/fallback.d.ts.map +1 -1
- package/dist/fallback.js +273 -21
- package/dist/fallback.js.map +1 -1
- package/dist/index.d.ts +10 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/multicall.d.ts.map +1 -1
- package/dist/multicall.js +33 -2
- package/dist/multicall.js.map +1 -1
- package/dist/nft.d.ts +5 -0
- package/dist/nft.d.ts.map +1 -1
- package/dist/nft.js +5 -0
- package/dist/nft.js.map +1 -1
- package/dist/owner.d.ts +145 -0
- package/dist/owner.d.ts.map +1 -0
- package/dist/owner.js +510 -0
- package/dist/owner.js.map +1 -0
- package/dist/provider.d.ts +63 -18
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +166 -100
- package/dist/provider.js.map +1 -1
- package/dist/scan.d.ts +59 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +245 -0
- package/dist/scan.js.map +1 -0
- package/dist/shortcuts.d.ts +34 -35
- package/dist/shortcuts.d.ts.map +1 -1
- package/dist/shortcuts.js +41 -73
- package/dist/shortcuts.js.map +1 -1
- package/dist/source.d.ts +6 -2
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +49 -6
- package/dist/source.js.map +1 -1
- package/dist/subpaths/nft.d.ts +46 -0
- package/dist/subpaths/nft.d.ts.map +1 -0
- package/dist/subpaths/nft.js +55 -0
- package/dist/subpaths/nft.js.map +1 -0
- package/dist/subpaths/owner.d.ts +33 -0
- package/dist/subpaths/owner.d.ts.map +1 -0
- package/dist/subpaths/owner.js +34 -0
- package/dist/subpaths/owner.js.map +1 -0
- package/dist/tron.d.ts +2 -0
- package/dist/tron.d.ts.map +1 -1
- package/dist/tron.js +5 -0
- package/dist/tron.js.map +1 -1
- package/dist/util.d.ts +5 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +23 -0
- package/dist/util.js.map +1 -1
- package/dist/watch.d.ts +25 -0
- package/dist/watch.d.ts.map +1 -0
- package/dist/watch.js +105 -0
- package/dist/watch.js.map +1 -0
- package/package.json +19 -10
- package/src/aggregate.ts +177 -9
- package/src/batcher.ts +69 -9
- package/src/call.ts +42 -2
- package/src/chains.ts +15 -0
- package/src/deployless.ts +1 -1
- package/src/erc20.ts +171 -8
- package/src/events.ts +42 -0
- package/src/fallback.ts +306 -22
- package/src/index.ts +20 -27
- package/src/multicall.ts +34 -2
- package/src/nft.ts +5 -0
- package/src/owner.ts +660 -0
- package/src/provider.ts +255 -112
- package/src/scan.ts +293 -0
- package/src/shortcuts.ts +76 -88
- package/src/source.ts +51 -8
- package/src/subpaths/nft.ts +107 -0
- package/src/subpaths/owner.ts +69 -0
- package/src/tron.ts +7 -0
- package/src/util.ts +27 -0
- 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
|
|
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) =>
|
|
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
|
})),
|
package/dist/aggregate.js.map
CHANGED
|
@@ -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
|
package/dist/batcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batcher.d.ts","sourceRoot":"","sources":["../src/batcher.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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 =
|
|
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
|
-
|
|
26
|
-
|
|
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.
|
|
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;
|
package/dist/batcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batcher.js","sourceRoot":"","sources":["../src/batcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,
|
|
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
|
-
/**
|
|
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(可按下标或名字取) */
|
package/dist/call.d.ts.map
CHANGED
|
@@ -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
|
|
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":"AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAsD,MAAM,QAAQ,CAAA;AAEzK,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
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
|
package/dist/chains.d.ts.map
CHANGED
|
@@ -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
|
package/dist/chains.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"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"}
|
package/dist/deployless.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/** constructor((address target, bool allowFailure, bytes callData)[] calls) — 以 aggregate3 的返回格式带回结果 */
|
|
2
|
-
export declare const DEPLOYLESS_MULTICALL3_BYTECODE = "
|
|
2
|
+
export declare const DEPLOYLESS_MULTICALL3_BYTECODE = "0x60806040526040516106c13803806106c18339810160408190526100229161041e565b80516000816001600160401b0381111561003e5761003e61038c565b60405190808252806020026020018201604052801561008457816020015b60408051808201909152600081526060602082015281526020019060019003908161005c5790505b50905060005b828110156103395760008482815181106100a6576100a66105b9565b602090810291909101015160408101518151919250906001600160a01b031673ca11bde05977b3631167028862be2a173976ca111480156100e8575080516024145b801561010c5750631348c07360e21b610100826105cf565b6001600160e01b031916145b1561017e5760248101516040805180820182526001815290516001600160a01b039290921691602080830191610149918531910190815260200190565b60405160208183030381529060405281525085858151811061016d5761016d6105b9565b60200260200101819052505061032f565b81516001600160a01b031673ca11bde05977b3631167028862be2a173976ca111480156101ac575080516004145b80156101d057506310b2ec5760e21b6101c4826105cf565b6001600160e01b031916145b15610230576040518060400160405280600115158152602001436040516020016101fc91815260200190565b604051602081830303815290604052815250848481518110610220576102206105b9565b602002602001018190525061032f565b60008083600001516001600160a01b03168360405161024f919061060d565b6000604051808303816000865af19150503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150811580156102a657508360200151155b156102f85760405162461bcd60e51b815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064015b60405180910390fd5b6040518060400160405280831515815260200182815250868681518110610321576103216105b9565b602002602001018190525050505b505060010161008a565b5060008160405160200161034d9190610629565b6040516020818303038152906040529050616000815111156103845781604051633649f05160e01b81526004016102ef9190610629565b805160208201f35b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156103c4576103c461038c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103f2576103f261038c565b604052919050565b60005b838110156104155781810151838201526020016103fd565b50506000910152565b60006020828403121561043057600080fd5b81516001600160401b0381111561044657600080fd5b8201601f8101841361045757600080fd5b80516001600160401b038111156104705761047061038c565b8060051b610480602082016103ca565b9182526020818401810192908101908784111561049c57600080fd5b6020850192505b838310156105ae5782516001600160401b038111156104c157600080fd5b85016060818a03601f190112156104d757600080fd5b6104df6103a2565b60208201516001600160a01b03811681146104f957600080fd5b81526040820151801515811461050e57600080fd5b602082015260608201516001600160401b0381111561052c57600080fd5b60208184010192505089601f83011261054457600080fd5b81516001600160401b0381111561055d5761055d61038c565b610570601f8201601f19166020016103ca565b8181528b602083860101111561058557600080fd5b6105968260208301602087016103fa565b604083015250835250602092830192909101906104a3565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b805160208201516001600160e01b0319811691906004821015610606576001600160e01b0319600483900360031b81901b82161692505b5050919050565b6000825161061f8184602087016103fa565b9190910192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156106b457603f198786030184528151805115158652602081015190506040602087015280518060408801526106918160608901602085016103fa565b601f01601f19169590950160600194506020938401939190910190600101610651565b5092969550505050505056fe";
|
|
3
3
|
//# sourceMappingURL=deployless.d.ts.map
|
package/dist/deployless.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployless.d.ts","sourceRoot":"","sources":["../src/deployless.ts"],"names":[],"mappings":"AAEA,wGAAwG;AACxG,eAAO,MAAM,8BAA8B,
|
|
1
|
+
{"version":3,"file":"deployless.d.ts","sourceRoot":"","sources":["../src/deployless.ts"],"names":[],"mappings":"AAEA,wGAAwG;AACxG,eAAO,MAAM,8BAA8B,y4GAC61G,CAAA"}
|
package/dist/deployless.js
CHANGED
|
@@ -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 = '
|
|
3
|
+
export const DEPLOYLESS_MULTICALL3_BYTECODE = '0x60806040526040516106c13803806106c18339810160408190526100229161041e565b80516000816001600160401b0381111561003e5761003e61038c565b60405190808252806020026020018201604052801561008457816020015b60408051808201909152600081526060602082015281526020019060019003908161005c5790505b50905060005b828110156103395760008482815181106100a6576100a66105b9565b602090810291909101015160408101518151919250906001600160a01b031673ca11bde05977b3631167028862be2a173976ca111480156100e8575080516024145b801561010c5750631348c07360e21b610100826105cf565b6001600160e01b031916145b1561017e5760248101516040805180820182526001815290516001600160a01b039290921691602080830191610149918531910190815260200190565b60405160208183030381529060405281525085858151811061016d5761016d6105b9565b60200260200101819052505061032f565b81516001600160a01b031673ca11bde05977b3631167028862be2a173976ca111480156101ac575080516004145b80156101d057506310b2ec5760e21b6101c4826105cf565b6001600160e01b031916145b15610230576040518060400160405280600115158152602001436040516020016101fc91815260200190565b604051602081830303815290604052815250848481518110610220576102206105b9565b602002602001018190525061032f565b60008083600001516001600160a01b03168360405161024f919061060d565b6000604051808303816000865af19150503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150811580156102a657508360200151155b156102f85760405162461bcd60e51b815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064015b60405180910390fd5b6040518060400160405280831515815260200182815250868681518110610321576103216105b9565b602002602001018190525050505b505060010161008a565b5060008160405160200161034d9190610629565b6040516020818303038152906040529050616000815111156103845781604051633649f05160e01b81526004016102ef9190610629565b805160208201f35b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156103c4576103c461038c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103f2576103f261038c565b604052919050565b60005b838110156104155781810151838201526020016103fd565b50506000910152565b60006020828403121561043057600080fd5b81516001600160401b0381111561044657600080fd5b8201601f8101841361045757600080fd5b80516001600160401b038111156104705761047061038c565b8060051b610480602082016103ca565b9182526020818401810192908101908784111561049c57600080fd5b6020850192505b838310156105ae5782516001600160401b038111156104c157600080fd5b85016060818a03601f190112156104d757600080fd5b6104df6103a2565b60208201516001600160a01b03811681146104f957600080fd5b81526040820151801515811461050e57600080fd5b602082015260608201516001600160401b0381111561052c57600080fd5b60208184010192505089601f83011261054457600080fd5b81516001600160401b0381111561055d5761055d61038c565b610570601f8201601f19166020016103ca565b8181528b602083860101111561058557600080fd5b6105968260208301602087016103fa565b604083015250835250602092830192909101906104a3565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b805160208201516001600160e01b0319811691906004821015610606576001600160e01b0319600483900360031b81901b82161692505b5050919050565b6000825161061f8184602087016103fa565b9190910192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156106b457603f198786030184528151805115158652602081015190506040602087015280518060408801526106918160608901602085016103fa565b601f01601f19169590950160600194506020938401939190910190600101610651565b5092969550505050505056fe';
|
|
4
4
|
//# sourceMappingURL=deployless.js.map
|