@aztec/simulator 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 (75) hide show
  1. package/dest/common/debug_fn_name.d.ts +1 -1
  2. package/dest/common/debug_fn_name.d.ts.map +1 -1
  3. package/dest/common/index.d.ts +0 -1
  4. package/dest/common/index.d.ts.map +1 -1
  5. package/dest/common/index.js +0 -1
  6. package/dest/private/acvm/oracle/oracle.d.ts +1 -1
  7. package/dest/private/acvm/oracle/oracle.d.ts.map +1 -1
  8. package/dest/private/acvm/oracle/oracle.js +3 -3
  9. package/dest/private/acvm/oracle/typed_oracle.d.ts +3 -3
  10. package/dest/private/acvm/oracle/typed_oracle.d.ts.map +1 -1
  11. package/dest/private/acvm/oracle/typed_oracle.js +1 -1
  12. package/dest/private/execution_data_provider.d.ts +39 -5
  13. package/dest/private/execution_data_provider.d.ts.map +1 -1
  14. package/dest/private/index.d.ts +1 -0
  15. package/dest/private/index.d.ts.map +1 -1
  16. package/dest/private/index.js +1 -0
  17. package/dest/private/message_load_oracle_inputs.d.ts.map +1 -0
  18. package/dest/private/simulator.js +1 -1
  19. package/dest/private/utility_execution_oracle.d.ts +3 -3
  20. package/dest/private/utility_execution_oracle.d.ts.map +1 -1
  21. package/dest/private/utility_execution_oracle.js +2 -6
  22. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +4 -4
  23. package/dest/public/avm/test_utils.d.ts +1 -1
  24. package/dest/public/avm/test_utils.d.ts.map +1 -1
  25. package/dest/public/avm/test_utils.js +2 -2
  26. package/dest/{common → public}/db_interfaces.d.ts +0 -38
  27. package/dest/public/db_interfaces.d.ts.map +1 -0
  28. package/dest/public/db_interfaces.js +3 -0
  29. package/dest/public/hinting_db_sources.d.ts +11 -1
  30. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  31. package/dest/public/hinting_db_sources.js +80 -13
  32. package/dest/public/index.d.ts +1 -1
  33. package/dest/public/index.d.ts.map +1 -1
  34. package/dest/public/index.js +1 -1
  35. package/dest/public/public_db_sources.d.ts +3 -3
  36. package/dest/public/public_db_sources.d.ts.map +1 -1
  37. package/dest/public/public_db_sources.js +27 -9
  38. package/dest/public/public_processor/public_processor.d.ts +1 -1
  39. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  40. package/dest/public/public_processor/public_processor.js +3 -3
  41. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  42. package/dest/public/public_tx_simulator/public_tx_context.js +6 -4
  43. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  44. package/dest/public/public_tx_simulator/public_tx_simulator.js +1 -1
  45. package/dest/public/state_manager/nullifiers.js +2 -2
  46. package/dest/public/state_manager/public_storage.d.ts +1 -1
  47. package/dest/public/state_manager/public_storage.d.ts.map +1 -1
  48. package/dest/public/state_manager/state_manager.js +4 -4
  49. package/package.json +14 -18
  50. package/src/common/debug_fn_name.ts +1 -1
  51. package/src/common/index.ts +0 -1
  52. package/src/private/acvm/oracle/oracle.ts +6 -4
  53. package/src/private/acvm/oracle/typed_oracle.ts +3 -2
  54. package/src/private/execution_data_provider.ts +49 -5
  55. package/src/private/index.ts +1 -0
  56. package/src/private/simulator.ts +2 -2
  57. package/src/private/utility_execution_oracle.ts +5 -7
  58. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +2 -2
  59. package/src/public/avm/test_utils.ts +2 -2
  60. package/src/{common → public}/db_interfaces.ts +0 -48
  61. package/src/public/hinting_db_sources.ts +121 -19
  62. package/src/public/index.ts +1 -1
  63. package/src/public/public_db_sources.ts +36 -8
  64. package/src/public/public_processor/public_processor.ts +1 -3
  65. package/src/public/public_tx_simulator/public_tx_context.ts +10 -10
  66. package/src/public/public_tx_simulator/public_tx_simulator.ts +1 -2
  67. package/src/public/state_manager/nullifiers.ts +2 -2
  68. package/src/public/state_manager/public_storage.ts +1 -1
  69. package/src/public/state_manager/state_manager.ts +4 -4
  70. package/dest/common/db_interfaces.d.ts.map +0 -1
  71. package/dest/common/db_interfaces.js +0 -1
  72. package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
  73. /package/dest/{common → private}/message_load_oracle_inputs.d.ts +0 -0
  74. /package/dest/{common → private}/message_load_oracle_inputs.js +0 -0
  75. /package/src/{common → private}/message_load_oracle_inputs.ts +0 -0
@@ -1,7 +1,8 @@
1
+ import { sha256Trunc } from '@aztec/foundation/crypto';
1
2
  import { Fr } from '@aztec/foundation/fields';
2
3
  import { createLogger } from '@aztec/foundation/log';
3
- import { AvmBytecodeCommitmentHint, AvmContractClassHint, AvmContractInstanceHint, AvmGetLeafPreimageHintNullifierTree, AvmGetLeafPreimageHintPublicDataTree, AvmGetLeafValueHint, AvmGetPreviousValueIndexHint, AvmGetSiblingPathHint, AvmSequentialInsertHintNullifierTree, AvmSequentialInsertHintPublicDataTree } from '@aztec/stdlib/avm';
4
- import { AppendOnlyTreeSnapshot, MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf, getTreeName } from '@aztec/stdlib/trees';
4
+ import { AvmAppendLeavesHint, AvmBytecodeCommitmentHint, AvmCommitCheckpointHint, AvmContractClassHint, AvmContractInstanceHint, AvmCreateCheckpointHint, AvmGetLeafPreimageHintNullifierTree, AvmGetLeafPreimageHintPublicDataTree, AvmGetLeafValueHint, AvmGetPreviousValueIndexHint, AvmGetSiblingPathHint, AvmRevertCheckpointHint, AvmSequentialInsertHintNullifierTree, AvmSequentialInsertHintPublicDataTree } from '@aztec/stdlib/avm';
5
+ import { AppendOnlyTreeSnapshot, MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf, getTreeName, merkleTreeIds } from '@aztec/stdlib/trees';
5
6
  import { strict as assert } from 'assert';
