@gzeoneth/gov-tracker 0.2.0 → 0.2.1-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/dist/calldata/decoder.js +1 -1
- package/dist/calldata/decoder.js.map +1 -1
- package/dist/calldata/parameter-decoder.d.ts.map +1 -1
- package/dist/calldata/parameter-decoder.js +8 -8
- package/dist/calldata/parameter-decoder.js.map +1 -1
- package/dist/cli/lib/cli.d.ts +2 -0
- package/dist/cli/lib/cli.d.ts.map +1 -1
- package/dist/cli/lib/cli.js +8 -3
- package/dist/cli/lib/cli.js.map +1 -1
- package/dist/cli/monitor.js +45 -5
- package/dist/cli/monitor.js.map +1 -1
- package/dist/data/bundled-cache.json +19985 -0
- package/dist/discovery/timelock-discovery.d.ts +2 -0
- package/dist/discovery/timelock-discovery.d.ts.map +1 -1
- package/dist/discovery/timelock-discovery.js +3 -2
- package/dist/discovery/timelock-discovery.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
- package/dist/stages/l2-to-l1-message.js +37 -64
- package/dist/stages/l2-to-l1-message.js.map +1 -1
- package/dist/stages/proposal-queued.js +2 -2
- package/dist/stages/proposal-queued.js.map +1 -1
- package/dist/stages/retryables.d.ts.map +1 -1
- package/dist/stages/retryables.js +8 -1
- package/dist/stages/retryables.js.map +1 -1
- package/dist/stages/timelock.d.ts.map +1 -1
- package/dist/stages/timelock.js +26 -8
- package/dist/stages/timelock.js.map +1 -1
- package/dist/stages/utils.d.ts +2 -1
- package/dist/stages/utils.d.ts.map +1 -1
- package/dist/stages/utils.js +36 -13
- package/dist/stages/utils.js.map +1 -1
- package/dist/stages/voting.d.ts.map +1 -1
- package/dist/stages/voting.js +2 -6
- package/dist/stages/voting.js.map +1 -1
- package/dist/tracker/state.d.ts +0 -3
- package/dist/tracker/state.d.ts.map +1 -1
- package/dist/tracker/state.js +11 -5
- package/dist/tracker/state.js.map +1 -1
- package/dist/tracker.d.ts +2 -2
- package/dist/tracker.d.ts.map +1 -1
- package/dist/tracker.js +5 -4
- package/dist/tracker.js.map +1 -1
- package/dist/utils/salt-computation.d.ts.map +1 -1
- package/dist/utils/salt-computation.js +20 -26
- package/dist/utils/salt-computation.js.map +1 -1
- package/dist/utils/timing.d.ts +18 -7
- package/dist/utils/timing.d.ts.map +1 -1
- package/dist/utils/timing.js +58 -11
- package/dist/utils/timing.js.map +1 -1
- package/package.json +2 -2
package/dist/utils/timing.d.ts
CHANGED
|
@@ -17,11 +17,19 @@ export declare function calculateEta(targetBlock: number, currentBlock: number,
|
|
|
17
17
|
* Calculate remaining time in seconds
|
|
18
18
|
*/
|
|
19
19
|
export declare function calculateRemainingSeconds(targetBlock: number, currentBlock: number, blockTime?: number): number;
|
|
20
|
+
/**
|
|
21
|
+
* Invalidate the block info cache for all providers.
|
|
22
|
+
*
|
|
23
|
+
* Call this at the start of each monitoring loop iteration to ensure
|
|
24
|
+
* fresh block data. The 60-second TTL is optimized for within a single
|
|
25
|
+
* tracking cycle; between cycles, call this to force refresh.
|
|
26
|
+
*/
|
|
27
|
+
export declare function invalidateBlockInfoCache(): void;
|
|
20
28
|
/**
|
|
21
29
|
* Get current block info from a provider
|
|
22
30
|
*
|
|
23
|
-
* Results are cached for
|
|
24
|
-
*
|
|
31
|
+
* Results are cached for 60 seconds to reduce redundant RPC calls during tracking.
|
|
32
|
+
* The cache is per-provider. Use invalidateBlockInfoCache() to force refresh.
|
|
25
33
|
*/
|
|
26
34
|
export declare function getCurrentBlockInfo(provider: ethers.providers.Provider): Promise<{
|
|
27
35
|
blockNumber: number;
|
|
@@ -51,18 +59,21 @@ export declare function getL1BlockNumberFromL2(l2Provider: ethers.providers.Prov
|
|
|
51
59
|
*/
|
|
52
60
|
export declare function getL1BlockForL2Block(l2Provider: ethers.providers.Provider, l2BlockNumber: number): Promise<number>;
|
|
53
61
|
/**
|
|
54
|
-
* Get the first L2 block for a given L1 block number
|
|
62
|
+
* Get the first L2 block for a given L1 block number.
|
|
55
63
|
*
|
|
56
64
|
* Arbitrum governors use L1 block numbers for voting deadlines. This function
|
|
57
65
|
* finds the corresponding L2 block for searching L2 logs.
|
|
58
66
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
67
|
+
* WHY NOT USE SDK's getFirstBlockForL1Block DIRECTLY:
|
|
68
|
+
* The SDK's getFirstBlockForL1Block uses a binary search (~23 RPC calls, ~14s).
|
|
69
|
+
* NodeInterface.l2BlockRangeForL1() is a single RPC call (~1s) when the L1 block
|
|
70
|
+
* has corresponding L2 blocks. We try exact + nearby L1 blocks first, falling
|
|
71
|
+
* back to SDK only when 6 consecutive blocks have no L2 blocks (rare).
|
|
61
72
|
*
|
|
62
73
|
* @param l2Provider - L2 provider (must be JsonRpcProvider)
|
|
63
74
|
* @param targetL1Block - Target L1 block number
|
|
64
|
-
* @param options.minL2Block - Minimum L2 block to search from (
|
|
65
|
-
* @param options.maxL2Block - Maximum L2 block to search to (
|
|
75
|
+
* @param options.minL2Block - Minimum L2 block to search from (for SDK fallback)
|
|
76
|
+
* @param options.maxL2Block - Maximum L2 block to search to (for SDK fallback)
|
|
66
77
|
* @returns First L2 block for the given L1 block, or undefined if not found
|
|
67
78
|
*/
|
|
68
79
|
export declare function getFirstL2BlockForL1Block(l2Provider: ethers.providers.Provider, targetL1Block: number, options?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../../src/utils/timing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../../src/utils/timing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAG3C,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,UAAU,CAAC;AA4BxD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,SAAS,GAAE,MAA6B,GACvC,MAAM,CAIR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,SAAS,GAAE,MAA6B,GACvC,MAAM,GAAG,IAAI,CAMf;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,MAA6B,GACvC,MAAM,CAMR;AAaD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAM/C;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAClC,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBrD;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GACpC,OAAO,CAAC,SAAS,CAAC,CAkBpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACrC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACrC,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACzD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA0D7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,kBAAkB,GAAE,MAA6B,GAChD,OAAO,CAAC,MAAM,CAAC,CAoFjB;AAcD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EAAE,EACtB,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,SAAS,CAmCpB"}
|
package/dist/utils/timing.js
CHANGED
|
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.estimateTimestampFromBlock = estimateTimestampFromBlock;
|
|
9
9
|
exports.calculateEta = calculateEta;
|
|
10
10
|
exports.calculateRemainingSeconds = calculateRemainingSeconds;
|
|
11
|
+
exports.invalidateBlockInfoCache = invalidateBlockInfoCache;
|
|
11
12
|
exports.getCurrentBlockInfo = getCurrentBlockInfo;
|
|
12
13
|
exports.getL1BlockNumberFromL2 = getL1BlockNumberFromL2;
|
|
13
14
|
exports.getL1BlockForL2Block = getL1BlockForL2Block;
|
|
@@ -15,10 +16,13 @@ exports.getFirstL2BlockForL1Block = getFirstL2BlockForL1Block;
|
|
|
15
16
|
exports.blockAfterDelay = blockAfterDelay;
|
|
16
17
|
exports.calculateExpectedEta = calculateExpectedEta;
|
|
17
18
|
const ethers_1 = require("ethers");
|
|
19
|
+
const NodeInterface__factory_1 = require("@arbitrum/sdk/dist/lib/abi/factories/NodeInterface__factory");
|
|
18
20
|
const lib_1 = require("@arbitrum/sdk/dist/lib/utils/lib");
|
|
19
21
|
const constants_1 = require("../constants");
|
|
20
22
|
const rpc_utils_1 = require("./rpc-utils");
|
|
21
23
|
const logger_1 = require("./logger");
|
|
24
|
+
const NODE_INTERFACE_ADDRESS = "0x00000000000000000000000000000000000000C8";
|
|
25
|
+
const NEARBY_L1_BLOCK_ATTEMPTS = 5;
|
|
22
26
|
const log = logger_1.loggers.rpc;
|
|
23
27
|
/**
|
|
24
28
|
* Get the completion timestamp from a stage's transactions.
|
|
@@ -62,15 +66,31 @@ function calculateRemainingSeconds(targetBlock, currentBlock, blockTime = consta
|
|
|
62
66
|
}
|
|
63
67
|
return Math.floor(blockDiff * blockTime);
|
|
64
68
|
}
|
|
65
|
-
//
|
|
69
|
+
// Cache for getCurrentBlockInfo (60 seconds TTL)
|
|
66
70
|
// Uses WeakMap to avoid memory leaks when providers are garbage collected
|
|
67
71
|
const blockInfoCache = new WeakMap();
|
|
68
|
-
const BLOCK_INFO_CACHE_TTL_MS =
|
|
72
|
+
const BLOCK_INFO_CACHE_TTL_MS = 60000; // 60 seconds - governance tracking doesn't need real-time blocks
|
|
73
|
+
// Track all providers that have been cached for invalidation
|
|
74
|
+
const cachedProviders = new Set();
|
|
75
|
+
/**
|
|
76
|
+
* Invalidate the block info cache for all providers.
|
|
77
|
+
*
|
|
78
|
+
* Call this at the start of each monitoring loop iteration to ensure
|
|
79
|
+
* fresh block data. The 60-second TTL is optimized for within a single
|
|
80
|
+
* tracking cycle; between cycles, call this to force refresh.
|
|
81
|
+
*/
|
|
82
|
+
function invalidateBlockInfoCache() {
|
|
83
|
+
for (const provider of cachedProviders) {
|
|
84
|
+
blockInfoCache.delete(provider);
|
|
85
|
+
}
|
|
86
|
+
cachedProviders.clear();
|
|
87
|
+
log("invalidateBlockInfoCache: cleared cache for all providers");
|
|
88
|
+
}
|
|
69
89
|
/**
|
|
70
90
|
* Get current block info from a provider
|
|
71
91
|
*
|
|
72
|
-
* Results are cached for
|
|
73
|
-
*
|
|
92
|
+
* Results are cached for 60 seconds to reduce redundant RPC calls during tracking.
|
|
93
|
+
* The cache is per-provider. Use invalidateBlockInfoCache() to force refresh.
|
|
74
94
|
*/
|
|
75
95
|
async function getCurrentBlockInfo(provider) {
|
|
76
96
|
const cached = blockInfoCache.get(provider);
|
|
@@ -88,6 +108,7 @@ async function getCurrentBlockInfo(provider) {
|
|
|
88
108
|
fetchedAt: now,
|
|
89
109
|
};
|
|
90
110
|
blockInfoCache.set(provider, result);
|
|
111
|
+
cachedProviders.add(provider);
|
|
91
112
|
return { blockNumber: result.blockNumber, timestamp: result.timestamp };
|
|
92
113
|
}
|
|
93
114
|
/**
|
|
@@ -140,31 +161,57 @@ async function getL1BlockForL2Block(l2Provider, l2BlockNumber) {
|
|
|
140
161
|
return l1Block.toNumber();
|
|
141
162
|
}
|
|
142
163
|
/**
|
|
143
|
-
* Get the first L2 block for a given L1 block number
|
|
164
|
+
* Get the first L2 block for a given L1 block number.
|
|
144
165
|
*
|
|
145
166
|
* Arbitrum governors use L1 block numbers for voting deadlines. This function
|
|
146
167
|
* finds the corresponding L2 block for searching L2 logs.
|
|
147
168
|
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
169
|
+
* WHY NOT USE SDK's getFirstBlockForL1Block DIRECTLY:
|
|
170
|
+
* The SDK's getFirstBlockForL1Block uses a binary search (~23 RPC calls, ~14s).
|
|
171
|
+
* NodeInterface.l2BlockRangeForL1() is a single RPC call (~1s) when the L1 block
|
|
172
|
+
* has corresponding L2 blocks. We try exact + nearby L1 blocks first, falling
|
|
173
|
+
* back to SDK only when 6 consecutive blocks have no L2 blocks (rare).
|
|
150
174
|
*
|
|
151
175
|
* @param l2Provider - L2 provider (must be JsonRpcProvider)
|
|
152
176
|
* @param targetL1Block - Target L1 block number
|
|
153
|
-
* @param options.minL2Block - Minimum L2 block to search from (
|
|
154
|
-
* @param options.maxL2Block - Maximum L2 block to search to (
|
|
177
|
+
* @param options.minL2Block - Minimum L2 block to search from (for SDK fallback)
|
|
178
|
+
* @param options.maxL2Block - Maximum L2 block to search to (for SDK fallback)
|
|
155
179
|
* @returns First L2 block for the given L1 block, or undefined if not found
|
|
156
180
|
*/
|
|
157
181
|
async function getFirstL2BlockForL1Block(l2Provider, targetL1Block, options = {}) {
|
|
182
|
+
const start = Date.now();
|
|
183
|
+
const nodeInterface = NodeInterface__factory_1.NodeInterface__factory.connect(NODE_INTERFACE_ADDRESS, l2Provider);
|
|
184
|
+
// Try exact block (offset=0) then nearby L1 blocks (offset=1..5)
|
|
185
|
+
// L1 blocks can be skipped on L2, but adjacent blocks usually have L2 blocks
|
|
186
|
+
for (let offset = 0; offset < NEARBY_L1_BLOCK_ATTEMPTS; offset++) {
|
|
187
|
+
const l1Block = targetL1Block - offset;
|
|
188
|
+
if (l1Block <= 0)
|
|
189
|
+
break;
|
|
190
|
+
try {
|
|
191
|
+
const range = await nodeInterface.l2BlockRangeForL1(l1Block);
|
|
192
|
+
// For exact match (offset=0), return firstBlock
|
|
193
|
+
// For nearby blocks, return lastBlock+1 as the first block >= targetL1Block
|
|
194
|
+
const result = offset === 0 ? range.firstBlock.toNumber() : range.lastBlock.toNumber() + 1;
|
|
195
|
+
log("getFirstL2BlockForL1Block: L1=%d -> L2=%d (%s, %d RPC, %dms)", targetL1Block, result, offset === 0 ? "fast path" : `nearby L1=${l1Block}`, offset + 1, Date.now() - start);
|
|
196
|
+
return result;
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
// l2BlockRangeForL1 reverts if no L2 block exists for this L1 block
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// Slow path: SDK binary search fallback
|
|
203
|
+
// This should rarely be reached - only when 5 consecutive L1 blocks have no L2 blocks
|
|
204
|
+
log("getFirstL2BlockForL1Block: L1=%d falling back to SDK binary search (%dms)", targetL1Block, Date.now() - start);
|
|
158
205
|
const jsonRpcProvider = l2Provider;
|
|
159
206
|
const result = await (0, lib_1.getFirstBlockForL1Block)({
|
|
160
207
|
arbitrumProvider: jsonRpcProvider,
|
|
161
208
|
forL1Block: targetL1Block,
|
|
162
|
-
allowGreater: true,
|
|
209
|
+
allowGreater: true,
|
|
163
210
|
minArbitrumBlock: options.minL2Block,
|
|
164
211
|
maxArbitrumBlock: options.maxL2Block,
|
|
165
212
|
});
|
|
166
213
|
if (result !== undefined) {
|
|
167
|
-
log("getFirstL2BlockForL1Block: L1=%d -> L2=%d (bounds: %s-%s)", targetL1Block, result, options.minL2Block ?? "start", options.maxL2Block ?? "latest");
|
|
214
|
+
log("getFirstL2BlockForL1Block: L1=%d -> L2=%d (SDK fallback, bounds: %s-%s, %dms)", targetL1Block, result, options.minL2Block ?? "start", options.maxL2Block ?? "latest", Date.now() - start);
|
|
168
215
|
}
|
|
169
216
|
return result;
|
|
170
217
|
}
|
package/dist/utils/timing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timing.js","sourceRoot":"","sources":["../../src/utils/timing.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;
|
|
1
|
+
{"version":3,"file":"timing.js","sourceRoot":"","sources":["../../src/utils/timing.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gzeoneth/gov-tracker",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1-1",
|
|
4
4
|
"description": "Lightweight, high-performance library for tracking Arbitrum DAO governance proposal lifecycle stages",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "gzeoneth",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"dist"
|
|
21
21
|
],
|
|
22
22
|
"scripts": {
|
|
23
|
-
"build": "tsc",
|
|
23
|
+
"build": "tsc && cp -r data dist/",
|
|
24
24
|
"test": "NO_RPC=1 vitest run",
|
|
25
25
|
"test:integration": "vitest run test/integration.test.ts test/tracker.test.ts test/retryables.test.ts",
|
|
26
26
|
"test:fork": "vitest run --config vitest.config.fork.mts",
|