@aztec/stdlib 0.84.0 → 0.85.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 (112) hide show
  1. package/dest/avm/avm.d.ts +2474 -284
  2. package/dest/avm/avm.d.ts.map +1 -1
  3. package/dest/avm/avm.js +116 -17
  4. package/dest/avm/avm_proving_request.d.ts +1071 -23
  5. package/dest/avm/avm_proving_request.d.ts.map +1 -1
  6. package/dest/block/in_block.d.ts.map +1 -1
  7. package/dest/block/index.d.ts +1 -1
  8. package/dest/block/index.d.ts.map +1 -1
  9. package/dest/block/index.js +1 -1
  10. package/dest/block/l2_block_source.d.ts +8 -5
  11. package/dest/block/l2_block_source.d.ts.map +1 -1
  12. package/dest/block/l2_block_source.js +9 -0
  13. package/dest/block/l2_block_stream/index.d.ts +4 -0
  14. package/dest/block/l2_block_stream/index.d.ts.map +1 -0
  15. package/dest/block/l2_block_stream/index.js +3 -0
  16. package/dest/block/l2_block_stream/interfaces.d.ts +26 -0
  17. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -0
  18. package/dest/block/l2_block_stream/interfaces.js +1 -0
  19. package/dest/block/{l2_block_downloader → l2_block_stream}/l2_block_stream.d.ts +4 -24
  20. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -0
  21. package/dest/block/{l2_block_downloader → l2_block_stream}/l2_block_stream.js +29 -10
  22. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +18 -0
  23. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -0
  24. package/dest/block/l2_block_stream/l2_tips_memory_store.js +70 -0
  25. package/dest/block/test/index.d.ts +2 -0
  26. package/dest/block/test/index.d.ts.map +1 -0
  27. package/dest/block/test/index.js +1 -0
  28. package/dest/block/test/l2_tips_store_test_suite.d.ts +3 -0
  29. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -0
  30. package/dest/block/test/l2_tips_store_test_suite.js +107 -0
  31. package/dest/database-version/version_manager.d.ts +21 -5
  32. package/dest/database-version/version_manager.d.ts.map +1 -1
  33. package/dest/database-version/version_manager.js +25 -15
  34. package/dest/epoch-helpers/index.d.ts +9 -0
  35. package/dest/epoch-helpers/index.d.ts.map +1 -1
  36. package/dest/epoch-helpers/index.js +15 -2
  37. package/dest/interfaces/archiver.d.ts.map +1 -1
  38. package/dest/interfaces/archiver.js +4 -4
  39. package/dest/interfaces/aztec-node.d.ts +5 -6
  40. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  41. package/dest/interfaces/aztec-node.js +2 -3
  42. package/dest/interfaces/proving-job.d.ts +1071 -23
  43. package/dest/interfaces/proving-job.d.ts.map +1 -1
  44. package/dest/interfaces/pxe.d.ts +5 -7
  45. package/dest/interfaces/pxe.d.ts.map +1 -1
  46. package/dest/interfaces/pxe.js +2 -7
  47. package/dest/interfaces/world_state.d.ts +3 -2
  48. package/dest/interfaces/world_state.d.ts.map +1 -1
  49. package/dest/logs/log_with_tx_data.d.ts +3 -2
  50. package/dest/logs/log_with_tx_data.d.ts.map +1 -1
  51. package/dest/logs/log_with_tx_data.js +3 -2
  52. package/dest/logs/pending_tagged_log.d.ts +4 -2
  53. package/dest/logs/pending_tagged_log.d.ts.map +1 -1
  54. package/dest/logs/pending_tagged_log.js +6 -3
  55. package/dest/messaging/l1_to_l2_message_source.d.ts +5 -0
  56. package/dest/messaging/l1_to_l2_message_source.d.ts.map +1 -1
  57. package/dest/proofs/proof.d.ts +4 -1
  58. package/dest/proofs/proof.d.ts.map +1 -1
  59. package/dest/proofs/proof.js +9 -17
  60. package/dest/tests/factories.d.ts +5 -1
  61. package/dest/tests/factories.d.ts.map +1 -1
  62. package/dest/tests/factories.js +23 -7
  63. package/dest/tests/mocks.d.ts +3 -1
  64. package/dest/tests/mocks.d.ts.map +1 -1
  65. package/dest/tests/mocks.js +3 -2
  66. package/dest/tx/index.d.ts +2 -0
  67. package/dest/tx/index.d.ts.map +1 -1
  68. package/dest/tx/index.js +2 -0
  69. package/dest/tx/indexed_tx_effect.d.ts +24 -0
  70. package/dest/tx/indexed_tx_effect.d.ts.map +1 -0
  71. package/dest/tx/indexed_tx_effect.js +14 -0
  72. package/dest/tx/tx_hash.d.ts.map +1 -1
  73. package/dest/tx/tx_hash.js +1 -4
  74. package/dest/tx/validator/error_texts.d.ts +20 -0
  75. package/dest/tx/validator/error_texts.d.ts.map +1 -0
  76. package/dest/tx/validator/error_texts.js +27 -0
  77. package/package.json +8 -6
  78. package/src/avm/avm.ts +188 -29
  79. package/src/block/in_block.ts +1 -0
  80. package/src/block/index.ts +1 -1
  81. package/src/block/l2_block_source.ts +15 -5
  82. package/src/block/l2_block_stream/index.ts +3 -0
  83. package/src/block/l2_block_stream/interfaces.ts +33 -0
  84. package/src/block/{l2_block_downloader → l2_block_stream}/l2_block_stream.ts +34 -44
  85. package/src/block/l2_block_stream/l2_tips_memory_store.ts +75 -0
  86. package/src/block/test/index.ts +1 -0
  87. package/src/block/test/l2_tips_store_test_suite.ts +87 -0
  88. package/src/database-version/version_manager.ts +56 -17
  89. package/src/epoch-helpers/index.ts +19 -0
  90. package/src/interfaces/archiver.ts +3 -3
  91. package/src/interfaces/aztec-node.ts +7 -6
  92. package/src/interfaces/pxe.ts +15 -11
  93. package/src/interfaces/world_state.ts +3 -2
  94. package/src/logs/log_with_tx_data.ts +4 -3
  95. package/src/logs/pending_tagged_log.ts +5 -2
  96. package/src/messaging/l1_to_l2_message_source.ts +7 -0
  97. package/src/proofs/proof.ts +9 -19
  98. package/src/tests/factories.ts +54 -4
  99. package/src/tests/mocks.ts +6 -1
  100. package/src/tx/index.ts +2 -0
  101. package/src/tx/indexed_tx_effect.ts +17 -0
  102. package/src/tx/tx_hash.ts +0 -4
  103. package/src/tx/validator/error_texts.ts +34 -0
  104. package/dest/block/l2_block_downloader/index.d.ts +0 -3
  105. package/dest/block/l2_block_downloader/index.d.ts.map +0 -1
  106. package/dest/block/l2_block_downloader/index.js +0 -2
  107. package/dest/block/l2_block_downloader/l2_block_downloader.d.ts +0 -58
  108. package/dest/block/l2_block_downloader/l2_block_downloader.d.ts.map +0 -1
  109. package/dest/block/l2_block_downloader/l2_block_downloader.js +0 -124
  110. package/dest/block/l2_block_downloader/l2_block_stream.d.ts.map +0 -1
  111. package/src/block/l2_block_downloader/index.ts +0 -2
  112. package/src/block/l2_block_downloader/l2_block_downloader.ts +0 -149
