ponder 0.17.12 → 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 (153) hide show
  1. package/CHANGELOG.md +20 -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/rpc/actions.js +143 -67
  27. package/dist/esm/rpc/actions.js.map +1 -1
  28. package/dist/esm/runtime/events.js +33 -19
  29. package/dist/esm/runtime/events.js.map +1 -1
  30. package/dist/esm/runtime/filter.js +10 -9
  31. package/dist/esm/runtime/filter.js.map +1 -1
  32. package/dist/esm/runtime/fragments.js +50 -24
  33. package/dist/esm/runtime/fragments.js.map +1 -1
  34. package/dist/esm/runtime/historical.js +212 -68
  35. package/dist/esm/runtime/historical.js.map +1 -1
  36. package/dist/esm/runtime/index.js +11 -15
  37. package/dist/esm/runtime/index.js.map +1 -1
  38. package/dist/esm/runtime/isolated.js +1 -0
  39. package/dist/esm/runtime/isolated.js.map +1 -1
  40. package/dist/esm/runtime/multichain.js +1 -0
  41. package/dist/esm/runtime/multichain.js.map +1 -1
  42. package/dist/esm/runtime/omnichain.js +1 -0
  43. package/dist/esm/runtime/omnichain.js.map +1 -1
  44. package/dist/esm/runtime/realtime.js +17 -16
  45. package/dist/esm/runtime/realtime.js.map +1 -1
  46. package/dist/esm/server/index.js +8 -6
  47. package/dist/esm/server/index.js.map +1 -1
  48. package/dist/esm/sync-historical/in-memory.js +539 -0
  49. package/dist/esm/sync-historical/in-memory.js.map +1 -0
  50. package/dist/esm/sync-historical/index.js +46 -63
  51. package/dist/esm/sync-historical/index.js.map +1 -1
  52. package/dist/esm/sync-realtime/index.js +56 -83
  53. package/dist/esm/sync-realtime/index.js.map +1 -1
  54. package/dist/esm/sync-store/encode.js +1 -6
  55. package/dist/esm/sync-store/encode.js.map +1 -1
  56. package/dist/esm/sync-store/index.js +58 -62
  57. package/dist/esm/sync-store/index.js.map +1 -1
  58. package/dist/esm/sync-store/schema.js +23 -15
  59. package/dist/esm/sync-store/schema.js.map +1 -1
  60. package/dist/esm/sync-store/sql/ponder_rpc_cache_1/copy.sql +23 -0
  61. package/dist/esm/sync-store/sql/ponder_rpc_cache_1/create.sql +130 -0
  62. package/dist/esm/utils/finality.js +41 -32
  63. package/dist/esm/utils/finality.js.map +1 -1
  64. package/dist/esm/utils/pglite.js +0 -65
  65. package/dist/esm/utils/pglite.js.map +1 -1
  66. package/dist/types/bin/commands/codegen.d.ts.map +1 -1
  67. package/dist/types/bin/commands/dev.d.ts.map +1 -1
  68. package/dist/types/bin/commands/serve.d.ts.map +1 -1
  69. package/dist/types/bin/commands/start.d.ts.map +1 -1
  70. package/dist/types/build/config.d.ts.map +1 -1
  71. package/dist/types/build/index.d.ts.map +1 -1
  72. package/dist/types/build/plugin.d.ts.map +1 -1
  73. package/dist/types/build/stacktrace.d.ts +1 -12
  74. package/dist/types/build/stacktrace.d.ts.map +1 -1
  75. package/dist/types/config/index.d.ts +12 -2
  76. package/dist/types/config/index.d.ts.map +1 -1
  77. package/dist/types/database/index.d.ts.map +1 -1
  78. package/dist/types/index.d.ts +1 -0
  79. package/dist/types/index.d.ts.map +1 -1
  80. package/dist/types/indexing/client.d.ts.map +1 -1
  81. package/dist/types/internal/types.d.ts +8 -13
  82. package/dist/types/internal/types.d.ts.map +1 -1
  83. package/dist/types/rpc/actions.d.ts +30 -0
  84. package/dist/types/rpc/actions.d.ts.map +1 -1
  85. package/dist/types/runtime/events.d.ts.map +1 -1
  86. package/dist/types/runtime/filter.d.ts.map +1 -1
  87. package/dist/types/runtime/fragments.d.ts +9 -1
  88. package/dist/types/runtime/fragments.d.ts.map +1 -1
  89. package/dist/types/runtime/historical.d.ts +18 -1
  90. package/dist/types/runtime/historical.d.ts.map +1 -1
  91. package/dist/types/runtime/index.d.ts +1 -0
  92. package/dist/types/runtime/index.d.ts.map +1 -1
  93. package/dist/types/runtime/isolated.d.ts.map +1 -1
  94. package/dist/types/runtime/multichain.d.ts.map +1 -1
  95. package/dist/types/runtime/omnichain.d.ts.map +1 -1
  96. package/dist/types/runtime/realtime.d.ts.map +1 -1
  97. package/dist/types/server/index.d.ts.map +1 -1
  98. package/dist/types/sync-historical/in-memory.d.ts +24 -0
  99. package/dist/types/sync-historical/in-memory.d.ts.map +1 -0
  100. package/dist/types/sync-historical/index.d.ts.map +1 -1
  101. package/dist/types/sync-realtime/index.d.ts +3 -2
  102. package/dist/types/sync-realtime/index.d.ts.map +1 -1
  103. package/dist/types/sync-store/encode.d.ts.map +1 -1
  104. package/dist/types/sync-store/index.d.ts +3 -3
  105. package/dist/types/sync-store/index.d.ts.map +1 -1
  106. package/dist/types/sync-store/schema.d.ts +63 -98
  107. package/dist/types/sync-store/schema.d.ts.map +1 -1
  108. package/dist/types/types/eth.d.ts +2 -8
  109. package/dist/types/types/eth.d.ts.map +1 -1
  110. package/dist/types/utils/finality.d.ts +12 -9
  111. package/dist/types/utils/finality.d.ts.map +1 -1
  112. package/dist/types/utils/pglite.d.ts +0 -18
  113. package/dist/types/utils/pglite.d.ts.map +1 -1
  114. package/package.json +5 -11
  115. package/src/bin/commands/codegen.ts +3 -3
  116. package/src/bin/commands/dev.ts +3 -3
  117. package/src/bin/commands/serve.ts +3 -3
  118. package/src/bin/commands/start.ts +3 -3
  119. package/src/build/config.ts +29 -28
  120. package/src/build/index.ts +88 -71
  121. package/src/build/plugin.ts +6 -0
  122. package/src/build/stacktrace.ts +38 -65
  123. package/src/config/index.ts +12 -2
  124. package/src/database/index.ts +132 -89
  125. package/src/index.ts +5 -0
  126. package/src/indexing/client.ts +56 -40
  127. package/src/indexing/index.ts +4 -1
  128. package/src/internal/types.ts +10 -13
  129. package/src/rpc/actions.ts +211 -77
  130. package/src/runtime/events.ts +40 -19
  131. package/src/runtime/filter.ts +11 -11
  132. package/src/runtime/fragments.ts +70 -26
  133. package/src/runtime/historical.ts +314 -97
  134. package/src/runtime/index.ts +27 -14
  135. package/src/runtime/isolated.ts +1 -0
  136. package/src/runtime/multichain.ts +1 -0
  137. package/src/runtime/omnichain.ts +1 -0
  138. package/src/runtime/realtime.ts +24 -25
  139. package/src/server/index.ts +14 -7
  140. package/src/sync-historical/in-memory.ts +834 -0
  141. package/src/sync-historical/index.ts +76 -120
  142. package/src/sync-realtime/index.ts +73 -133
  143. package/src/sync-store/encode.ts +1 -6
  144. package/src/sync-store/index.ts +90 -95
  145. package/src/sync-store/schema.ts +24 -27
  146. package/src/types/eth.ts +2 -8
  147. package/src/utils/finality.ts +67 -34
  148. package/src/utils/pglite.ts +0 -79
  149. package/dist/esm/sync-store/migrations.js +0 -1595
  150. package/dist/esm/sync-store/migrations.js.map +0 -1
  151. package/dist/types/sync-store/migrations.d.ts +0 -8
  152. package/dist/types/sync-store/migrations.d.ts.map +0 -1
  153. package/src/sync-store/migrations.ts +0 -1801
@@ -1 +1 @@
1
- {"version":3,"file":"fragments.js","sourceRoot":"","sources":["../../../src/runtime/fragments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fragments.js","sourceRoot":"","sources":["../../../src/runtime/fragments.ts"],"names":[],"mappings":"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"}
@@ -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) => {