ponder 0.17.11 → 0.18.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 (164) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/esm/bin/commands/codegen.js +3 -3
  3. package/dist/esm/bin/commands/codegen.js.map +1 -1
  4. package/dist/esm/bin/commands/dev.js +3 -3
  5. package/dist/esm/bin/commands/dev.js.map +1 -1
  6. package/dist/esm/bin/commands/serve.js +3 -3
  7. package/dist/esm/bin/commands/serve.js.map +1 -1
  8. package/dist/esm/bin/commands/start.js +3 -3
  9. package/dist/esm/bin/commands/start.js.map +1 -1
  10. package/dist/esm/build/config.js +19 -20
  11. package/dist/esm/build/config.js.map +1 -1
  12. package/dist/esm/build/index.js +79 -65
  13. package/dist/esm/build/index.js.map +1 -1
  14. package/dist/esm/build/plugin.js +9 -0
  15. package/dist/esm/build/plugin.js.map +1 -1
  16. package/dist/esm/build/stacktrace.js +25 -68
  17. package/dist/esm/build/stacktrace.js.map +1 -1
  18. package/dist/esm/database/index.js +83 -67
  19. package/dist/esm/database/index.js.map +1 -1
  20. package/dist/esm/index.js +1 -0
  21. package/dist/esm/index.js.map +1 -1
  22. package/dist/esm/indexing/client.js +35 -23
  23. package/dist/esm/indexing/client.js.map +1 -1
  24. package/dist/esm/indexing/index.js +3 -1
  25. package/dist/esm/indexing/index.js.map +1 -1
  26. package/dist/esm/indexing/profile.js +4 -3
  27. package/dist/esm/indexing/profile.js.map +1 -1
  28. package/dist/esm/indexing-store/index.js +2 -2
  29. package/dist/esm/indexing-store/index.js.map +1 -1
  30. package/dist/esm/rpc/actions.js +143 -67
  31. package/dist/esm/rpc/actions.js.map +1 -1
  32. package/dist/esm/runtime/events.js +33 -19
  33. package/dist/esm/runtime/events.js.map +1 -1
  34. package/dist/esm/runtime/filter.js +10 -9
  35. package/dist/esm/runtime/filter.js.map +1 -1
  36. package/dist/esm/runtime/fragments.js +50 -24
  37. package/dist/esm/runtime/fragments.js.map +1 -1
  38. package/dist/esm/runtime/historical.js +212 -68
  39. package/dist/esm/runtime/historical.js.map +1 -1
  40. package/dist/esm/runtime/index.js +11 -15
  41. package/dist/esm/runtime/index.js.map +1 -1
  42. package/dist/esm/runtime/isolated.js +1 -0
  43. package/dist/esm/runtime/isolated.js.map +1 -1
  44. package/dist/esm/runtime/multichain.js +1 -0
  45. package/dist/esm/runtime/multichain.js.map +1 -1
  46. package/dist/esm/runtime/omnichain.js +1 -0
  47. package/dist/esm/runtime/omnichain.js.map +1 -1
  48. package/dist/esm/runtime/realtime.js +17 -16
  49. package/dist/esm/runtime/realtime.js.map +1 -1
  50. package/dist/esm/server/index.js +8 -6
  51. package/dist/esm/server/index.js.map +1 -1
  52. package/dist/esm/sync-historical/in-memory.js +539 -0
  53. package/dist/esm/sync-historical/in-memory.js.map +1 -0
  54. package/dist/esm/sync-historical/index.js +46 -63
  55. package/dist/esm/sync-historical/index.js.map +1 -1
  56. package/dist/esm/sync-realtime/index.js +56 -83
  57. package/dist/esm/sync-realtime/index.js.map +1 -1
  58. package/dist/esm/sync-store/encode.js +1 -6
  59. package/dist/esm/sync-store/encode.js.map +1 -1
  60. package/dist/esm/sync-store/index.js +58 -62
  61. package/dist/esm/sync-store/index.js.map +1 -1
  62. package/dist/esm/sync-store/schema.js +23 -15
  63. package/dist/esm/sync-store/schema.js.map +1 -1
  64. package/dist/esm/sync-store/sql/ponder_rpc_cache_1/copy.sql +23 -0
  65. package/dist/esm/sync-store/sql/ponder_rpc_cache_1/create.sql +130 -0
  66. package/dist/esm/utils/copy.js +4 -4
  67. package/dist/esm/utils/copy.js.map +1 -1
  68. package/dist/esm/utils/finality.js +41 -32
  69. package/dist/esm/utils/finality.js.map +1 -1
  70. package/dist/esm/utils/pglite.js +0 -65
  71. package/dist/esm/utils/pglite.js.map +1 -1
  72. package/dist/types/bin/commands/codegen.d.ts.map +1 -1
  73. package/dist/types/bin/commands/dev.d.ts.map +1 -1
  74. package/dist/types/bin/commands/serve.d.ts.map +1 -1
  75. package/dist/types/bin/commands/start.d.ts.map +1 -1
  76. package/dist/types/build/config.d.ts.map +1 -1
  77. package/dist/types/build/index.d.ts.map +1 -1
  78. package/dist/types/build/plugin.d.ts.map +1 -1
  79. package/dist/types/build/stacktrace.d.ts +1 -12
  80. package/dist/types/build/stacktrace.d.ts.map +1 -1
  81. package/dist/types/config/index.d.ts +12 -2
  82. package/dist/types/config/index.d.ts.map +1 -1
  83. package/dist/types/database/index.d.ts.map +1 -1
  84. package/dist/types/index.d.ts +1 -0
  85. package/dist/types/index.d.ts.map +1 -1
  86. package/dist/types/indexing/client.d.ts.map +1 -1
  87. package/dist/types/indexing/profile.d.ts.map +1 -1
  88. package/dist/types/indexing-store/index.d.ts.map +1 -1
  89. package/dist/types/internal/types.d.ts +8 -13
  90. package/dist/types/internal/types.d.ts.map +1 -1
  91. package/dist/types/rpc/actions.d.ts +30 -0
  92. package/dist/types/rpc/actions.d.ts.map +1 -1
  93. package/dist/types/runtime/events.d.ts.map +1 -1
  94. package/dist/types/runtime/filter.d.ts.map +1 -1
  95. package/dist/types/runtime/fragments.d.ts +9 -1
  96. package/dist/types/runtime/fragments.d.ts.map +1 -1
  97. package/dist/types/runtime/historical.d.ts +18 -1
  98. package/dist/types/runtime/historical.d.ts.map +1 -1
  99. package/dist/types/runtime/index.d.ts +1 -0
  100. package/dist/types/runtime/index.d.ts.map +1 -1
  101. package/dist/types/runtime/isolated.d.ts.map +1 -1
  102. package/dist/types/runtime/multichain.d.ts.map +1 -1
  103. package/dist/types/runtime/omnichain.d.ts.map +1 -1
  104. package/dist/types/runtime/realtime.d.ts.map +1 -1
  105. package/dist/types/server/index.d.ts.map +1 -1
  106. package/dist/types/sync-historical/in-memory.d.ts +24 -0
  107. package/dist/types/sync-historical/in-memory.d.ts.map +1 -0
  108. package/dist/types/sync-historical/index.d.ts.map +1 -1
  109. package/dist/types/sync-realtime/index.d.ts +3 -2
  110. package/dist/types/sync-realtime/index.d.ts.map +1 -1
  111. package/dist/types/sync-store/encode.d.ts.map +1 -1
  112. package/dist/types/sync-store/index.d.ts +3 -3
  113. package/dist/types/sync-store/index.d.ts.map +1 -1
  114. package/dist/types/sync-store/schema.d.ts +63 -98
  115. package/dist/types/sync-store/schema.d.ts.map +1 -1
  116. package/dist/types/types/eth.d.ts +2 -8
  117. package/dist/types/types/eth.d.ts.map +1 -1
  118. package/dist/types/utils/finality.d.ts +12 -9
  119. package/dist/types/utils/finality.d.ts.map +1 -1
  120. package/dist/types/utils/pglite.d.ts +0 -18
  121. package/dist/types/utils/pglite.d.ts.map +1 -1
  122. package/package.json +5 -11
  123. package/src/bin/commands/codegen.ts +3 -3
  124. package/src/bin/commands/dev.ts +3 -3
  125. package/src/bin/commands/serve.ts +3 -3
  126. package/src/bin/commands/start.ts +3 -3
  127. package/src/build/config.ts +29 -28
  128. package/src/build/index.ts +88 -71
  129. package/src/build/plugin.ts +6 -0
  130. package/src/build/stacktrace.ts +38 -65
  131. package/src/config/index.ts +12 -2
  132. package/src/database/index.ts +132 -89
  133. package/src/index.ts +5 -0
  134. package/src/indexing/client.ts +56 -40
  135. package/src/indexing/index.ts +4 -1
  136. package/src/indexing/profile.ts +5 -2
  137. package/src/indexing-store/index.ts +2 -8
  138. package/src/internal/types.ts +10 -13
  139. package/src/rpc/actions.ts +211 -77
  140. package/src/runtime/events.ts +40 -19
  141. package/src/runtime/filter.ts +11 -11
  142. package/src/runtime/fragments.ts +70 -26
  143. package/src/runtime/historical.ts +314 -97
  144. package/src/runtime/index.ts +27 -14
  145. package/src/runtime/isolated.ts +1 -0
  146. package/src/runtime/multichain.ts +1 -0
  147. package/src/runtime/omnichain.ts +1 -0
  148. package/src/runtime/realtime.ts +24 -25
  149. package/src/server/index.ts +14 -7
  150. package/src/sync-historical/in-memory.ts +834 -0
  151. package/src/sync-historical/index.ts +76 -120
  152. package/src/sync-realtime/index.ts +73 -133
  153. package/src/sync-store/encode.ts +1 -6
  154. package/src/sync-store/index.ts +90 -95
  155. package/src/sync-store/schema.ts +24 -27
  156. package/src/types/eth.ts +2 -8
  157. package/src/utils/copy.ts +3 -3
  158. package/src/utils/finality.ts +67 -34
  159. package/src/utils/pglite.ts +0 -79
  160. package/dist/esm/sync-store/migrations.js +0 -1595
  161. package/dist/esm/sync-store/migrations.js.map +0 -1
  162. package/dist/types/sync-store/migrations.d.ts +0 -8
  163. package/dist/types/sync-store/migrations.d.ts.map +0 -1
  164. package/src/sync-store/migrations.ts +0 -1801