@@ -1,149 +0,0 @@
1
- import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
2
- import { createLogger } from '@aztec/foundation/log';
3
- import { FifoMemoryQueue, Semaphore, SerialQueue } from '@aztec/foundation/queue';
4
- import { InterruptibleSleep } from '@aztec/foundation/sleep';
5
-
6
- import type { L2Block } from '../l2_block.js';
7
- import type { L2BlockSource } from '../l2_block_source.js';
8
-
9
- const log = createLogger('types:l2_block_downloader');
10
-
11
- /**
12
- * Downloads L2 blocks from a L2BlockSource.
13
- * The blocks are stored in a queue and can be retrieved using the getBlocks method.
14
- * The queue size is limited by the maxQueueSize parameter.
15
- * The downloader will pause when the queue is full or when the L2BlockSource is out of blocks.
16
- */
17
- export class L2BlockDownloader {
18
- private runningPromise?: Promise<void>;
19
- private running = false;
20
- private from = 0;
21
- private interruptibleSleep = new InterruptibleSleep();
22
- private readonly semaphore: Semaphore;
23
- private readonly jobQueue = new SerialQueue();
24
- private readonly blockQueue = new FifoMemoryQueue<L2Block[]>();
25
- private readonly proven: boolean;
26
- private readonly pollIntervalMS: number;
27
-
28
- constructor(
29
- private l2BlockSource: L2BlockSource,
30
- opts: {
31
- maxQueueSize: number;
32
- proven?: boolean;
33
- pollIntervalMS?: number;
34
- },
35
- ) {
36
- this.pollIntervalMS = opts.pollIntervalMS ?? 1000;
37
- this.proven = opts.proven ?? false;
38
- this.semaphore = new Semaphore(opts.maxQueueSize);
39
- }
40
-
41
- /**
42
- * Starts the downloader.
43
- * @param from - The block number to start downloading from. Defaults to INITIAL_L2_BLOCK_NUM.
44
- */
45
- public start(from = INITIAL_L2_BLOCK_NUM) {
46
- if (this.running) {
47
- this.interruptibleSleep.interrupt();
48
- return;
49
- }
50
- this.from = from;
51
- this.running = true;
52
-
53
- const fn = async () => {
54
- while (this.running) {
55
- try {
56
- await this.jobQueue.put(() => this.collectBlocks());
57
- await this.interruptibleSleep.sleep(this.pollIntervalMS);
58
- } catch (err) {
59
- log.error(`Error downloading L2 block`, err);
60
- await this.interruptibleSleep.sleep(this.pollIntervalMS);
61
- }
62
- }
63
- };
64
- this.jobQueue.start();
65
- this.runningPromise = fn();
66
- }
67
-
68
- /**
69
- * Repeatedly queries the block source and adds the received blocks to the block queue.
70
- * Stops when no further blocks are received.
71
- * @param targetBlockNumber - Optional block number to stop at.
72
- * @param proven - Optional override of the default "proven" setting.
73
- * @returns The total number of blocks added to the block queue.
74
- */
75
- private async collectBlocks(targetBlockNumber?: number, onlyProven?: boolean) {
76
- let totalBlocks = 0;
77
- while (true) {
78
- // If we have a target and have reached it, return
79
- if (targetBlockNumber !== undefined && this.from > targetBlockNumber) {
80
- log.verbose(`Reached target block number ${targetBlockNumber}`);
81
- return totalBlocks;
82
- }
83
-
84
- // If we have a target, then request at most the number of blocks to get to it
85
- const limit = targetBlockNumber !== undefined ? Math.min(targetBlockNumber - this.from + 1, 10) : 10;
86
- const proven = onlyProven === undefined ? this.proven : onlyProven;
87
-
88
- // Hit the archiver for blocks
89
- const blocks = await this.l2BlockSource.getBlocks(this.from, limit, proven);
90
-
91
- // If there are no more blocks, return
92
- if (!blocks.length) {
93
- return totalBlocks;
94
- }
95
-
96
- log.verbose(
97
- `Received ${blocks.length} blocks from archiver after querying from ${this.from} limit ${limit} (proven ${proven})`,
98
- );
99
-
100
- // Push new blocks into the queue and loop
101
- await this.semaphore.acquire();
102
- this.blockQueue.put(blocks);
103
- this.from += blocks.length;
104
- totalBlocks += blocks.length;
105
- }
106
- }
107
-
108
- /**
109
- * Stops the downloader.
110
- */
111
- public async stop() {
112
- this.running = false;
113
- this.interruptibleSleep.interrupt();
114
- await this.jobQueue.cancel();
115
- this.blockQueue.cancel();
116
- await this.runningPromise;
117
- }
118
-
119
- /**
120
- * Gets the next batch of blocks from the queue.
121
- * @param timeout - optional timeout value to prevent permanent blocking
122
- * @returns The next batch of blocks from the queue.
123
- */
124
- public async getBlocks(timeout?: number): Promise<L2Block[]> {
125
- try {
126
- const blocks = await this.blockQueue.get(timeout);
127
- if (!blocks) {
128
- return [];
129
- }
130
- this.semaphore.release();
131
- return blocks;
132
- } catch (err) {
133
- // nothing to do
134
- return [];
135
- }
136
- }
137
-
138
- /**
139
- * Forces an immediate request for blocks.
140
- * Repeatedly queries the block source and adds the received blocks to the block queue.
141
- * Stops when no further blocks are received.
142
- * @param targetBlockNumber - Optional block number to stop at.
143
- * @param proven - Optional override of the default "proven" setting.
144
- * @returns A promise that fulfills once the poll is complete
145
- */
146
- public pollImmediate(targetBlockNumber?: number, onlyProven?: boolean): Promise<number> {
147
- return this.jobQueue.put(() => this.collectBlocks(targetBlockNumber, onlyProven));
148
- }
149
- }