6
7
  import { PublicTreesDB } from './public_db_sources.js';
7
8
  /**
@@ -44,8 +45,17 @@ import { PublicTreesDB } from './public_db_sources.js';
44
45
  */ export class HintingPublicTreesDB extends PublicTreesDB {
45
46
  hints;
46
47
  static log = createLogger('HintingPublicTreesDB');
48
+ // This stack is only for debugging purposes.
49
+ // The top of the stack is the current checkpoint id.
50
+ // We need the stack to be non-empty and use 0 as an arbitrary initial checkpoint id.
51
+ // This is not necessarily a checkpoint that happened, but whatever tree state we start with.
52
+ checkpointStack;
53
+ nextCheckpointId;
54
+ checkpointActionCounter;
47
55
  constructor(db, hints){
48
- super(db), this.hints = hints;
56
+ super(db), this.hints = hints, this.checkpointStack = [
57
+ 0
58
+ ], this.nextCheckpointId = 1, this.checkpointActionCounter = 0;
49
59
  }
50
60
  // Getters.
51
61
  async getSiblingPath(treeId, index) {
@@ -104,7 +114,8 @@ import { PublicTreesDB } from './public_db_sources.js';
104
114
  const beforeState = await this.getHintKey(treeId);
105
115
  const result = await super.sequentialInsert(treeId, leaves);
106
116
  const afterState = await this.getHintKey(treeId);
107
- HintingPublicTreesDB.log.debug(`Evolved tree state (${getTreeName(treeId)}): ${beforeState.root}, ${beforeState.nextAvailableLeafIndex} -> ${afterState.root}, ${afterState.nextAvailableLeafIndex}.`);
117
+ HintingPublicTreesDB.log.debug('[sequentialInsert] Evolved tree state.');
118
+ HintingPublicTreesDB.logTreeChange(beforeState, afterState, treeId);
108
119
  switch(treeId){
109
120
  case MerkleTreeId.PUBLIC_DATA_TREE:
110
121
  this.hints.sequentialInsertHintsPublicDataTree.push(new AvmSequentialInsertHintPublicDataTree(beforeState, afterState, treeId, PublicDataTreeLeaf.fromBuffer(leaves[0]), {
@@ -134,11 +145,39 @@ import { PublicTreesDB } from './public_db_sources.js';
134
145
  }
135
146
  return result;
136
147
  }
148
+ async appendLeaves(treeId, leaves) {
149
+ // Use sequentialInsert for PublicDataTree and NullifierTree.
150
+ assert(treeId == MerkleTreeId.NOTE_HASH_TREE || treeId == MerkleTreeId.L1_TO_L2_MESSAGE_TREE);
151
+ // We need to process each leaf individually because we need the sibling path after insertion, to be able to constraint the insertion.
152
+ // TODO(https://github.com/AztecProtocol/aztec-packages/issues/13380): This can be changed if the world state appendLeaves returns the sibling paths.
153
+ for (const leaf of leaves){
154
+ await this.appendLeafInternal(treeId, leaf);
155
+ }
156
+ }
157
+ async createCheckpoint() {
158
+ const actionCounter = this.checkpointActionCounter++;
159
+ const oldCheckpointId = this.getCurrentCheckpointId();
160
+ const treesStateHash = await this.getTreesStateHash();
161
+ await super.createCheckpoint();
162
+ this.checkpointStack.push(this.nextCheckpointId++);
163
+ const newCheckpointId = this.getCurrentCheckpointId();
164
+ this.hints.createCheckpointHints.push(new AvmCreateCheckpointHint(actionCounter, oldCheckpointId, newCheckpointId));
165
+ HintingPublicTreesDB.log.debug(`[createCheckpoint:${actionCounter}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId} at trees state ${treesStateHash}.`);
166
+ }
167
+ async commitCheckpoint() {
168
+ const actionCounter = this.checkpointActionCounter++;
169
+ const oldCheckpointId = this.getCurrentCheckpointId();
170
+ const treesStateHash = await this.getTreesStateHash();
171
+ await super.commitCheckpoint();
172
+ this.checkpointStack.pop();
173
+ const newCheckpointId = this.getCurrentCheckpointId();
174
+ this.hints.commitCheckpointHints.push(new AvmCommitCheckpointHint(actionCounter, oldCheckpointId, newCheckpointId));
175
+ HintingPublicTreesDB.log.debug(`[commitCheckpoint:${actionCounter}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId} at trees state ${treesStateHash}.`);
176
+ }
137
177
  async revertCheckpoint() {
138
- HintingPublicTreesDB.log.debug('revertCheckpoint not hinted yet!');
139
- // TODO(fcarreiro): we probably want to hint on StateReference hash.
140
- // WARNING: is this enough? we might actually need the number of the checkpoint or similar...
141
- // We will need to keep a stack of checkpoints on the C++ side.
178
+ const actionCounter = this.checkpointActionCounter++;
179
+ const oldCheckpointId = this.getCurrentCheckpointId();
180
+ const treesStateHash = await this.getTreesStateHash();
142
181
  const beforeState = {
143
182
  [MerkleTreeId.PUBLIC_DATA_TREE]: await this.getHintKey(MerkleTreeId.PUBLIC_DATA_TREE),
144
183
  [MerkleTreeId.NULLIFIER_TREE]: await this.getHintKey(MerkleTreeId.NULLIFIER_TREE),
@@ -147,6 +186,8 @@ import { PublicTreesDB } from './public_db_sources.js';
147
186
  [MerkleTreeId.ARCHIVE]: await this.getHintKey(MerkleTreeId.ARCHIVE)
148
187
  };
149
188
  await super.revertCheckpoint();
189
+ this.checkpointStack.pop();
190
+ const newCheckpointId = this.getCurrentCheckpointId();
150
191
  const afterState = {
151
192
  [MerkleTreeId.PUBLIC_DATA_TREE]: await this.getHintKey(MerkleTreeId.PUBLIC_DATA_TREE),
152
193
  [MerkleTreeId.NULLIFIER_TREE]: await this.getHintKey(MerkleTreeId.NULLIFIER_TREE),
@@ -154,11 +195,10 @@ import { PublicTreesDB } from './public_db_sources.js';
154
195
  [MerkleTreeId.L1_TO_L2_MESSAGE_TREE]: await this.getHintKey(MerkleTreeId.L1_TO_L2_MESSAGE_TREE),
155
196
  [MerkleTreeId.ARCHIVE]: await this.getHintKey(MerkleTreeId.ARCHIVE)
156
197
  };
157
- HintingPublicTreesDB.log.debug('Evolved tree state:');
158
- for (const treeId of Object.keys(beforeState)){
159
- const id = treeId;
160
- const treeName = getTreeName(id);
161
- HintingPublicTreesDB.log.debug(`${treeName}: ${beforeState[id].root}, ${beforeState[id].nextAvailableLeafIndex} -> ${afterState[id].root}, ${afterState[id].nextAvailableLeafIndex}.`);
198
+ this.hints.revertCheckpointHints.push(AvmRevertCheckpointHint.create(actionCounter, oldCheckpointId, newCheckpointId, beforeState, afterState));
199
+ HintingPublicTreesDB.log.debug(`[revertCheckpoint:${actionCounter}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId} at trees state ${treesStateHash}.`);
200
+ for (const treeId of merkleTreeIds()){
201
+ HintingPublicTreesDB.logTreeChange(beforeState[treeId], afterState[treeId], treeId);
162
202
  }
163
203
  }
164
204
  // Private methods.
@@ -166,4 +206,31 @@ import { PublicTreesDB } from './public_db_sources.js';
166
206
  const treeInfo = await super.getTreeInfo(treeId);
167
207
  return new AppendOnlyTreeSnapshot(Fr.fromBuffer(treeInfo.root), Number(treeInfo.size));
168
208
  }
209
+ getCurrentCheckpointId() {
210
+ return this.checkpointStack[this.checkpointStack.length - 1];
211
+ }
212
+ // For logging/debugging purposes.
213
+ async getTreesStateHash() {
214
+ const stateReferenceFields = (await super.getStateReference()).toFields();
215
+ return Fr.fromBuffer(sha256Trunc(Buffer.concat(stateReferenceFields.map((field)=>field.toBuffer()))));
216
+ }
217
+ static logTreeChange(beforeState, afterState, treeId) {
218
+ const treeName = getTreeName(treeId);
219
+ HintingPublicTreesDB.log.debug(`[${treeName}] Evolved tree state: ${beforeState.root}, ${beforeState.nextAvailableLeafIndex} -> ${afterState.root}, ${afterState.nextAvailableLeafIndex}.`);
220
+ }
221
+ async appendLeafInternal(treeId, leaf) {
222
+ // Use sequentialInsert for PublicDataTree and NullifierTree.
223
+ assert(treeId == MerkleTreeId.NOTE_HASH_TREE || treeId == MerkleTreeId.L1_TO_L2_MESSAGE_TREE);
224
+ const beforeState = await this.getHintKey(treeId);
225
+ await super.appendLeaves(treeId, [
226
+ leaf
227
+ ]);
228
+ const afterState = await this.getHintKey(treeId);
229
+ HintingPublicTreesDB.log.debug('[appendLeaves] Evolved tree state.');
230
+ HintingPublicTreesDB.logTreeChange(beforeState, afterState, treeId);
231
+ this.hints.appendLeavesHints.push(new AvmAppendLeavesHint(beforeState, afterState, treeId, [
232
+ leaf
233
+ ]));
234
+ return await this.getSiblingPath(treeId, BigInt(beforeState.nextAvailableLeafIndex));
235
+ }
169
236
  }
@@ -1,4 +1,4 @@
1
- export * from '../common/db_interfaces.js';
1
+ export * from './db_interfaces.js';
2
2
  export * from './public_tx_simulator/index.js';
3
3
  export * from './public_db_sources.js';
4
4
  export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/public/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,kCAAkC,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/public/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,kCAAkC,EAAE,MAAM,YAAY,CAAC"}
@@ -1,4 +1,4 @@
1
- export * from '../common/db_interfaces.js';
1
+ export * from './db_interfaces.js';
2
2
  export * from './public_tx_simulator/index.js';
3
3
  export * from './public_db_sources.js';
4
4
  export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
@@ -8,7 +8,7 @@ import { type ContractClassPublic, type ContractDataSource, type ContractInstanc
8
8
  import type { BatchInsertionResult, IndexedTreeId, MerkleTreeLeafType, MerkleTreeWriteOperations, SequentialInsertionResult, TreeInfo } from '@aztec/stdlib/interfaces/server';
9
9
  import { MerkleTreeId } from '@aztec/stdlib/trees';
10
10
  import type { BlockHeader, StateReference, Tx } from '@aztec/stdlib/tx';
11
- import type { PublicContractsDBInterface, PublicStateDBInterface } from '../common/db_interfaces.js';
11
+ import type { PublicContractsDBInterface, PublicStateDBInterface } from './db_interfaces.js';
12
12
  /**
13
13
  * Implements the PublicContractsDBInterface using a ContractDataSource.
14
14
  * Progressively records contracts in transaction as they are processed in a block.
@@ -126,7 +126,6 @@ declare class ForwardMerkleTree implements MerkleTreeWriteOperations {
126
126
  * A class that provides access to the merkle trees, and other helper methods.
127
127
  */
128
128
  export declare class PublicTreesDB extends ForwardMerkleTree implements PublicStateDBInterface {
129
- private readonly db;
130
129
  private logger;
131
130
  constructor(db: MerkleTreeWriteOperations);
132
131
  /**
@@ -146,7 +145,8 @@ export declare class PublicTreesDB extends ForwardMerkleTree implements PublicSt
146
145
  storageWrite(contract: AztecAddress, slot: Fr, newValue: Fr): Promise<void>;
147
146
  getL1ToL2LeafValue(leafIndex: bigint): Promise<Fr | undefined>;
148
147
  getNoteHash(leafIndex: bigint): Promise<Fr | undefined>;
149
- getNullifierIndex(nullifier: Fr): Promise<bigint | undefined>;
148
+ checkNullifierExists(nullifier: Fr): Promise<boolean>;
149
+ padTree(treeId: MerkleTreeId, leavesToInsert: number): Promise<void>;
150
150
  }
151
151
  export {};
152
152
  //# sourceMappingURL=public_db_sources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/public_db_sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/public_db_sources.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { NULLIFIER_SUBTREE_HEIGHT, PUBLIC_DATA_SUBTREE_HEIGHT } from '@aztec/constants';
1
2
  import { Fr } from '@aztec/foundation/fields';
2
3
  import { createLogger } from '@aztec/foundation/log';
3
4
  import { Timer } from '@aztec/foundation/timer';
@@ -6,7 +7,7 @@ import { ContractInstanceDeployedEvent } from '@aztec/protocol-contracts/instanc
6
7
  import { PublicDataWrite } from '@aztec/stdlib/avm';
7
8
  import { computePublicBytecodeCommitment } from '@aztec/stdlib/contract';
8
9
  import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
9
- import { MerkleTreeId } from '@aztec/stdlib/trees';
10
+ import { MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
10
11
  import { TxContractCache } from './tx_contract_cache.js';
11
12
  /**
12
13
  * Implements the PublicContractsDBInterface using a ContractDataSource.
@@ -249,10 +250,9 @@ import { TxContractCache } from './tx_contract_cache.js';
249
250
  /**
250
251
  * A class that provides access to the merkle trees, and other helper methods.
251
252
  */ export class PublicTreesDB extends ForwardMerkleTree {
252
- db;
253
- logger;
253
+ logger = createLogger('simulator:public-trees-db');
254
254
  constructor(db){
255
- super(db), this.db = db, this.logger = createLogger('simulator:public-trees-db');
255
+ super(db);
256
256
  }
257
257
  /**
258
258
  * Reads a value from public storage, returning zero if none.
@@ -308,7 +308,7 @@ import { TxContractCache } from './tx_contract_cache.js';
308
308
  });
309
309
  return leafValue;
310
310
  }
311
- async getNullifierIndex(nullifier) {
311
+ async checkNullifierExists(nullifier) {
312
312
  const timer = new Timer();
313
313
  const lowLeafResult = await this.getPreviousValueIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBigInt());
314
314
  if (!lowLeafResult) {
@@ -318,12 +318,30 @@ import { TxContractCache } from './tx_contract_cache.js';
318
318
  await this.getSiblingPath(MerkleTreeId.NULLIFIER_TREE, lowLeafResult.index);
319
319
  // TODO(fcarreiro): We need this for the hints. Might move it to the hinting layer.
320
320
  await this.getLeafPreimage(MerkleTreeId.NULLIFIER_TREE, lowLeafResult.index);
321
- const index = lowLeafResult.alreadyPresent ? lowLeafResult.index : undefined;
322
- this.logger.debug(`[DB] Fetched nullifier index`, {
321
+ const exists = lowLeafResult.alreadyPresent;
322
+ this.logger.debug(`[DB] Checked nullifier exists`, {
323
323
  eventName: 'public-db-access',
324
324
  duration: timer.ms(),
325
- operation: 'get-nullifier-index'
325
+ operation: 'check-nullifier-exists'
326
326
  });
327
- return index;
327
+ return exists;
328
+ }
329
+ async padTree(treeId, leavesToInsert) {
330
+ switch(treeId){
331
+ // Indexed trees.
332
+ case MerkleTreeId.NULLIFIER_TREE:
333
+ await this.batchInsert(treeId, Array(leavesToInsert).fill(NullifierLeaf.empty().toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
334
+ break;
335
+ case MerkleTreeId.PUBLIC_DATA_TREE:
336
+ await this.batchInsert(treeId, Array(leavesToInsert).fill(PublicDataTreeLeaf.empty().toBuffer()), PUBLIC_DATA_SUBTREE_HEIGHT);
337
+ break;
338
+ // Non-indexed trees.
339
+ case MerkleTreeId.L1_TO_L2_MESSAGE_TREE:
340
+ case MerkleTreeId.NOTE_HASH_TREE:
341
+ await this.appendLeaves(treeId, Array(leavesToInsert).fill(Fr.ZERO));
342
+ break;
343
+ default:
344
+ throw new Error(`Padding not supported for tree ${treeId}`);
345
+ }
328
346
  }
329
347
  }
@@ -24,7 +24,7 @@ export declare class PublicProcessorFactory {
24
24
  * @returns A new instance of a PublicProcessor.
25
25
  */
26
26
  create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, skipFeeEnforcement: boolean): PublicProcessor;
27
- protected createPublicTxSimulator(treesDB: PublicTreesDB, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, doMerkleOperations: boolean, skipFeeEnforcement: boolean, telemetryClient: TelemetryClient): PublicTxSimulator;
27
+ protected createPublicTxSimulator(treesDB: PublicTreesDB, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, doMerkleOperations: boolean, skipFeeEnforcement: boolean): PublicTxSimulator;
28
28
  }
29
29
  /**
30
30
  * Converts Txs lifted from the P2P module into ProcessedTx objects by executing
@@ -1 +1 @@
1
- {"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":";;AAIA,OAAO,EAAE,KAAK,YAAY,EAAkC,MAAM,yBAAyB,CAAC;AAM5F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EACL,KAAK,QAAQ,EACb,eAAe,EACf,yBAAyB,EACzB,KAAK,WAAW,EAChB,EAAE,EAEF,KAAK,WAAW,EAGjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,KAAK,iBAAiB,EAA8B,MAAM,iCAAiC,CAAC;AAGrG;;GAEG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;gBAFf,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,eAAe,GAAE,eAAsC;IAGjE;;;;;;OAMG;IACI,MAAM,CACX,UAAU,EAAE,yBAAyB,EACrC,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,OAAO,GAC1B,eAAe;IAsBlB,SAAS,CAAC,uBAAuB,CAC/B,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,OAAO,EAC3B,kBAAkB,EAAE,OAAO,EAC3B,eAAe,EAAE,eAAe,GAC/B,iBAAiB;CAUrB;AASD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAG7C,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,OAAO,EAAE,aAAa;IAChC,SAAS,CAAC,WAAW,EAAE,iBAAiB;IACxC,SAAS,CAAC,iBAAiB,EAAE,iBAAiB;IAC9C,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,GAAG;IARb,OAAO,CAAC,OAAO,CAAyB;gBAE5B,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,iBAAiB,EAC9B,iBAAiB,EAAE,iBAAiB,EACtC,YAAY,EAAE,YAAY,EAClC,eAAe,GAAE,eAAsC,EAC/C,GAAG,yCAA6C;IAK1D,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;;;OAMG;IACU,OAAO,CAClB,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EACrC,MAAM,GAAE;QACN,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,GAAG,CAAC;QAClB,QAAQ,CAAC,EAAE,IAAI,CAAC;KACZ,EACN,SAAS,GAAE;QACT,mBAAmB,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;QACtC,cAAc,CAAC,EAAE;YAAE,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;SAAE,CAAC;KAC/D,GACL,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAoJtD,SAAS;YA2BT,gCAAgC;IAyC9C,kFAAkF;YACpE,uBAAuB;IA+BrC;;;;OAIG;YACW,4BAA4B;YAwB5B,oBAAoB;YA6BpB,wBAAwB;CA8CvC"}
1
+ {"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":";;AAIA,OAAO,EAAE,KAAK,YAAY,EAAkC,MAAM,yBAAyB,CAAC;AAM5F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EACL,KAAK,QAAQ,EACb,eAAe,EACf,yBAAyB,EACzB,KAAK,WAAW,EAChB,EAAE,EAEF,KAAK,WAAW,EAGjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,KAAK,iBAAiB,EAA8B,MAAM,iCAAiC,CAAC;AAGrG;;GAEG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;gBAFf,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,eAAe,GAAE,eAAsC;IAGjE;;;;;;OAMG;IACI,MAAM,CACX,UAAU,EAAE,yBAAyB,EACrC,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,OAAO,GAC1B,eAAe;IAqBlB,SAAS,CAAC,uBAAuB,CAC/B,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,OAAO,EAC3B,kBAAkB,EAAE,OAAO,GAC1B,iBAAiB;CAUrB;AASD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAG7C,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,OAAO,EAAE,aAAa;IAChC,SAAS,CAAC,WAAW,EAAE,iBAAiB;IACxC,SAAS,CAAC,iBAAiB,EAAE,iBAAiB;IAC9C,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,GAAG;IARb,OAAO,CAAC,OAAO,CAAyB;gBAE5B,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,iBAAiB,EAC9B,iBAAiB,EAAE,iBAAiB,EACtC,YAAY,EAAE,YAAY,EAClC,eAAe,GAAE,eAAsC,EAC/C,GAAG,yCAA6C;IAK1D,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;;;OAMG;IACU,OAAO,CAClB,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EACrC,MAAM,GAAE;QACN,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,GAAG,CAAC;QAClB,QAAQ,CAAC,EAAE,IAAI,CAAC;KACZ,EACN,SAAS,GAAE;QACT,mBAAmB,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;QACtC,cAAc,CAAC,EAAE;YAAE,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;SAAE,CAAC;KAC/D,GACL,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAoJtD,SAAS;YA2BT,gCAAgC;IAyC9C,kFAAkF;YACpE,uBAAuB;IA+BrC;;;;OAIG;YACW,4BAA4B;YAwB5B,oBAAoB;YA6BpB,wBAAwB;CA8CvC"}
@@ -41,11 +41,11 @@ import { PublicProcessorMetrics } from './public_processor_metrics.js';
41
41
  */ create(merkleTree, globalVariables, skipFeeEnforcement) {
42
42
  const treesDB = new PublicTreesDB(merkleTree);
43
43
  const contractsDB = new PublicContractsDB(this.contractDataSource);
44
- const publicTxSimulator = this.createPublicTxSimulator(treesDB, contractsDB, globalVariables, /*doMerkleOperations=*/ true, skipFeeEnforcement, this.telemetryClient);
44
+ const publicTxSimulator = this.createPublicTxSimulator(treesDB, contractsDB, globalVariables, /*doMerkleOperations=*/ true, skipFeeEnforcement);
45
45
  return new PublicProcessor(globalVariables, treesDB, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient);
46
46
  }
47
- createPublicTxSimulator(treesDB, contractsDB, globalVariables, doMerkleOperations, skipFeeEnforcement, telemetryClient) {
48
- return new TelemetryPublicTxSimulator(treesDB, contractsDB, globalVariables, doMerkleOperations, skipFeeEnforcement, telemetryClient);
47
+ createPublicTxSimulator(treesDB, contractsDB, globalVariables, doMerkleOperations, skipFeeEnforcement) {
48
+ return new TelemetryPublicTxSimulator(treesDB, contractsDB, globalVariables, doMerkleOperations, skipFeeEnforcement, this.telemetryClient);
49
49
  }
50
50
  }
51
51
  class PublicProcessorTimeoutError extends Error {
@@ -1 +1 @@
1
- {"version":3,"file":"public_tx_context.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/public_tx_context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public_tx_context.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/public_tx_context.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { MAX_L2_GAS_PER_TX_PUBLIC_PORTION, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NULLIFIER_SUBTREE_HEIGHT } from '@aztec/constants';
1
+ import { MAX_L2_GAS_PER_TX_PUBLIC_PORTION, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX } from '@aztec/constants';
2
2
  import { padArrayEnd } from '@aztec/foundation/collection';
3
3
  import { Fr } from '@aztec/foundation/fields';
4
4
  import { createLogger } from '@aztec/foundation/log';
@@ -67,9 +67,11 @@ import { getCallRequestsWithCalldataByPhase } from '../utils.js';
67
67
  const trace = new SideEffectTrace(/*startSideEffectCounter=*/ 0, previousAccumulatedDataArrayLengths);
68
68
  const firstNullifier = nonRevertibleAccumulatedDataFromPrivate.nullifiers[0];
69
69
  // We wrap the DB to collect AVM hints.
70
- const hints = new AvmExecutionHints(AvmTxHint.fromTx(tx));
70
+ const hints = new AvmExecutionHints(await AvmTxHint.fromTx(tx));
71
71
  const hintingContractsDB = new HintingPublicContractsDB(contractsDB, hints);
72
72
  const hintingTreesDB = new HintingPublicTreesDB(treesDB, hints);
73
+ const startStateReference = await treesDB.getStateReference();
74
+ hints.startingTreeRoots = new TreeSnapshots(startStateReference.l1ToL2MessageTree, startStateReference.partial.noteHashTree, startStateReference.partial.nullifierTree, startStateReference.partial.publicDataTree);
73
75
  // Transaction level state manager that will be forked for revertible phases.
74
76
  const txStateManager = PublicPersistableStateManager.create(hintingTreesDB, hintingContractsDB, trace, doMerkleOperations, firstNullifier, globalVariables.blockNumber.toNumber());
75
77
  const gasSettings = tx.data.constants.txContext.gasSettings;
@@ -242,9 +244,9 @@ import { getCallRequestsWithCalldataByPhase } from '../utils.js';
242
244
  }
243
245
  avmCircuitPublicInputs.accumulatedData.publicDataWrites = padArrayEnd(Array.from(squashedPublicDataWrites.entries()).map(([slot, value])=>new PublicDataWrite(new Fr(slot), value)), PublicDataWrite.empty(), MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
244
246
  const numNoteHashesToPad = MAX_NOTE_HASHES_PER_TX - countAccumulatedItems(avmCircuitPublicInputs.accumulatedData.noteHashes);
245
- await stateManager.deprecatedGetTreesForPIGeneration().appendLeaves(MerkleTreeId.NOTE_HASH_TREE, padArrayEnd([], Fr.ZERO, numNoteHashesToPad));
247
+ await stateManager.deprecatedGetTreesForPIGeneration().padTree(MerkleTreeId.NOTE_HASH_TREE, numNoteHashesToPad);
246
248
  const numNullifiersToPad = MAX_NULLIFIERS_PER_TX - countAccumulatedItems(avmCircuitPublicInputs.accumulatedData.nullifiers);
247
- await stateManager.deprecatedGetTreesForPIGeneration().batchInsert(MerkleTreeId.NULLIFIER_TREE, padArrayEnd([], Fr.ZERO, numNullifiersToPad).map((nullifier)=>nullifier.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
249
+ await stateManager.deprecatedGetTreesForPIGeneration().padTree(MerkleTreeId.NULLIFIER_TREE, numNullifiersToPad);
248
250
  const paddedState = await stateManager.deprecatedGetTreesForPIGeneration().getStateReference();
249
251
  avmCircuitPublicInputs.endTreeSnapshots = new TreeSnapshots(paddedState.l1ToL2MessageTree, paddedState.partial.noteHashTree, paddedState.partial.nullifierTree, paddedState.partial.publicDataTree);
250
252
  return avmCircuitPublicInputs;
@@ -1 +1 @@
1
- {"version":3,"file":"public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EACL,KAAK,eAAe,EACpB,yBAAyB,EACzB,6BAA6B,EAC7B,EAAE,EACF,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEhF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,yBAAyB,EAAE,CAAC;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC,CAAC;AAEF,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,OAAO;IACf,SAAS,CAAC,WAAW,EAAE,iBAAiB;IACxC,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,kBAAkB;IAP5B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;gBAGZ,OAAO,EAAE,aAAa,EACpB,WAAW,EAAE,iBAAiB,EAChC,eAAe,EAAE,eAAe,EAChC,kBAAkB,GAAE,OAAe,EACnC,kBAAkB,GAAE,OAAe;IAK7C;;;;OAIG;IACU,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;cA6EtC,aAAa,CAAC,EAAE,EAAE,EAAE;IAIpC;;;;OAIG;YACW,kBAAkB;IAIhC;;;;OAIG;YACW,qBAAqB;IAkBnC;;;;OAIG;YACW,qBAAqB;IAoBnC;;;;;OAKG;cACa,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAqCzG;;;;;;OAMG;cACa,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,6BAA6B,GACzC,OAAO,CAAC,sBAAsB,CAAC;IA+BlC;;;;;;;;;;;;OAYG;cACa,4BAA4B,CAC1C,YAAY,EAAE,6BAA6B,EAC3C,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,6BAA6B,EACpD,YAAY,EAAE,GAAG,EACjB,cAAc,EAAE,EAAE,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,sBAAsB,CAAC;IAsBlC;;OAEG;cACa,+BAA+B,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE;IAuBhF;;;OAGG;cACa,4BAA4B,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,GAAgB,OAAO,CAAC,OAAO,CAAC;YAoC/F,MAAM;IAgCpB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAStC"}
1
+ {"version":3,"file":"public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/public_tx_simulator.ts"],"names":[],"mappings":"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"}
@@ -294,7 +294,7 @@ export class PublicTxSimulator {
294
294
  */ static generateProvingRequest(publicInputs, hints) {
295
295
  return {
296
296
  type: ProvingRequestType.PUBLIC_VM,
297
- inputs: new AvmCircuitInputs('public_dispatch', [], hints, publicInputs)
297
+ inputs: new AvmCircuitInputs(hints, publicInputs)
298
298
  };
299
299
  }
300
300
  }
@@ -53,8 +53,8 @@
53
53
  // `${MerkleTreeId[MerkleTreeId.NULLIFIER_TREE]} low leaf index should always be found (even if target leaf does not exist)`,
54
54
  //);
55
55
  //existsInTree = leafOrLowLeafIndex.alreadyPresent;
56
- const leafIndex = await this.hostNullifiers.getNullifierIndex(siloedNullifier);
57
- existsInTree = leafIndex !== undefined;
56
+ const exists = await this.hostNullifiers.checkNullifierExists(siloedNullifier);
57
+ existsInTree = exists;
58
58
  }
59
59
  const exists = cacheHit || existsInTree;
60
60
  return Promise.resolve({
@@ -1,6 +1,6 @@
1
1
  import { Fr } from '@aztec/foundation/fields';
2
2
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
- import type { PublicStateDBInterface } from '../../common/db_interfaces.js';
3
+ import type { PublicStateDBInterface } from '../db_interfaces.js';
4
4
  type PublicStorageReadResult = {
5
5
  value: Fr;
6
6
  cached: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"public_storage.d.ts","sourceRoot":"","sources":["../../../src/public/state_manager/public_storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,KAAK,uBAAuB,GAAG;IAC7B,KAAK,EAAE,EAAE,CAAC;IACV,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IAKtB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAP1B,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;;IAGzC,+DAA+D;IAC9C,iBAAiB,EAAE,sBAAsB;IAC1D,qDAAqD;IACpC,MAAM,CAAC,2BAAe;IAKzC;;OAEG;IACI,IAAI;IAIX;;;;;;;OAOG;IACI,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS;IAWhF;;;;;;;;;;OAUG;IACU,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmB5F;;;;;;OAMG;IACI,KAAK,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAI/D;;;;OAIG;IACI,cAAc,CAAC,qBAAqB,EAAE,aAAa;CAG3D"}
1
+ {"version":3,"file":"public_storage.d.ts","sourceRoot":"","sources":["../../../src/public/state_manager/public_storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,KAAK,uBAAuB,GAAG;IAC7B,KAAK,EAAE,EAAE,CAAC;IACV,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IAKtB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAP1B,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;;IAGzC,+DAA+D;IAC9C,iBAAiB,EAAE,sBAAsB;IAC1D,qDAAqD;IACpC,MAAM,CAAC,2BAAe;IAKzC;;OAEG;IACI,IAAI;IAIX;;;;;;;OAOG;IACI,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS;IAWhF;;;;;;;;;;OAUG;IACU,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmB5F;;;;;;OAMG;IACI,KAAK,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAI/D;;;;OAIG;IACI,cAAc,CAAC,qBAAqB,EAAE,aAAa;CAG3D"}
@@ -179,7 +179,7 @@ import { PublicStorage } from './public_storage.js';
179
179
  this.log.trace(`Checking existence of nullifier (address=${contractAddress}, nullifier=${nullifier})`);
180
180
  const siloedNullifier = await siloNullifier(contractAddress, nullifier);
181
181
  if (this.doMerkleOperations) {
182
- const exists = await this.treesDB.getNullifierIndex(siloedNullifier) !== undefined;
182
+ const exists = await this.treesDB.checkNullifierExists(siloedNullifier);
183
183
  this.log.trace(`Checked siloed nullifier ${siloedNullifier} (exists=${exists})`);
184
184
  return Promise.resolve(exists);
185
185
  } else {
@@ -204,9 +204,9 @@ import { PublicStorage } from './public_storage.js';
204
204
  */ async writeSiloedNullifier(siloedNullifier) {
205
205
  this.log.trace(`Inserting siloed nullifier=${siloedNullifier}`);
206
206
  if (this.doMerkleOperations) {
207
- const index = await this.treesDB.getNullifierIndex(siloedNullifier);
208
- if (index !== undefined) {
209
- this.log.verbose(`Siloed nullifier ${siloedNullifier} already present in tree at index ${index}!`);
207
+ const exists = await this.treesDB.checkNullifierExists(siloedNullifier);
208
+ if (exists) {
209
+ this.log.verbose(`Siloed nullifier ${siloedNullifier} already present in tree!`);
210
210
  throw new NullifierCollisionError(`Siloed nullifier ${siloedNullifier} already exists in parent cache or host.`);
211
211
  } else {
212
212
  await this.treesDB.sequentialInsert(MerkleTreeId.NULLIFIER_TREE, [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/simulator",
3
- "version": "0.84.0",
3
+ "version": "0.85.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./server": "./dest/server.js",
@@ -60,32 +60,28 @@
60
60
  ]
61
61
  },
62
62
  "dependencies": {
63
- "@aztec/constants": "0.84.0",
64
- "@aztec/foundation": "0.84.0",
65
- "@aztec/noir-acvm_js": "0.84.0",
66
- "@aztec/noir-noirc_abi": "0.84.0",
67
- "@aztec/noir-protocol-circuits-types": "0.84.0",
68
- "@aztec/noir-types": "0.84.0",
69
- "@aztec/protocol-contracts": "0.84.0",
70
- "@aztec/stdlib": "0.84.0",
71
- "@aztec/telemetry-client": "0.84.0",
72
- "@aztec/world-state": "0.84.0",
73
- "levelup": "^5.1.1",
63
+ "@aztec/constants": "0.85.0",
64
+ "@aztec/foundation": "0.85.0",
65
+ "@aztec/noir-acvm_js": "0.85.0",
66
+ "@aztec/noir-noirc_abi": "0.85.0",
67
+ "@aztec/noir-protocol-circuits-types": "0.85.0",
68
+ "@aztec/noir-types": "0.85.0",
69
+ "@aztec/protocol-contracts": "0.85.0",
70
+ "@aztec/stdlib": "0.85.0",
71
+ "@aztec/telemetry-client": "0.85.0",
72
+ "@aztec/world-state": "0.85.0",
74
73
  "lodash.clonedeep": "^4.5.0",
75
74
  "lodash.merge": "^4.6.2",
76
- "memdown": "^6.1.1",
77
75
  "tslib": "^2.4.0"
78
76
  },
79
77
  "devDependencies": {
80
- "@aztec/kv-store": "0.84.0",
81
- "@aztec/merkle-tree": "0.84.0",
82
- "@aztec/noir-contracts.js": "0.84.0",
78
+ "@aztec/kv-store": "0.85.0",
79
+ "@aztec/merkle-tree": "0.85.0",
80
+ "@aztec/noir-contracts.js": "0.85.0",
83
81
  "@jest/globals": "^29.5.0",
84
82
  "@types/jest": "^29.5.0",
85
- "@types/levelup": "^5.1.3",
86
83
  "@types/lodash.clonedeep": "^4.5.7",
87
84
  "@types/lodash.merge": "^4.6.9",
88
- "@types/memdown": "^3.0.2",
89
85
  "@types/node": "^18.7.23",
90
86
  "jest": "^29.5.0",
91
87
  "jest-mock-extended": "^3.0.4",
@@ -2,7 +2,7 @@ import type { Fr } from '@aztec/foundation/fields';
2
2
  import { FunctionSelector } from '@aztec/stdlib/abi';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
 
5
- import type { PublicContractsDBInterface } from './db_interfaces.js';
5
+ import type { PublicContractsDBInterface } from '../public/db_interfaces.js';
6
6
 
7
7
  export async function getPublicFunctionDebugName(
8
8
  db: PublicContractsDBInterface,
@@ -1,3 +1,2 @@
1
1
  export * from './errors.js';
2
2
  export * from './stats/index.js';
3
- export * from './message_load_oracle_inputs.js';
@@ -398,7 +398,7 @@ export class Oracle {
398
398
  fromBoundedVec(content, contentLength),
399
399
  Fr.fromString(noteHash),
400
400
  Fr.fromString(nullifier),
401
- Fr.fromString(txHash),
401
+ TxHash.fromString(txHash),
402
402
  AztecAddress.fromString(recipient),
403
403
  );
404
404
 
@@ -496,18 +496,20 @@ export class Oracle {
496
496
  [contractAddress]: ACVMField[],
497
497
  [recipient]: ACVMField[],
498
498
  [eventSelector]: ACVMField[],
499
- logContentBVecStorage: ACVMField[],
500
- [logContentLength]: ACVMField[],
499
+ msgContentBVecStorage: ACVMField[],
500
+ [msgContentLength]: ACVMField[],
501
501
  [txHash]: ACVMField[],
502
502
  [logIndexInTx]: ACVMField[],
503
+ [txIndexInBlock]: ACVMField[],
503
504
  ) {
504
505
  await this.typedOracle.storePrivateEventLog(
505
506
  AztecAddress.fromField(Fr.fromString(contractAddress)),
506
507
  AztecAddress.fromField(Fr.fromString(recipient)),
507
508
  EventSelector.fromField(Fr.fromString(eventSelector)),
508
- fromBoundedVec(logContentBVecStorage, logContentLength),
509
+ fromBoundedVec(msgContentBVecStorage, msgContentLength),
509
510
  new TxHash(Fr.fromString(txHash)),
510
511
  Fr.fromString(logIndexInTx).toNumber(),
512
+ Fr.fromString(txIndexInBlock).toNumber(),
511
513
  );
512
514
  return [];
513
515
  }
@@ -9,7 +9,7 @@ import type { Note, NoteStatus } from '@aztec/stdlib/note';
9
9
  import { type MerkleTreeId, type NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
10
10
  import type { BlockHeader, TxHash } from '@aztec/stdlib/tx';
11
11
 
12
- import type { MessageLoadOracleInputs } from '../../../common/message_load_oracle_inputs.js';
12
+ import type { MessageLoadOracleInputs } from '../../message_load_oracle_inputs.js';
13
13
 
14
14
  /**
15
15
  * Information about a note needed during execution.
@@ -225,7 +225,7 @@ export abstract class TypedOracle {
225
225
  _content: Fr[],
226
226
  _noteHash: Fr,
227
227
  _nullifier: Fr,
228
- _txHash: Fr,
228
+ _txHash: TxHash,
229
229
  _recipient: AztecAddress,
230
230
  ): Promise<void> {
231
231
  return Promise.reject(new OracleMethodNotAvailableError('deliverNote'));
@@ -266,6 +266,7 @@ export abstract class TypedOracle {
266
266
  _logContent: Fr[],
267
267
  _txHash: TxHash,
268
268
  _logIndexInTx: number,
269
+ _txIndexInBlock: number,
269
270
  ): Promise<void> {
270
271
  return Promise.reject(new OracleMethodNotAvailableError('storePrivateEventLog'));
271
272
  }