@@ -1,11 +1,13 @@
1
- import { hexToNumber, numberToHex } from "viem";
1
+ import { hexToNumber } from "viem";
2
2
  import { ShutdownError } from '../internal/errors.js';
3
3
  import { eth_getBlockByNumber } from '../rpc/actions.js';
4
4
  import { buildEvents, decodeEvents } from './events.js';
5
+ import { createInMemoryHistoricalSync } from '../sync-historical/in-memory.js';
5
6
  import { createHistoricalSync } from '../sync-historical/index.js';
6
7
  import { createSyncStore } from '../sync-store/index.js';
7
8
  import { decodeCheckpoint, encodeCheckpoint, MAX_CHECKPOINT, min, ZERO_CHECKPOINT, } from '../utils/checkpoint.js';
8
9
  import { estimate } from '../utils/estimate.js';
10
+ import { getFinalizedBlock } from '../utils/finality.js';
9
11
  import { formatPercentage } from '../utils/format.js';
10
12
  import { bufferAsyncGenerator, createCallbackGenerator, mergeAsyncGenerators, } from '../utils/generators.js';
11
13
  import { intervalSum } from '../utils/interval.js';
@@ -17,6 +19,7 @@ import { getOmnichainCheckpoint } from "./omnichain.js";
17
19
  export async function* getHistoricalEventsOmnichain(params) {
18
20
  let pendingEvents = [];
19
21
  let isCatchup = false;
22
+ let lastUnfinalizedRefetch = Date.now();
20
23
  const perChainCursor = new Map();
21
24
  while (true) {
22
25
  const eventGenerators = Array.from(params.perChainSync.entries()).map(async function* ([chain, { syncProgress, childAddresses, cachedIntervals },]) {
@@ -43,6 +46,10 @@ export async function* getHistoricalEventsOmnichain(params) {
43
46
  chain.id) {
44
47
  from = crashRecoveryCheckpoint;
45
48
  }
49
+ else if (chain.cacheRpcRequests === false) {
50
+ // Note: When the rpc cache is disabled, blocks in the sync-store can be stale.
51
+ from = syncProgress.getCheckpoint({ tag: "start" });
52
+ }
46
53
  else {
47
54
  const fromBlock = await createSyncStore({
48
55
  common: params.common,
@@ -107,7 +114,7 @@ export async function* getHistoricalEventsOmnichain(params) {
107
114
  Number(decodeCheckpoint(to).blockNumber),
108
115
  ]),
109
116
  });
110
- const eventGenerator = getLocalEventGenerator({
117
+ const eventGeneratorParams = {
111
118
  common: params.common,
112
119
  chain,
113
120
  rpc,
@@ -121,7 +128,10 @@ export async function* getHistoricalEventsOmnichain(params) {
121
128
  (params.indexingBuild.chains.length + 1)) + 6,
122
129
  database: params.database,
123
130
  isCatchup,
124
- });
131
+ };
132
+ const eventGenerator = chain.cacheRpcRequests
133
+ ? getLocalEventGenerator(eventGeneratorParams)
134
+ : getLocalInMemoryEventGenerator(eventGeneratorParams);
125
135
  for await (let { events: rawEvents, checkpoint, blockRange, } of eventGenerator) {
126
136
  const endClock = startClock();
127
137
  let events = decodeEvents(params.common, chain, eventCallbacks, rawEvents);
@@ -179,6 +189,11 @@ export async function* getHistoricalEventsOmnichain(params) {
179
189
  for await (const mergeResults of eventGenerator) {
180
190
  yield { type: "events", result: mergeResults };
181
191
  }
192
+ if (params.indexingBuild.chains.every((chain) => Date.now() - lastUnfinalizedRefetch <
193
+ Math.max(chain.reorgWindow * 1_000, 30_000))) {
194
+ break;
195
+ }
196
+ lastUnfinalizedRefetch = Date.now();
182
197
  const context = {
183
198
  logger: params.common.logger.child({ action: "refetch_finalized_block" }),
184
199
  retryNullBlockRequest: true,
@@ -187,10 +202,12 @@ export async function* getHistoricalEventsOmnichain(params) {
187
202
  const finalizedBlocks = await Promise.all(params.indexingBuild.chains.map((chain, i) => {
188
203
  const rpc = params.indexingBuild.rpcs[i];
189
204
  return eth_getBlockByNumber(rpc, ["latest", false], context)
190
- .then((latest) => eth_getBlockByNumber(rpc, [
191
- numberToHex(Math.max(hexToNumber(latest.number) - chain.finalityBlockCount, 0)),
192
- false,
193
- ], context))
205
+ .then((latest) => getFinalizedBlock({
206
+ chain,
207
+ rpc,
208
+ latestBlock: latest,
209
+ lowerBound: params.perChainSync.get(chain).syncProgress.finalized,
210
+ }))
194
211
  .then((finalizedBlock) => {
195
212
  const finalizedBlockNumber = hexToNumber(finalizedBlock.number);
196
213
  params.common.logger.debug({
@@ -203,23 +220,14 @@ export async function* getHistoricalEventsOmnichain(params) {
203
220
  return finalizedBlock;
204
221
  });
205
222
  }));
206
- let shouldCatchup = false;
207
223
  for (let i = 0; i < params.indexingBuild.chains.length; i++) {
208
224
  const chain = params.indexingBuild.chains[i];
209
225
  const oldFinalizedBlock = params.perChainSync.get(chain).syncProgress.finalized;
210
- const newFinalizedBlock = finalizedBlocks[i];
211
- if (hexToNumber(newFinalizedBlock.number) -
212
- hexToNumber(oldFinalizedBlock.number) >
213
- chain.finalityBlockCount) {
214
- shouldCatchup = true;
215
- break;
216
- }
217
- }
218
- if (shouldCatchup === false)
219
- break;
220
- for (let i = 0; i < params.indexingBuild.chains.length; i++) {
221
- const chain = params.indexingBuild.chains[i];
222
226
  const finalizedBlock = finalizedBlocks[i];
227
+ if (hexToNumber(finalizedBlock.number) <
228
+ hexToNumber(oldFinalizedBlock.number)) {
229
+ throw new Error(`Finalized block for chain "${chain.name}" cannot move backwards`);
230
+ }
223
231
  params.perChainSync.get(chain).syncProgress.finalized = finalizedBlock;
224
232
  }
225
233
  isCatchup = true;
@@ -248,6 +256,10 @@ export async function* getHistoricalEventsMultichain(params) {
248
256
  chain.id) {
249
257
  from = crashRecoveryCheckpoint;
250
258
  }
259
+ else if (chain.cacheRpcRequests === false) {
260
+ // Note: When the rpc cache is disabled, blocks in the sync-store can be stale.
261
+ from = syncProgress.getCheckpoint({ tag: "start" });
262
+ }
251
263
  else {
252
264
  const fromBlock = await createSyncStore({
253
265
  common: params.common,
@@ -289,7 +301,7 @@ export async function* getHistoricalEventsMultichain(params) {
289
301
  Number(decodeCheckpoint(to).blockNumber),
290
302
  ]),
291
303
  });
292
- const eventGenerator = getLocalEventGenerator({
304
+ const eventGeneratorParams = {
293
305
  common: params.common,
294
306
  chain,
295
307
  rpc,
@@ -303,7 +315,10 @@ export async function* getHistoricalEventsMultichain(params) {
303
315
  (params.indexingBuild.chains.length + 1)) + 6,
304
316
  database: params.database,
305
317
  isCatchup,
306
- });
318
+ };
319
+ const eventGenerator = chain.cacheRpcRequests
320
+ ? getLocalEventGenerator(eventGeneratorParams)
321
+ : getLocalInMemoryEventGenerator(eventGeneratorParams);
307
322
  for await (const { events: rawEvents, checkpoint, blockRange, } of eventGenerator) {
308
323
  const endClock = startClock();
309
324
  let events = decodeEvents(params.common, chain, eventCallbacks, rawEvents);
@@ -335,7 +350,8 @@ export async function* getHistoricalEventsMultichain(params) {
335
350
  perChainCursor.set(chain, to);
336
351
  });
337
352
  yield* mergeAsyncGenerators(eventGenerators);
338
- if (Date.now() - lastUnfinalizedRefetch < 30_000) {
353
+ if (params.indexingBuild.chains.every((chain) => Date.now() - lastUnfinalizedRefetch <
354
+ Math.max(chain.reorgWindow * 1_000, 30_000))) {
339
355
  break;
340
356
  }
341
357
  lastUnfinalizedRefetch = Date.now();
@@ -347,10 +363,12 @@ export async function* getHistoricalEventsMultichain(params) {
347
363
  const finalizedBlocks = await Promise.all(params.indexingBuild.chains.map((chain, i) => {
348
364
  const rpc = params.indexingBuild.rpcs[i];
349
365
  return eth_getBlockByNumber(rpc, ["latest", false], context)
350
- .then((latest) => eth_getBlockByNumber(rpc, [
351
- numberToHex(Math.max(hexToNumber(latest.number) - chain.finalityBlockCount, 0)),
352
- false,
353
- ], context))
366
+ .then((latestBlock) => getFinalizedBlock({
367
+ chain,
368
+ rpc,
369
+ latestBlock,
370
+ lowerBound: params.perChainSync.get(chain).syncProgress.finalized,
371
+ }))
354
372
  .then((finalizedBlock) => {
355
373
  const finalizedBlockNumber = hexToNumber(finalizedBlock.number);
356
374
  params.common.logger.debug({
@@ -363,23 +381,14 @@ export async function* getHistoricalEventsMultichain(params) {
363
381
  return finalizedBlock;
364
382
  });
365
383
  }));
366
- let shouldCatchup = false;
367
384
  for (let i = 0; i < params.indexingBuild.chains.length; i++) {
368
385
  const chain = params.indexingBuild.chains[i];
386
+ const finalizedBlock = finalizedBlocks[i];
369
387
  const oldFinalizedBlock = params.perChainSync.get(chain).syncProgress.finalized;
370
- const newFinalizedBlock = finalizedBlocks[i];
371
- if (hexToNumber(newFinalizedBlock.number) -
372
- hexToNumber(oldFinalizedBlock.number) >
373
- chain.finalityBlockCount) {
374
- shouldCatchup = true;
375
- break;
388
+ if (hexToNumber(finalizedBlock.number) <
389
+ hexToNumber(oldFinalizedBlock.number)) {
390
+ continue;
376
391
  }
377
- }
378
- if (shouldCatchup === false)
379
- break;
380
- for (let i = 0; i < params.indexingBuild.chains.length; i++) {
381
- const chain = params.indexingBuild.chains[i];
382
- const finalizedBlock = finalizedBlocks[i];
383
392
  params.perChainSync.get(chain).syncProgress.finalized = finalizedBlock;
384
393
  }
385
394
  isCatchup = true;
@@ -429,7 +438,7 @@ export async function* getHistoricalEventsIsolated(params) {
429
438
  Number(decodeCheckpoint(to).blockNumber),
430
439
  ]),
431
440
  });
432
- const eventGenerator = getLocalEventGenerator({
441
+ const eventGeneratorParams = {
433
442
  common: params.common,
434
443
  chain: params.chain,
435
444
  rpc,
@@ -443,7 +452,10 @@ export async function* getHistoricalEventsIsolated(params) {
443
452
  (params.indexingBuild.chains.length + 1)) + 6,
444
453
  database: params.database,
445
454
  isCatchup,
446
- });
455
+ };
456
+ const eventGenerator = params.chain.cacheRpcRequests
457
+ ? getLocalEventGenerator(eventGeneratorParams)
458
+ : getLocalInMemoryEventGenerator(eventGeneratorParams);
447
459
  for await (const { events: rawEvents, checkpoint, blockRange, } of eventGenerator) {
448
460
  const endClock = startClock();
449
461
  let events = decodeEvents(params.common, params.chain, eventCallbacks, rawEvents);
@@ -473,7 +485,8 @@ export async function* getHistoricalEventsIsolated(params) {
473
485
  yield { chainId: params.chain.id, events, checkpoint, blockRange };
474
486
  }
475
487
  cursor = to;
476
- if (Date.now() - lastUnfinalizedRefetch < 30_000) {
488
+ if (params.indexingBuild.chains.every((chain) => Date.now() - lastUnfinalizedRefetch <
489
+ Math.max(chain.reorgWindow * 1_000, 30_000))) {
477
490
  break;
478
491
  }
479
492
  lastUnfinalizedRefetch = Date.now();
@@ -481,10 +494,12 @@ export async function* getHistoricalEventsIsolated(params) {
481
494
  logger: params.common.logger.child({ action: "refetch_finalized_block" }),
482
495
  };
483
496
  const endClock = startClock();
484
- const finalizedBlock = await eth_getBlockByNumber(rpc, ["latest", false], context).then((latest) => eth_getBlockByNumber(rpc, [
485
- numberToHex(Math.max(hexToNumber(latest.number) - params.chain.finalityBlockCount, 0)),
486
- false,
487
- ], context));
497
+ const finalizedBlock = await eth_getBlockByNumber(rpc, ["latest", false], context).then((latest) => getFinalizedBlock({
498
+ chain: params.chain,
499
+ rpc,
500
+ latestBlock: latest,
501
+ lowerBound: params.syncProgress.finalized,
502
+ }));
488
503
  const finalizedBlockNumber = hexToNumber(finalizedBlock.number);
489
504
  params.common.logger.debug({
490
505
  msg: "Refetched finalized block for backfill cutover",
@@ -493,9 +508,7 @@ export async function* getHistoricalEventsIsolated(params) {
493
508
  finalized_block: finalizedBlockNumber,
494
509
  duration: endClock(),
495
510
  });
496
- if (hexToNumber(finalizedBlock.number) -
497
- hexToNumber(params.syncProgress.finalized.number) <=
498
- params.chain.finalityBlockCount) {
511
+ if (finalizedBlockNumber < hexToNumber(params.syncProgress.finalized.number)) {
499
512
  break;
500
513
  }
501
514
  params.syncProgress.finalized = finalizedBlock;
@@ -649,7 +662,7 @@ export async function* getLocalEventGenerator(params) {
649
662
  await new Promise(setImmediate);
650
663
  const blockRange = [cursor, queryCursor];
651
664
  cursor = queryCursor + 1;
652
- if (cursor >= toBlock) {
665
+ if (cursor > toBlock) {
653
666
  yield { events, checkpoint: params.to, blockRange };
654
667
  }
655
668
  else if (blocks.length > 0) {
@@ -664,6 +677,137 @@ export async function* getLocalEventGenerator(params) {
664
677
  }
665
678
  }
666
679
  }
680
+ export async function* getLocalInMemoryEventGenerator(params) {
681
+ const backfillEndClock = startClock();
682
+ const label = { chain: params.chain.name };
683
+ let first = hexToNumber(params.syncProgress.start.number);
684
+ const last = params.syncProgress.end === undefined
685
+ ? params.syncProgress.finalized
686
+ : hexToNumber(params.syncProgress.end.number) >
687
+ hexToNumber(params.syncProgress.finalized.number)
688
+ ? params.syncProgress.finalized
689
+ : params.syncProgress.end;
690
+ if (hexToNumber(params.syncProgress.start.number) >
691
+ hexToNumber(params.syncProgress.finalized.number)) {
692
+ params.syncProgress.current = params.syncProgress.finalized;
693
+ params.common.logger.info({
694
+ msg: "Skipped fetching backfill JSON-RPC data (chain only requires live indexing)",
695
+ chain: params.chain.name,
696
+ chain_id: params.chain.id,
697
+ finalized_block: hexToNumber(params.syncProgress.finalized.number),
698
+ start_block: hexToNumber(params.syncProgress.start.number),
699
+ });
700
+ params.common.metrics.ponder_sync_block.set(label, hexToNumber(params.syncProgress.current.number));
701
+ params.common.metrics.ponder_sync_block_timestamp.set(label, hexToNumber(params.syncProgress.current.timestamp));
702
+ params.common.metrics.ponder_historical_total_blocks.set(label, 0);
703
+ params.common.metrics.ponder_historical_cached_blocks.set(label, 0);
704
+ params.common.metrics.ponder_historical_completed_blocks.set(label, 0);
705
+ return;
706
+ }
707
+ const totalInterval = [
708
+ hexToNumber(params.syncProgress.start.number),
709
+ hexToNumber(last.number),
710
+ ];
711
+ const total = totalInterval[1] - totalInterval[0] + 1;
712
+ params.common.metrics.ponder_historical_total_blocks.set(label, total);
713
+ params.common.metrics.ponder_historical_cached_blocks.set(label, 0);
714
+ if (params.syncProgress.current === undefined) {
715
+ if (params.isCatchup === false) {
716
+ params.common.logger.info({
717
+ msg: "Started fetching backfill JSON-RPC data",
718
+ chain: params.chain.name,
719
+ chain_id: params.chain.id,
720
+ });
721
+ }
722
+ }
723
+ else {
724
+ params.common.metrics.ponder_sync_block.set(label, hexToNumber(params.syncProgress.current.number));
725
+ params.common.metrics.ponder_sync_block_timestamp.set(label, hexToNumber(params.syncProgress.current.timestamp));
726
+ if (params.isCatchup === false) {
727
+ params.common.logger.info({
728
+ msg: "Started fetching backfill JSON-RPC data",
729
+ chain: params.chain.name,
730
+ chain_id: params.chain.id,
731
+ });
732
+ }
733
+ first = Math.max(first, hexToNumber(params.syncProgress.current.number) + 1);
734
+ }
735
+ const fromBlock = Number(decodeCheckpoint(params.from).blockNumber);
736
+ const { intervals: requiredIntervals } = getRequiredIntervalsWithFilters({
737
+ interval: [fromBlock, hexToNumber(last.number)],
738
+ filters: params.eventCallbacks.map(({ filter }) => filter),
739
+ cachedIntervals: params.cachedIntervals,
740
+ });
741
+ const { factoryIntervals: requiredFactoryIntervals } = getRequiredIntervalsWithFilters({
742
+ interval: [first, hexToNumber(last.number)],
743
+ filters: params.eventCallbacks.map(({ filter }) => filter),
744
+ cachedIntervals: params.cachedIntervals,
745
+ });
746
+ const historicalSync = createInMemoryHistoricalSync({
747
+ common: params.common,
748
+ chain: params.chain,
749
+ rpc: params.rpc,
750
+ childAddress: params.childAddresses,
751
+ });
752
+ params.common.metrics.ponder_historical_completed_blocks.inc(label, Math.max(0, Math.min(fromBlock, hexToNumber(last.number) + 1) - first));
753
+ let cursor = fromBlock;
754
+ for await (const blockData of historicalSync.syncBlockData({
755
+ requiredIntervals,
756
+ requiredFactoryIntervals,
757
+ })) {
758
+ const endClock = startClock();
759
+ const rawEvents = buildEvents({
760
+ eventCallbacks: params.eventCallbacks,
761
+ blocks: blockData.blocks,
762
+ logs: blockData.logs,
763
+ transactions: blockData.transactions,
764
+ transactionReceipts: blockData.transactionReceipts,
765
+ traces: blockData.traces,
766
+ childAddresses: params.childAddresses,
767
+ chainId: params.chain.id,
768
+ });
769
+ params.common.logger.trace({
770
+ msg: "Constructed events from block data",
771
+ chain: params.chain.name,
772
+ chain_id: params.chain.id,
773
+ block_range: JSON.stringify([cursor, blockData.cursor]),
774
+ event_count: rawEvents.length,
775
+ duration: endClock(),
776
+ });
777
+ params.common.metrics.ponder_historical_extract_duration.inc({ step: "build" }, endClock());
778
+ params.common.metrics.ponder_historical_completed_blocks.inc(label, blockData.cursor - cursor + 1);
779
+ const blockRange = [cursor, blockData.cursor];
780
+ cursor = blockData.cursor + 1;
781
+ const lastBlock = blockData.blocks[blockData.blocks.length - 1];
782
+ params.common.metrics.ponder_sync_block.set(label, Number(lastBlock.number));
783
+ params.common.metrics.ponder_sync_block_timestamp.set(label, Number(lastBlock.timestamp));
784
+ const checkpoint = encodeCheckpoint({
785
+ ...MAX_CHECKPOINT,
786
+ blockTimestamp: lastBlock.timestamp,
787
+ chainId: BigInt(params.chain.id),
788
+ blockNumber: lastBlock.number,
789
+ });
790
+ yield { events: rawEvents, checkpoint, blockRange };
791
+ }
792
+ // Advance through the entire scanned range, including blocks without events.
793
+ params.syncProgress.current = last;
794
+ params.common.metrics.ponder_historical_completed_blocks.inc(label, Math.max(0, hexToNumber(last.number) - cursor + 1));
795
+ params.common.metrics.ponder_sync_block.set(label, hexToNumber(last.number));
796
+ params.common.metrics.ponder_sync_block_timestamp.set(label, hexToNumber(last.timestamp));
797
+ if (cursor <= hexToNumber(last.number)) {
798
+ yield {
799
+ events: [],
800
+ checkpoint: params.to,
801
+ blockRange: [cursor, hexToNumber(last.number)],
802
+ };
803
+ }
804
+ params.common.logger.info({
805
+ msg: "Finished fetching backfill JSON-RPC data",
806
+ chain: params.chain.name,
807
+ chain_id: params.chain.id,
808
+ duration: backfillEndClock(),
809
+ });
810
+ }
667
811
  export async function* getLocalSyncGenerator(params) {
668
812
  const backfillEndClock = startClock();
669
813
  const label = { chain: params.chain.name };
@@ -694,6 +838,7 @@ export async function* getLocalSyncGenerator(params) {
694
838
  params.common.metrics.ponder_sync_block_timestamp.set(label, hexToNumber(params.syncProgress.current.timestamp));
695
839
  params.common.metrics.ponder_historical_total_blocks.set(label, 0);
696
840
  params.common.metrics.ponder_historical_cached_blocks.set(label, 0);
841
+ params.common.metrics.ponder_historical_completed_blocks.set(label, 0);
697
842
  return;
698
843
  }
699
844
  const totalInterval = [
@@ -709,8 +854,17 @@ export async function* getLocalSyncGenerator(params) {
709
854
  const total = totalInterval[1] - totalInterval[0] + 1;
710
855
  params.common.metrics.ponder_historical_total_blocks.set(label, total);
711
856
  params.common.metrics.ponder_historical_cached_blocks.set(label, total - required);
712
- // Handle cache hit
713
- if (params.syncProgress.current !== undefined) {
857
+ if (params.syncProgress.current === undefined) {
858
+ if (params.isCatchup === false) {
859
+ params.common.logger.info({
860
+ msg: "Started fetching backfill JSON-RPC data",
861
+ chain: params.chain.name,
862
+ chain_id: params.chain.id,
863
+ cache_rate: "0%",
864
+ });
865
+ }
866
+ }
867
+ else {
714
868
  params.common.metrics.ponder_sync_block.set(label, hexToNumber(params.syncProgress.current.number));
715
869
  params.common.metrics.ponder_sync_block_timestamp.set(label, hexToNumber(params.syncProgress.current.timestamp));
716
870
  // `getEvents` can make progress without calling `sync`, so immediately "yield"
@@ -739,14 +893,6 @@ export async function* getLocalSyncGenerator(params) {
739
893
  }
740
894
  first = Math.max(first, hexToNumber(params.syncProgress.current.number) + 1);
741
895
  }
742
- else {
743
- params.common.logger.info({
744
- msg: "Started fetching backfill JSON-RPC data",
745
- chain: params.chain.name,
746
- chain_id: params.chain.id,
747
- cache_rate: "0%",
748
- });
749
- }
750
896
  const historicalSync = createHistoricalSync(params);
751
897
  const { callback: intervalCallback, generator: intervalGenerator } = createCallbackGenerator();
752
898
  intervalCallback({
@@ -806,13 +952,11 @@ export async function* getLocalSyncGenerator(params) {
806
952
  logs,
807
953
  syncStore,
808
954
  });
809
- if (params.chain.disableCache === false) {
810
- await syncStore.insertIntervals({
811
- intervals: requiredIntervals,
812
- factoryIntervals: requiredFactoryIntervals,
813
- chainId: params.chain.id,
814
- });
815
- }
955
+ await syncStore.insertIntervals({
956
+ intervals: requiredIntervals,
957
+ factoryIntervals: requiredFactoryIntervals,
958
+ chainId: params.chain.id,
959
+ });
816
960
  return closestToTipBlock;
817
961
  })
818
962
  .catch((error) => {
@@ -1 +1 @@
1
- {"version":3,"file":"historical.js","sourceRoot":"","sources":["../../../src/runtime/historical.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"historical.js","sourceRoot":"","sources":["../../../src/runtime/historical.ts"],"names":[],"mappings":"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"}