@aztec/stdlib 4.0.0-nightly.20260112 → 4.0.0-nightly.20260113

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 (143) hide show
  1. package/dest/block/attestation_info.d.ts +5 -5
  2. package/dest/block/attestation_info.d.ts.map +1 -1
  3. package/dest/block/attestation_info.js +4 -4
  4. package/dest/block/l2_block.d.ts +6 -3
  5. package/dest/block/l2_block.d.ts.map +1 -1
  6. package/dest/block/l2_block.js +2 -2
  7. package/dest/block/l2_block_new.d.ts +1 -2
  8. package/dest/block/l2_block_new.d.ts.map +1 -1
  9. package/dest/block/l2_block_new.js +4 -1
  10. package/dest/block/l2_block_source.d.ts +245 -41
  11. package/dest/block/l2_block_source.d.ts.map +1 -1
  12. package/dest/block/l2_block_source.js +23 -5
  13. package/dest/block/l2_block_stream/index.d.ts +2 -1
  14. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  15. package/dest/block/l2_block_stream/index.js +1 -0
  16. package/dest/block/l2_block_stream/interfaces.d.ts +16 -5
  17. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  18. package/dest/block/l2_block_stream/l2_block_stream.d.ts +4 -2
  19. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  20. package/dest/block/l2_block_stream/l2_block_stream.js +102 -30
  21. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +24 -16
  22. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  23. package/dest/block/l2_block_stream/l2_tips_memory_store.js +55 -61
  24. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +49 -0
  25. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -0
  26. package/dest/block/l2_block_stream/l2_tips_store_base.js +179 -0
  27. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  28. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  29. package/dest/block/test/l2_tips_store_test_suite.js +483 -38
  30. package/dest/block/validate_block_result.d.ts +24 -24
  31. package/dest/block/validate_block_result.d.ts.map +1 -1
  32. package/dest/block/validate_block_result.js +13 -13
  33. package/dest/checkpoint/checkpoint.d.ts +1 -1
  34. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  35. package/dest/checkpoint/checkpoint.js +1 -0
  36. package/dest/checkpoint/checkpoint_info.d.ts +32 -3
  37. package/dest/checkpoint/checkpoint_info.d.ts.map +1 -1
  38. package/dest/checkpoint/checkpoint_info.js +34 -1
  39. package/dest/checkpoint/index.d.ts +2 -1
  40. package/dest/checkpoint/index.d.ts.map +1 -1
  41. package/dest/checkpoint/index.js +1 -0
  42. package/dest/interfaces/api_limit.d.ts +2 -1
  43. package/dest/interfaces/api_limit.d.ts.map +1 -1
  44. package/dest/interfaces/api_limit.js +1 -0
  45. package/dest/interfaces/archiver.d.ts +6 -6
  46. package/dest/interfaces/archiver.d.ts.map +1 -1
  47. package/dest/interfaces/archiver.js +6 -4
  48. package/dest/interfaces/aztec-node-admin.d.ts +12 -6
  49. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  50. package/dest/interfaces/aztec-node-admin.js +2 -2
  51. package/dest/interfaces/aztec-node.d.ts +2 -2
  52. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  53. package/dest/interfaces/aztec-node.js +8 -3
  54. package/dest/interfaces/configs.d.ts +6 -1
  55. package/dest/interfaces/configs.d.ts.map +1 -1
  56. package/dest/interfaces/configs.js +2 -1
  57. package/dest/interfaces/p2p.d.ts +7 -9
  58. package/dest/interfaces/p2p.d.ts.map +1 -1
  59. package/dest/interfaces/p2p.js +3 -4
  60. package/dest/interfaces/proving-job.d.ts +166 -166
  61. package/dest/interfaces/validator.d.ts +41 -7
  62. package/dest/interfaces/validator.d.ts.map +1 -1
  63. package/dest/interfaces/validator.js +3 -1
  64. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +6 -5
  65. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
  66. package/dest/kernel/hints/build_note_hash_read_request_hints.js +5 -6
  67. package/dest/p2p/attestation_utils.d.ts +3 -3
  68. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  69. package/dest/p2p/attestation_utils.js +1 -1
  70. package/dest/p2p/block_proposal.d.ts +85 -21
  71. package/dest/p2p/block_proposal.d.ts.map +1 -1
  72. package/dest/p2p/block_proposal.js +120 -37
  73. package/dest/p2p/checkpoint_attestation.d.ts +77 -0
  74. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -0
  75. package/dest/p2p/{block_attestation.js → checkpoint_attestation.js} +22 -19
  76. package/dest/p2p/checkpoint_proposal.d.ts +154 -0
  77. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -0
  78. package/dest/p2p/checkpoint_proposal.js +217 -0
  79. package/dest/p2p/consensus_payload.d.ts +4 -2
  80. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  81. package/dest/p2p/consensus_payload.js +3 -2
  82. package/dest/p2p/index.d.ts +4 -2
  83. package/dest/p2p/index.d.ts.map +1 -1
  84. package/dest/p2p/index.js +3 -1
  85. package/dest/p2p/signature_utils.d.ts +5 -3
  86. package/dest/p2p/signature_utils.d.ts.map +1 -1
  87. package/dest/p2p/signature_utils.js +3 -1
  88. package/dest/p2p/signed_txs.d.ts +40 -0
  89. package/dest/p2p/signed_txs.d.ts.map +1 -0
  90. package/dest/p2p/signed_txs.js +70 -0
  91. package/dest/p2p/topic_type.d.ts +3 -2
  92. package/dest/p2p/topic_type.d.ts.map +1 -1
  93. package/dest/p2p/topic_type.js +8 -2
  94. package/dest/rollup/checkpoint_header.d.ts +5 -1
  95. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  96. package/dest/rollup/checkpoint_header.js +4 -0
  97. package/dest/tests/factories.d.ts +13 -1
  98. package/dest/tests/factories.d.ts.map +1 -1
  99. package/dest/tests/factories.js +50 -1
  100. package/dest/tests/mocks.d.ts +55 -9
  101. package/dest/tests/mocks.d.ts.map +1 -1
  102. package/dest/tests/mocks.js +84 -35
  103. package/dest/tx/private_execution_result.d.ts +1 -5
  104. package/dest/tx/private_execution_result.d.ts.map +1 -1
  105. package/dest/tx/private_execution_result.js +3 -20
  106. package/package.json +8 -8
  107. package/src/block/attestation_info.ts +9 -6
  108. package/src/block/l2_block.ts +3 -3
  109. package/src/block/l2_block_new.ts +5 -1
  110. package/src/block/l2_block_source.ts +66 -16
  111. package/src/block/l2_block_stream/index.ts +1 -0
  112. package/src/block/l2_block_stream/interfaces.ts +16 -4
  113. package/src/block/l2_block_stream/l2_block_stream.ts +121 -38
  114. package/src/block/l2_block_stream/l2_tips_memory_store.ts +62 -56
  115. package/src/block/l2_block_stream/l2_tips_store_base.ts +226 -0
  116. package/src/block/test/l2_tips_store_test_suite.ts +485 -36
  117. package/src/block/validate_block_result.ts +35 -31
  118. package/src/checkpoint/checkpoint.ts +1 -0
  119. package/src/checkpoint/checkpoint_info.ts +45 -2
  120. package/src/checkpoint/index.ts +1 -0
  121. package/src/interfaces/api_limit.ts +1 -0
  122. package/src/interfaces/archiver.ts +14 -6
  123. package/src/interfaces/aztec-node-admin.ts +5 -2
  124. package/src/interfaces/aztec-node.ts +30 -3
  125. package/src/interfaces/configs.ts +5 -0
  126. package/src/interfaces/p2p.ts +8 -12
  127. package/src/interfaces/validator.ts +57 -7
  128. package/src/kernel/hints/build_note_hash_read_request_hints.ts +5 -8
  129. package/src/p2p/attestation_utils.ts +3 -3
  130. package/src/p2p/block_proposal.ts +185 -41
  131. package/src/p2p/{block_attestation.ts → checkpoint_attestation.ts} +31 -25
  132. package/src/p2p/checkpoint_proposal.ts +337 -0
  133. package/src/p2p/consensus_payload.ts +5 -2
  134. package/src/p2p/index.ts +3 -1
  135. package/src/p2p/signature_utils.ts +3 -1
  136. package/src/p2p/signed_txs.ts +83 -0
  137. package/src/p2p/topic_type.ts +3 -2
  138. package/src/rollup/checkpoint_header.ts +13 -0
  139. package/src/tests/factories.ts +42 -1
  140. package/src/tests/mocks.ts +146 -50
  141. package/src/tx/private_execution_result.ts +0 -15
  142. package/dest/p2p/block_attestation.d.ts +0 -77
  143. package/dest/p2p/block_attestation.d.ts.map +0 -1
@@ -0,0 +1,179 @@
1
+ import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
2
+ import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
3
+ import { GENESIS_CHECKPOINT_HEADER_HASH } from '../l2_block_source.js';
4
+ /**
5
+ * Abstract base class for L2 tips stores. Provides common event handling logic
6
+ * while delegating storage operations to subclasses.
7
+ */ export class L2TipsStoreBase {
8
+ // Public interface implementation
9
+ getL2BlockHash(number) {
10
+ return this.getStoredBlockHash(number);
11
+ }
12
+ getL2Tips() {
13
+ return this.runInTransaction(async ()=>{
14
+ const [proposedBlockId, finalizedBlockId, provenBlockId, checkpointedBlockId] = await Promise.all([
15
+ this.getBlockId('proposed'),
16
+ this.getBlockId('finalized'),
17
+ this.getBlockId('proven'),
18
+ this.getBlockId('checkpointed')
19
+ ]);
20
+ const [finalizedCheckpointId, provenCheckpointId, checkpointedCheckpointId] = await Promise.all([
21
+ this.getCheckpointId('finalized'),
22
+ this.getCheckpointId('proven'),
23
+ this.getCheckpointId('checkpointed')
24
+ ]);
25
+ return {
26
+ proposed: proposedBlockId,
27
+ finalized: {
28
+ block: finalizedBlockId,
29
+ checkpoint: finalizedCheckpointId
30
+ },
31
+ proven: {
32
+ block: provenBlockId,
33
+ checkpoint: provenCheckpointId
34
+ },
35
+ checkpointed: {
36
+ block: checkpointedBlockId,
37
+ checkpoint: checkpointedCheckpointId
38
+ }
39
+ };
40
+ });
41
+ }
42
+ async handleBlockStreamEvent(event) {
43
+ switch(event.type){
44
+ case 'blocks-added':
45
+ await this.handleBlocksAdded(event);
46
+ break;
47
+ case 'chain-checkpointed':
48
+ await this.handleChainCheckpointed(event);
49
+ break;
50
+ case 'chain-pruned':
51
+ await this.handleChainPruned(event);
52
+ break;
53
+ case 'chain-proven':
54
+ await this.handleChainProven(event);
55
+ break;
56
+ case 'chain-finalized':
57
+ await this.handleChainFinalized(event);
58
+ break;
59
+ }
60
+ }
61
+ // Protected helper that subclasses can override for block hash computation
62
+ computeBlockHash(block) {
63
+ return block.hash().then((hash)=>hash.toString());
64
+ }
65
+ // Private implementation
66
+ async getBlockId(tag) {
67
+ const blockNumber = await this.getTip(tag);
68
+ if (blockNumber === undefined || blockNumber === 0) {
69
+ return {
70
+ number: BlockNumber.ZERO,
71
+ hash: GENESIS_BLOCK_HEADER_HASH.toString()
72
+ };
73
+ }
74
+ const blockHash = await this.getStoredBlockHash(blockNumber);
75
+ if (!blockHash) {
76
+ throw new Error(`Block hash not found for block number ${blockNumber}`);
77
+ }
78
+ return {
79
+ number: blockNumber,
80
+ hash: blockHash
81
+ };
82
+ }
83
+ async getCheckpointId(tag) {
84
+ const blockNumber = await this.getTip(tag);
85
+ if (blockNumber === undefined || blockNumber === 0) {
86
+ return {
87
+ number: CheckpointNumber.ZERO,
88
+ hash: GENESIS_CHECKPOINT_HEADER_HASH.toString()
89
+ };
90
+ }
91
+ const checkpointNumber = await this.getCheckpointNumberForBlock(blockNumber);
92
+ if (checkpointNumber === undefined) {
93
+ // No checkpoint associated with this block yet
94
+ return {
95
+ number: CheckpointNumber.ZERO,
96
+ hash: GENESIS_CHECKPOINT_HEADER_HASH.toString()
97
+ };
98
+ }
99
+ const checkpoint = await this.getCheckpoint(checkpointNumber);
100
+ if (!checkpoint) {
101
+ throw new Error(`Checkpoint not found for checkpoint number ${checkpointNumber}`);
102
+ }
103
+ return {
104
+ number: checkpointNumber,
105
+ hash: checkpoint.checkpoint.hash().toString()
106
+ };
107
+ }
108
+ async handleBlocksAdded(event) {
109
+ if (event.type !== 'blocks-added') {
110
+ return;
111
+ }
112
+ await this.runInTransaction(async ()=>{
113
+ const blocks = event.blocks;
114
+ for (const block of blocks){
115
+ await this.setBlockHash(block.number, await this.computeBlockHash(block));
116
+ }
117
+ await this.setTip('proposed', blocks.at(-1).number);
118
+ });
119
+ }
120
+ async handleChainCheckpointed(event) {
121
+ if (event.type !== 'chain-checkpointed') {
122
+ return;
123
+ }
124
+ await this.runInTransaction(async ()=>{
125
+ await this.saveTag('checkpointed', event.block);
126
+ await this.saveCheckpoint(event.checkpoint);
127
+ });
128
+ }
129
+ async handleChainPruned(event) {
130
+ if (event.type !== 'chain-pruned') {
131
+ return;
132
+ }
133
+ await this.runInTransaction(async ()=>{
134
+ await this.saveTag('proposed', event.block);
135
+ await this.saveTag('checkpointed', event.block);
136
+ const storeProven = await this.getBlockId('proven');
137
+ if (storeProven.number > event.block.number) {
138
+ await this.saveTag('proven', event.block);
139
+ }
140
+ });
141
+ }
142
+ async handleChainProven(event) {
143
+ if (event.type !== 'chain-proven') {
144
+ return;
145
+ }
146
+ await this.runInTransaction(async ()=>{
147
+ await this.saveTag('proven', event.block);
148
+ });
149
+ }
150
+ async handleChainFinalized(event) {
151
+ if (event.type !== 'chain-finalized') {
152
+ return;
153
+ }
154
+ await this.runInTransaction(async ()=>{
155
+ await this.saveTag('finalized', event.block);
156
+ const finalizedCheckpointNumber = await this.getCheckpointNumberForBlock(event.block.number);
157
+ await this.deleteBlockHashesBefore(event.block.number);
158
+ await this.deleteBlockToCheckpointBefore(event.block.number);
159
+ if (finalizedCheckpointNumber !== undefined) {
160
+ await this.deleteCheckpointsBefore(finalizedCheckpointNumber);
161
+ }
162
+ });
163
+ }
164
+ async saveTag(name, block) {
165
+ await this.setTip(name, block.number);
166
+ if (block.hash) {
167
+ await this.setBlockHash(block.number, block.hash);
168
+ }
169
+ }
170
+ async saveCheckpoint(publishedCheckpoint) {
171
+ const checkpoint = publishedCheckpoint.checkpoint;
172
+ const lastBlock = checkpoint.blocks.at(-1);
173
+ // Only store the mapping for the last block since tips only point to checkpoint boundaries
174
+ await Promise.all([
175
+ this.setCheckpointNumberForBlock(lastBlock.number, checkpoint.number),
176
+ this.saveCheckpointData(publishedCheckpoint)
177
+ ]);
178
+ }
179
+ }
@@ -1,3 +1,3 @@
1
1
  import type { L2TipsStore } from '../l2_block_stream/index.js';
2
2
  export declare function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>): void;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDJfdGlwc19zdG9yZV90ZXN0X3N1aXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2svdGVzdC9sMl90aXBzX3N0b3JlX3Rlc3Rfc3VpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0Qsd0JBQWdCLGVBQWUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDLFFBaUZ4RSJ9
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDJfdGlwc19zdG9yZV90ZXN0X3N1aXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2svdGVzdC9sMl90aXBzX3N0b3JlX3Rlc3Rfc3VpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUEsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0Qsd0JBQWdCLGVBQWUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDLFFBNGdCeEUifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"l2_tips_store_test_suite.d.ts","sourceRoot":"","sources":["../../../src/block/test/l2_tips_store_test_suite.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,QAiFxE"}
1
+ {"version":3,"file":"l2_tips_store_test_suite.d.ts","sourceRoot":"","sources":["../../../src/block/test/l2_tips_store_test_suite.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,QA4gBxE"}