@aztec/sequencer-client 0.7.0 → 0.7.3

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.
@@ -115,7 +115,10 @@ export class Sequencer {
115
115
  this.log(`Dropping failed txs ${(await Tx.getHashes(failedTxData)).join(', ')}`);
116
116
  await this.p2pClient.deleteTxs(await Tx.getHashes(failedTxData));
117
117
  }
118
- if (processedTxs.length === 0) {
118
+ // Only accept processed transactions that are not double-spends
119
+ // public functions emitting nullifiers would pass earlier check but fail here
120
+ const processedValidTxs = await this.takeValidProcessedTxs(processedTxs);
121
+ if (processedValidTxs.length === 0) {
119
122
  this.log('No txs processed correctly to build block. Exiting');
120
123
  return;
121
124
  }
@@ -124,13 +127,13 @@ export class Sequencer {
124
127
  const l1ToL2Messages = await this.getPendingL1ToL2Messages();
125
128
  this.log('Successfully retrieved L1 to L2 messages from contract');
126
129
  // Build the new block by running the rollup circuits
127
- this.log(`Assembling block with txs ${processedTxs.map(tx => tx.hash).join(', ')}`);
130
+ this.log(`Assembling block with txs ${processedValidTxs.map(tx => tx.hash).join(', ')}`);
128
131
  const emptyTx = await processor.makeEmptyProcessedTx();
129
- const block = await this.buildBlock(processedTxs, l1ToL2Messages, emptyTx, newGlobalVariables);
132
+ const block = await this.buildBlock(processedValidTxs, l1ToL2Messages, emptyTx, newGlobalVariables);
130
133
  this.log(`Assembled block ${block.number}`);
131
134
  await this.publishExtendedContractData(validTxs, block);
132
135
  await this.publishL2Block(block);
133
- this.log.info(`Submitted rollup block ${block.number} with ${processedTxs.length} transactions`);
136
+ this.log.info(`Submitted rollup block ${block.number} with ${processedValidTxs.length} transactions`);
134
137
  }
135
138
  catch (err) {
136
139
  this.log.error(err);
@@ -205,6 +208,12 @@ export class Sequencer {
205
208
  }
206
209
  return validTxs;
207
210
  }
211
+ async takeValidProcessedTxs(txs) {
212
+ const isDoubleSpends = await Promise.all(txs.map(async (tx) => await this.isTxDoubleSpend(tx)));
213
+ const doubleSpends = txs.filter((tx, index) => isDoubleSpends[index]).map(tx => tx.hash);
214
+ await this.p2pClient.deleteTxs(doubleSpends);
215
+ return txs.filter((tx, index) => !isDoubleSpends[index]);
216
+ }
208
217
  /**
209
218
  * Returns whether the previous block sent has been mined, and all dependencies have caught up with it.
210
219
  * @returns Boolean indicating if our dependencies are synced to the latest block.
@@ -294,4 +303,4 @@ export var SequencerState;
294
303
  */
295
304
  SequencerState[SequencerState["STOPPED"] = 5] = "STOPPED";
296
305
  })(SequencerState || (SequencerState = {}));
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcXVlbmNlci9zZXF1ZW5jZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbkUsT0FBTyxFQUErQyxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzdGLE9BQU8sS0FBSyxNQUFNLGNBQWMsQ0FBQztBQUtqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSzdDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFVcEIsWUFDVSxTQUFzQixFQUN0QixjQUFxQyxFQUNyQyxTQUFjLEVBQ2QsVUFBa0MsRUFDbEMsWUFBMEIsRUFDMUIsYUFBNEIsRUFDNUIsbUJBQXdDLEVBQ3hDLHNCQUE4QyxFQUN0RCxNQUF1QixFQUNmLE1BQU0saUJBQWlCLENBQUMsaUJBQWlCLENBQUM7UUFUMUMsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBSztRQUNkLGVBQVUsR0FBVixVQUFVLENBQXdCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUU5QyxRQUFHLEdBQUgsR0FBRyxDQUF1QztRQWpCNUMsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsbUJBQWMsR0FBRyxD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
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcXVlbmNlci9zZXF1ZW5jZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbkUsT0FBTyxFQUErQyxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzdGLE9BQU8sS0FBSyxNQUFNLGNBQWMsQ0FBQztBQUtqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSzdDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFVcEIsWUFDVSxTQUFzQixFQUN0QixjQUFxQyxFQUNyQyxTQUFjLEVBQ2QsVUFBa0MsRUFDbEMsWUFBMEIsRUFDMUIsYUFBNEIsRUFDNUIsbUJBQXdDLEVBQ3hDLHNCQUE4QyxFQUN0RCxNQUF1QixFQUNmLE1BQU0saUJBQWlCLENBQUMsaUJBQWlCLENBQUM7UUFUMUMsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBSztRQUNkLGVBQVUsR0FBVixVQUFVLENBQXdCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUU5QyxRQUFHLEdBQUgsR0FBRyxDQUF1QztRQWpCNUMsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsbUJBQWMsR0FBRyxD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
@@ -1,5 +1,5 @@
1
- import { CommitmentDataOracleInputs, CommitmentsDB, MessageLoadOracleInputs, PublicExecutor } from '@aztec/acir-simulator';
2
- import { AztecAddress, Fr, HistoricBlockData } from '@aztec/circuits.js';
1
+ import { CommitmentsDB, MessageLoadOracleInputs, PublicExecutor } from '@aztec/acir-simulator';
2
+ import { Fr, HistoricBlockData } from '@aztec/circuits.js';
3
3
  import { ContractDataSource, L1ToL2MessageSource } from '@aztec/types';
4
4
  import { MerkleTreeOperations } from '@aztec/world-state';
5
5
  /**
@@ -17,6 +17,6 @@ export declare class WorldStateDB implements CommitmentsDB {
17
17
  private l1ToL2MessageSource;
18
18
  constructor(db: MerkleTreeOperations, l1ToL2MessageSource: L1ToL2MessageSource);
19
19
  getL1ToL2Message(messageKey: Fr): Promise<MessageLoadOracleInputs>;
20
- getCommitmentOracle(address: AztecAddress, innerCommitment: Fr): Promise<CommitmentDataOracleInputs>;
20
+ getCommitmentIndex(commitment: Fr): Promise<bigint | undefined>;
21
21
  }
22
22
  //# sourceMappingURL=public_executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public_executor.d.ts","sourceRoot":"","sources":["../../src/simulator/public_executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,uBAAuB,EAEvB,cAAc,EAEf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAA4B,EAAE,EAAoB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAErH,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAgB,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAkC,MAAM,oBAAoB,CAAC;AAE1F;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,oBAAoB,EAChC,kBAAkB,EAAE,kBAAkB,EACtC,mBAAmB,EAAE,mBAAmB,EACxC,SAAS,EAAE,iBAAiB,kBAQ7B;AAoDD;;GAEG;AACH,qBAAa,YAAa,YAAW,aAAa;IACpC,OAAO,CAAC,EAAE;IAAwB,OAAO,CAAC,mBAAmB;gBAArD,EAAE,EAAE,oBAAoB,EAAU,mBAAmB,EAAE,mBAAmB;IAEjF,gBAAgB,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAalE,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC;CAelH"}
1
+ {"version":3,"file":"public_executor.d.ts","sourceRoot":"","sources":["../../src/simulator/public_executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,uBAAuB,EAEvB,cAAc,EAEf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAA0C,EAAE,EAAoB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACrH,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAgB,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAkC,MAAM,oBAAoB,CAAC;AAE1F;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,oBAAoB,EAChC,kBAAkB,EAAE,kBAAkB,EACtC,mBAAmB,EAAE,mBAAmB,EACxC,SAAS,EAAE,iBAAiB,kBAQ7B;AAoDD;;GAEG;AACH,qBAAa,YAAa,YAAW,aAAa;IACpC,OAAO,CAAC,EAAE;IAAwB,OAAO,CAAC,mBAAmB;gBAArD,EAAE,EAAE,oBAAoB,EAAU,mBAAmB,EAAE,mBAAmB;IAEjF,gBAAgB,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAalE,kBAAkB,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAG7E"}
@@ -1,6 +1,5 @@
1
1
  import { PublicExecutor, } from '@aztec/acir-simulator';
2
2
  import { CircuitsWasm, Fr } from '@aztec/circuits.js';
3
- import { siloCommitment } from '@aztec/circuits.js/abis';
4
3
  import { MerkleTreeId } from '@aztec/types';
5
4
  import { computePublicDataTreeLeafIndex } from '@aztec/world-state';
6
5
  /**
@@ -81,19 +80,8 @@ export class WorldStateDB {
81
80
  index,
82
81
  };
83
82
  }
84
- async getCommitmentOracle(address, innerCommitment) {
85
- const siloedCommitment = siloCommitment(await CircuitsWasm.get(), address, innerCommitment);
86
- // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386): shoild be
87
- // unique commitment that exists in tree (should be siloed and then made unique via
88
- // nonce). Once public kernel or base rollup circuit injects nonces, this can be updated
89
- // to use uniqueSiloedCommitment.
90
- const index = (await this.db.findLeafIndex(MerkleTreeId.PRIVATE_DATA_TREE, siloedCommitment.toBuffer()));
91
- const siblingPath = await this.db.getSiblingPath(MerkleTreeId.PRIVATE_DATA_TREE, index);
92
- return {
93
- commitment: siloedCommitment,
94
- siblingPath: siblingPath.toFieldArray(),
95
- index,
96
- };
83
+ async getCommitmentIndex(commitment) {
84
+ return await this.db.findLeafIndex(MerkleTreeId.PRIVATE_DATA_TREE, commitment.toBuffer());
97
85
  }
98
86
  }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbXVsYXRvci9wdWJsaWNfZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtMLGNBQWMsR0FFZixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBZ0IsWUFBWSxFQUFjLEVBQUUsRUFBdUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNySCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUEyQyxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDckYsT0FBTyxFQUF3Qiw4QkFBOEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTFGOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixVQUFnQyxFQUNoQyxrQkFBc0MsRUFDdEMsbUJBQXdDLEVBQ3hDLFNBQTRCO0lBRTVCLE9BQU8sSUFBSSxjQUFjLENBQ3ZCLElBQUksa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQ2xDLElBQUksMkJBQTJCLENBQUMsa0JBQWtCLENBQUMsRUFDbkQsSUFBSSxZQUFZLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLEVBQ2pELFNBQVMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSwyQkFBMkI7SUFDL0IsWUFBb0IsRUFBc0I7UUFBdEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7SUFBRyxDQUFDO0lBQzlDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBcUIsRUFBRSxRQUEwQjtRQUNqRSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFxQixFQUFFLFFBQTBCO1FBQ25FLE9BQU8sQ0FBQyxN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
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbXVsYXRvci9wdWJsaWNfZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLGNBQWMsR0FFZixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBZ0IsWUFBWSxFQUFjLEVBQUUsRUFBdUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNySCxPQUFPLEVBQTJDLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRixPQUFPLEVBQXdCLDhCQUE4QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUY7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLFVBQWdDLEVBQ2hDLGtCQUFzQyxFQUN0QyxtQkFBd0MsRUFDeEMsU0FBNEI7SUFFNUIsT0FBTyxJQUFJLGNBQWMsQ0FDdkIsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsRUFDbEMsSUFBSSwyQkFBMkIsQ0FBQyxrQkFBa0IsQ0FBQyxFQUNuRCxJQUFJLFlBQVksQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsRUFDakQsU0FBUyxDQUNWLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLDJCQUEyQjtJQUMvQixZQUFvQixFQUFzQjtRQUF0QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtJQUFHLENBQUM7SUFDOUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFxQixFQUFFLFFBQTBCO1FBQ2pFLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQ3hFLENBQUM7SUFDRCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQXFCLEVBQUUsUUFBMEI7UUFDbkUsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVB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
@@ -4,7 +4,6 @@ import { RollupSimulator } from './index.js';
4
4
  * Implements the rollup circuit simulator using the wasm circuits implementation.
5
5
  */
6
6
  export declare class WasmRollupCircuitSimulator implements RollupSimulator {
7
- private rollupWasmWrapper;
8
7
  private wasm;
9
8
  constructor(wasm: CircuitsWasm);
10
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/simulator/rollup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAEhB,YAAY,EACZ,iBAAiB,EAEjB,gBAAgB,EAChB,sBAAsB,EAGvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,qBAAa,0BAA2B,YAAW,eAAe;IAChE,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,IAAI,CAAe;gBAEf,IAAI,EAAE,YAAY;IAK9B;;;OAGG;WACiB,GAAG;IAIvB;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAGlF;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IASpF;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAQ5E"}
1
+ {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/simulator/rollup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAEhB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EAIvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,qBAAa,0BAA2B,YAAW,eAAe;IAChE,OAAO,CAAC,IAAI,CAAe;gBAEf,IAAI,EAAE,YAAY;IAI9B;;;OAGG;WACiB,GAAG;IAIvB;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAQlF;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IASpF;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAQ5E"}
@@ -1,10 +1,9 @@
1
- import { CircuitError, CircuitsWasm, RollupWasmWrapper, mergeRollupSim, rootRollupSim, } from '@aztec/circuits.js';
1
+ import { CircuitError, CircuitsWasm, baseRollupSim, mergeRollupSim, rootRollupSim, } from '@aztec/circuits.js';
2
2
  /**
3
3
  * Implements the rollup circuit simulator using the wasm circuits implementation.
4
4
  */
5
5
  export class WasmRollupCircuitSimulator {
6
6
  constructor(wasm) {
7
- this.rollupWasmWrapper = new RollupWasmWrapper(wasm);
8
7
  this.wasm = wasm;
9
8
  }
10
9
  /**
@@ -20,7 +19,11 @@ export class WasmRollupCircuitSimulator {
20
19
  * @returns The public inputs as outputs of the simulation.
21
20
  */
22
21
  baseRollupCircuit(input) {
23
- return Promise.resolve(this.rollupWasmWrapper.simulateBaseRollup(input));
22
+ const result = baseRollupSim(this.wasm, input);
23
+ if (result instanceof CircuitError) {
24
+ throw new CircuitError(result.code, result.message);
25
+ }
26
+ return Promise.resolve(result);
24
27
  }
25
28
  /**
26
29
  * Simulates the merge rollup circuit from its inputs.
@@ -47,4 +50,4 @@ export class WasmRollupCircuitSimulator {
47
50
  return Promise.resolve(result);
48
51
  }
49
52
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbXVsYXRvci9yb2xsdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFlBQVksRUFDWixZQUFZLEVBRVosaUJBQWlCLEVBR2pCLGNBQWMsRUFDZCxhQUFhLEdBQ2QsTUFBTSxvQkFBb0IsQ0FBQztBQUk1Qjs7R0FFRztBQUNILE1BQU0sT0FBTywwQkFBMEI7SUFJckMsWUFBWSxJQUFrQjtRQUM1QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHO1FBQ3JCLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLEtBQXVCO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLEtBQXdCO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hELElBQUksTUFBTSxZQUFZLFlBQVksRUFBRTtZQUNsQyxNQUFNLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsS0FBdUI7UUFDdkMsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0MsSUFBSSxNQUFNLFlBQVksWUFBWSxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckQ7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGIn0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbXVsYXRvci9yb2xsdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFlBQVksRUFDWixZQUFZLEVBSVosYUFBYSxFQUNiLGNBQWMsRUFDZCxhQUFhLEdBQ2QsTUFBTSxvQkFBb0IsQ0FBQztBQUk1Qjs7R0FFRztBQUNILE1BQU0sT0FBTywwQkFBMEI7SUFHckMsWUFBWSxJQUFrQjtRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHO1FBQ3JCLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLEtBQXVCO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9DLElBQUksTUFBTSxZQUFZLFlBQVksRUFBRTtZQUNsQyxNQUFNLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsS0FBd0I7UUFDekMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEQsSUFBSSxNQUFNLFlBQVksWUFBWSxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckQ7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FBQyxLQUF1QjtRQUN2QyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxJQUFJLE1BQU0sWUFBWSxZQUFZLEVBQUU7WUFDbEMsTUFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNyRDtRQUVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0YifQ==
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@aztec/sequencer-client",
3
- "version": "0.7.0",
3
+ "version": "0.7.3",
4
4
  "exports": "./dest/index.js",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@aztec/acir-simulator": "0.7.0",
8
- "@aztec/circuits.js": "0.7.0",
9
- "@aztec/ethereum": "0.7.0",
10
- "@aztec/foundation": "0.7.0",
11
- "@aztec/l1-artifacts": "0.7.0",
12
- "@aztec/merkle-tree": "0.7.0",
13
- "@aztec/p2p": "0.7.0",
14
- "@aztec/types": "0.7.0",
15
- "@aztec/world-state": "0.7.0",
7
+ "@aztec/acir-simulator": "0.7.3",
8
+ "@aztec/circuits.js": "0.7.3",
9
+ "@aztec/ethereum": "0.7.3",
10
+ "@aztec/foundation": "0.7.3",
11
+ "@aztec/l1-artifacts": "0.7.3",
12
+ "@aztec/merkle-tree": "0.7.3",
13
+ "@aztec/p2p": "0.7.3",
14
+ "@aztec/types": "0.7.3",
15
+ "@aztec/world-state": "0.7.3",
16
16
  "lodash.chunk": "^4.2.0",
17
17
  "lodash.flatmap": "^4.5.0",
18
18
  "lodash.pick": "^4.4.0",
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  AppendOnlyTreeSnapshot,
3
3
  BaseOrMergeRollupPublicInputs,
4
- BaseRollupInputs,
5
4
  CircuitsWasm,
6
5
  Fr,
7
6
  GlobalVariables,
@@ -11,6 +10,7 @@ import {
11
10
  MAX_NEW_NULLIFIERS_PER_TX,
12
11
  MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX,
13
12
  MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
13
+ NULLIFIER_SUBTREE_HEIGHT,
14
14
  NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP,
15
15
  Proof,
16
16
  PublicDataUpdateRequest,
@@ -138,7 +138,7 @@ describe('sequencer/solo_block_builder', () => {
138
138
  await expectsDb.batchInsert(
139
139
  MerkleTreeId.NULLIFIER_TREE,
140
140
  flatMap(txs, tx => tx.data.end.newNullifiers.map(x => x.toBuffer())),
141
- BaseRollupInputs.NULLIFIER_SUBTREE_HEIGHT,
141
+ NULLIFIER_SUBTREE_HEIGHT,
142
142
  );
143
143
  for (const write of txs.flatMap(tx => tx.data.end.publicDataUpdateRequests)) {
144
144
  await expectsDb.updateLeaf(MerkleTreeId.PUBLIC_DATA_TREE, write.newValue.toBuffer(), write.leafIndex.value);
@@ -384,7 +384,7 @@ describe('sequencer/solo_block_builder', () => {
384
384
 
385
385
  const [l2Block] = await builder.buildL2Block(globalVariables, txs, l1ToL2Messages);
386
386
  expect(l2Block.number).toEqual(blockNumber);
387
- }, 20_000);
387
+ }, 40_000);
388
388
 
389
389
  // This test specifically tests nullifier values which previously caused e2e_private_token test to fail
390
390
  it('e2e_private_token edge case regression test on nullifier values', async () => {
@@ -411,7 +411,7 @@ describe('sequencer/solo_block_builder', () => {
411
411
  await builderDb.batchInsert(
412
412
  MerkleTreeId.NULLIFIER_TREE,
413
413
  updateVals.map(v => toBufferBE(v, 32)),
414
- BaseRollupInputs.NULLIFIER_SUBTREE_HEIGHT,
414
+ NULLIFIER_SUBTREE_HEIGHT,
415
415
  );
416
416
 
417
417
  const [l2Block] = await builder.buildL2Block(globalVariables, txs, mockL1ToL2Messages);
@@ -2,17 +2,29 @@ import {
2
2
  AppendOnlyTreeSnapshot,
3
3
  BaseOrMergeRollupPublicInputs,
4
4
  BaseRollupInputs,
5
+ CONTRACT_SUBTREE_HEIGHT,
6
+ CONTRACT_SUBTREE_SIBLING_PATH_LENGTH,
5
7
  CircuitsWasm,
6
8
  ConstantRollupData,
7
9
  GlobalVariables,
8
10
  HISTORIC_BLOCKS_TREE_HEIGHT,
9
11
  L1_TO_L2_MSG_SUBTREE_HEIGHT,
10
12
  L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
13
+ MAX_NEW_NULLIFIERS_PER_BASE_ROLLUP,
14
+ MAX_PUBLIC_DATA_READS_PER_BASE_ROLLUP,
15
+ MAX_PUBLIC_DATA_READS_PER_TX,
16
+ MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_BASE_ROLLUP,
17
+ MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
11
18
  MembershipWitness,
12
19
  MergeRollupInputs,
20
+ NULLIFIER_SUBTREE_HEIGHT,
21
+ NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH,
13
22
  NULLIFIER_TREE_HEIGHT,
14
23
  NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP,
15
24
  NullifierLeafPreimage,
25
+ PRIVATE_DATA_SUBTREE_HEIGHT,
26
+ PRIVATE_DATA_SUBTREE_SIBLING_PATH_LENGTH,
27
+ PUBLIC_DATA_TREE_HEIGHT,
16
28
  PreviousKernelData,
17
29
  PreviousRollupData,
18
30
  Proof,
@@ -593,22 +605,38 @@ export class SoloBlockBuilder implements BlockBuilder {
593
605
  }
594
606
 
595
607
  protected async processPublicDataUpdateRequests(tx: ProcessedTx) {
596
- const newPublicDataUpdateRequestsSiblingPaths: Fr[][] = [];
597
- for (const publicDataUpdateRequest of tx.data.end.publicDataUpdateRequests) {
598
- const index = publicDataUpdateRequest.leafIndex.value;
608
+ const newPublicDataUpdateRequestsSiblingPaths: Tuple<
609
+ Tuple<Fr, typeof PUBLIC_DATA_TREE_HEIGHT>,
610
+ typeof MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
611
+ > = makeTuple(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, () => makeTuple(PUBLIC_DATA_TREE_HEIGHT, Fr.zero));
612
+ for (const i in tx.data.end.publicDataUpdateRequests) {
613
+ const index = tx.data.end.publicDataUpdateRequests[i].leafIndex.value;
614
+ await this.db.updateLeaf(
615
+ MerkleTreeId.PUBLIC_DATA_TREE,
616
+ tx.data.end.publicDataUpdateRequests[i].newValue.toBuffer(),
617
+ index,
618
+ );
599
619
  const path = await this.db.getSiblingPath(MerkleTreeId.PUBLIC_DATA_TREE, index);
600
- await this.db.updateLeaf(MerkleTreeId.PUBLIC_DATA_TREE, publicDataUpdateRequest.newValue.toBuffer(), index);
601
- newPublicDataUpdateRequestsSiblingPaths.push(path.toFieldArray());
620
+ const array = path.toFieldArray();
621
+ newPublicDataUpdateRequestsSiblingPaths[i] = makeTuple(PUBLIC_DATA_TREE_HEIGHT, j =>
622
+ j < array.length ? array[j] : Fr.ZERO,
623
+ );
602
624
  }
603
625
  return newPublicDataUpdateRequestsSiblingPaths;
604
626
  }
605
627
 
606
628
  protected async getPublicDataReadsSiblingPaths(tx: ProcessedTx) {
607
- const newPublicDataReadsSiblingPaths: Fr[][] = [];
608
- for (const publicDataRead of tx.data.end.publicDataReads) {
609
- const index = publicDataRead.leafIndex.value;
629
+ const newPublicDataReadsSiblingPaths: Tuple<
630
+ Tuple<Fr, typeof PUBLIC_DATA_TREE_HEIGHT>,
631
+ typeof MAX_PUBLIC_DATA_READS_PER_TX
632
+ > = makeTuple(MAX_PUBLIC_DATA_READS_PER_TX, () => makeTuple(PUBLIC_DATA_TREE_HEIGHT, Fr.zero));
633
+ for (const i in tx.data.end.publicDataReads) {
634
+ const index = tx.data.end.publicDataReads[i].leafIndex.value;
610
635
  const path = await this.db.getSiblingPath(MerkleTreeId.PUBLIC_DATA_TREE, index);
611
- newPublicDataReadsSiblingPaths.push(path.toFieldArray());
636
+ const array = path.toFieldArray();
637
+ newPublicDataReadsSiblingPaths[i] = makeTuple(PUBLIC_DATA_TREE_HEIGHT, j =>
638
+ j < array.length ? array[j] : Fr.ZERO,
639
+ );
612
640
  }
613
641
  return newPublicDataReadsSiblingPaths;
614
642
  }
@@ -626,13 +654,22 @@ export class SoloBlockBuilder implements BlockBuilder {
626
654
  const startHistoricBlocksTreeSnapshot = await this.getTreeSnapshot(MerkleTreeId.BLOCKS_TREE);
627
655
 
628
656
  // Get the subtree sibling paths for the circuit
629
- const newCommitmentsSubtreeSiblingPath = await this.getSubtreeSiblingPath(
657
+ const newCommitmentsSubtreeSiblingPathArray = await this.getSubtreeSiblingPath(
630
658
  MerkleTreeId.PRIVATE_DATA_TREE,
631
- BaseRollupInputs.PRIVATE_DATA_SUBTREE_HEIGHT,
659
+ PRIVATE_DATA_SUBTREE_HEIGHT,
632
660
  );
633
- const newContractsSubtreeSiblingPath = await this.getSubtreeSiblingPath(
661
+
662
+ const newCommitmentsSubtreeSiblingPath = makeTuple(PRIVATE_DATA_SUBTREE_SIBLING_PATH_LENGTH, i =>
663
+ i < newCommitmentsSubtreeSiblingPathArray.length ? newCommitmentsSubtreeSiblingPathArray[i] : Fr.ZERO,
664
+ );
665
+
666
+ const newContractsSubtreeSiblingPathArray = await this.getSubtreeSiblingPath(
634
667
  MerkleTreeId.CONTRACT_TREE,
635
- BaseRollupInputs.CONTRACT_SUBTREE_HEIGHT,
668
+ CONTRACT_SUBTREE_HEIGHT,
669
+ );
670
+
671
+ const newContractsSubtreeSiblingPath = makeTuple(CONTRACT_SUBTREE_SIBLING_PATH_LENGTH, i =>
672
+ i < newContractsSubtreeSiblingPathArray.length ? newContractsSubtreeSiblingPathArray[i] : Fr.ZERO,
636
673
  );
637
674
 
638
675
  // Update the contract and private data trees with the new items being inserted to get the new roots
@@ -658,11 +695,17 @@ export class SoloBlockBuilder implements BlockBuilder {
658
695
  const rightPublicDataReadSiblingPaths = await this.getPublicDataReadsSiblingPaths(right);
659
696
  const rightPublicDataUpdateRequestsSiblingPaths = await this.processPublicDataUpdateRequests(right);
660
697
 
661
- const newPublicDataReadsSiblingPaths = [...leftPublicDataReadSiblingPaths, ...rightPublicDataReadSiblingPaths];
662
- const newPublicDataUpdateRequestsSiblingPaths = [
663
- ...leftPublicDataUpdateRequestsSiblingPaths,
664
- ...rightPublicDataUpdateRequestsSiblingPaths,
665
- ];
698
+ const newPublicDataReadsSiblingPaths = makeTuple(MAX_PUBLIC_DATA_READS_PER_BASE_ROLLUP, i =>
699
+ i < MAX_PUBLIC_DATA_READS_PER_TX
700
+ ? leftPublicDataReadSiblingPaths[i]
701
+ : rightPublicDataReadSiblingPaths[i - MAX_PUBLIC_DATA_READS_PER_TX],
702
+ );
703
+
704
+ const newPublicDataUpdateRequestsSiblingPaths = makeTuple(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_BASE_ROLLUP, i =>
705
+ i < MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
706
+ ? leftPublicDataUpdateRequestsSiblingPaths[i]
707
+ : rightPublicDataUpdateRequestsSiblingPaths[i - MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX],
708
+ );
666
709
 
667
710
  // Update the nullifier tree, capturing the low nullifier info for each individual operation
668
711
  const newNullifiers = [...left.data.end.newNullifiers, ...right.data.end.newNullifiers];
@@ -670,7 +713,7 @@ export class SoloBlockBuilder implements BlockBuilder {
670
713
  const [nullifierWitnessLeaves, newNullifiersSubtreeSiblingPath] = await this.db.batchInsert(
671
714
  MerkleTreeId.NULLIFIER_TREE,
672
715
  newNullifiers.map(fr => fr.toBuffer()),
673
- BaseRollupInputs.NULLIFIER_SUBTREE_HEIGHT,
716
+ NULLIFIER_SUBTREE_HEIGHT,
674
717
  );
675
718
  if (nullifierWitnessLeaves === undefined) {
676
719
  throw new Error(`Could not craft nullifier batch insertion proofs`);
@@ -682,6 +725,8 @@ export class SoloBlockBuilder implements BlockBuilder {
682
725
  MembershipWitness.fromBufferArray(l.index, assertLength(l.siblingPath.toBufferArray(), NULLIFIER_TREE_HEIGHT)),
683
726
  );
684
727
 
728
+ const newNullifiersSubtreeSiblingPathArray = newNullifiersSubtreeSiblingPath.toFieldArray();
729
+
685
730
  return BaseRollupInputs.from({
686
731
  constants,
687
732
  startNullifierTreeSnapshot,
@@ -691,14 +736,25 @@ export class SoloBlockBuilder implements BlockBuilder {
691
736
  startHistoricBlocksTreeSnapshot,
692
737
  newCommitmentsSubtreeSiblingPath,
693
738
  newContractsSubtreeSiblingPath,
694
- newNullifiersSubtreeSiblingPath: newNullifiersSubtreeSiblingPath.toFieldArray(),
739
+ newNullifiersSubtreeSiblingPath: makeTuple(NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, i =>
740
+ i < newNullifiersSubtreeSiblingPathArray.length ? newNullifiersSubtreeSiblingPathArray[i] : Fr.ZERO,
741
+ ),
695
742
  newPublicDataUpdateRequestsSiblingPaths,
696
743
  newPublicDataReadsSiblingPaths,
697
- lowNullifierLeafPreimages: nullifierWitnessLeaves.map(
698
- ({ leafData }) =>
699
- new NullifierLeafPreimage(new Fr(leafData.value), new Fr(leafData.nextValue), Number(leafData.nextIndex)),
744
+ lowNullifierLeafPreimages: makeTuple(MAX_NEW_NULLIFIERS_PER_BASE_ROLLUP, i =>
745
+ i < nullifierWitnessLeaves.length
746
+ ? new NullifierLeafPreimage(
747
+ new Fr(nullifierWitnessLeaves[i].leafData.value),
748
+ new Fr(nullifierWitnessLeaves[i].leafData.nextValue),
749
+ Number(nullifierWitnessLeaves[i].leafData.nextIndex),
750
+ )
751
+ : new NullifierLeafPreimage(Fr.ZERO, Fr.ZERO, 0),
752
+ ),
753
+ lowNullifierMembershipWitness: makeTuple(MAX_NEW_NULLIFIERS_PER_BASE_ROLLUP, i =>
754
+ i < lowNullifierMembershipWitnesses.length
755
+ ? lowNullifierMembershipWitnesses[i]
756
+ : this.makeEmptyMembershipWitness(NULLIFIER_TREE_HEIGHT),
700
757
  ),
701
- lowNullifierMembershipWitness: lowNullifierMembershipWitnesses,
702
758
  kernelData: [this.getKernelDataFor(left), this.getKernelDataFor(right)],
703
759
  historicBlocksTreeRootMembershipWitnesses: [
704
760
  await this.getHistoricTreesMembershipWitnessFor(left),
@@ -1,7 +1,7 @@
1
1
  import { createEthereumChain } from '@aztec/ethereum';
2
2
  import { createDebugLogger } from '@aztec/foundation/log';
3
3
  import { ContractDeploymentEmitterAbi, RollupAbi } from '@aztec/l1-artifacts';
4
- import { ExtendedContractData } from '@aztec/types';
4
+ import { BLOB_SIZE_IN_BYTES, ExtendedContractData } from '@aztec/types';
5
5
 
6
6
  import {
7
7
  GetContractReturnType,
@@ -141,6 +141,9 @@ export class ViemTxSender implements L1PublisherTxSender {
141
141
  `0x${extendedContractData.bytecode.toString('hex')}`,
142
142
  ] as const;
143
143
 
144
+ const codeSize = extendedContractData.bytecode.length;
145
+ this.log(`Bytecode is ${codeSize} bytes and require ${codeSize / BLOB_SIZE_IN_BYTES} blobs`);
146
+
144
147
  const gas = await this.contractDeploymentEmitterContract.estimateGas.emitContractDeployment(args, {
145
148
  account: this.account,
146
149
  });
@@ -147,7 +147,11 @@ export class Sequencer {
147
147
  await this.p2pClient.deleteTxs(await Tx.getHashes(failedTxData));
148
148
  }
149
149
 
150
- if (processedTxs.length === 0) {
150
+ // Only accept processed transactions that are not double-spends
151
+ // public functions emitting nullifiers would pass earlier check but fail here
152
+ const processedValidTxs = await this.takeValidProcessedTxs(processedTxs);
153
+
154
+ if (processedValidTxs.length === 0) {
151
155
  this.log('No txs processed correctly to build block. Exiting');
152
156
  return;
153
157
  }
@@ -158,16 +162,16 @@ export class Sequencer {
158
162
  this.log('Successfully retrieved L1 to L2 messages from contract');
159
163
 
160
164
  // Build the new block by running the rollup circuits
161
- this.log(`Assembling block with txs ${processedTxs.map(tx => tx.hash).join(', ')}`);
165
+ this.log(`Assembling block with txs ${processedValidTxs.map(tx => tx.hash).join(', ')}`);
162
166
 
163
167
  const emptyTx = await processor.makeEmptyProcessedTx();
164
- const block = await this.buildBlock(processedTxs, l1ToL2Messages, emptyTx, newGlobalVariables);
168
+ const block = await this.buildBlock(processedValidTxs, l1ToL2Messages, emptyTx, newGlobalVariables);
165
169
  this.log(`Assembled block ${block.number}`);
166
170
 
167
171
  await this.publishExtendedContractData(validTxs, block);
168
172
 
169
173
  await this.publishL2Block(block);
170
- this.log.info(`Submitted rollup block ${block.number} with ${processedTxs.length} transactions`);
174
+ this.log.info(`Submitted rollup block ${block.number} with ${processedValidTxs.length} transactions`);
171
175
  } catch (err) {
172
176
  this.log.error(err);
173
177
  this.log.error(`Rolling back world state DB`);
@@ -249,6 +253,13 @@ export class Sequencer {
249
253
  return validTxs;
250
254
  }
251
255
 
256
+ protected async takeValidProcessedTxs(txs: ProcessedTx[]) {
257
+ const isDoubleSpends = await Promise.all(txs.map(async tx => await this.isTxDoubleSpend(tx as unknown as Tx)));
258
+ const doubleSpends = txs.filter((tx, index) => isDoubleSpends[index]).map(tx => tx.hash);
259
+ await this.p2pClient.deleteTxs(doubleSpends);
260
+ return txs.filter((tx, index) => !isDoubleSpends[index]);
261
+ }
262
+
252
263
  /**
253
264
  * Returns whether the previous block sent has been mined, and all dependencies have caught up with it.
254
265
  * @returns Boolean indicating if our dependencies are synced to the latest block.
@@ -1,5 +1,4 @@
1
1
  import {
2
- CommitmentDataOracleInputs,
3
2
  CommitmentsDB,
4
3
  MessageLoadOracleInputs,
5
4
  PublicContractsDB,
@@ -7,7 +6,6 @@ import {
7
6
  PublicStateDB,
8
7
  } from '@aztec/acir-simulator';
9
8
  import { AztecAddress, CircuitsWasm, EthAddress, Fr, FunctionSelector, HistoricBlockData } from '@aztec/circuits.js';
10
- import { siloCommitment } from '@aztec/circuits.js/abis';
11
9
  import { ContractDataSource, L1ToL2MessageSource, MerkleTreeId } from '@aztec/types';
12
10
  import { MerkleTreeOperations, computePublicDataTreeLeafIndex } from '@aztec/world-state';
13
11
 
@@ -100,19 +98,7 @@ export class WorldStateDB implements CommitmentsDB {
100
98
  };
101
99
  }
102
100
 
103
- public async getCommitmentOracle(address: AztecAddress, innerCommitment: Fr): Promise<CommitmentDataOracleInputs> {
104
- const siloedCommitment = siloCommitment(await CircuitsWasm.get(), address, innerCommitment);
105
- // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386): shoild be
106
- // unique commitment that exists in tree (should be siloed and then made unique via
107
- // nonce). Once public kernel or base rollup circuit injects nonces, this can be updated
108
- // to use uniqueSiloedCommitment.
109
- const index = (await this.db.findLeafIndex(MerkleTreeId.PRIVATE_DATA_TREE, siloedCommitment.toBuffer()))!;
110
- const siblingPath = await this.db.getSiblingPath(MerkleTreeId.PRIVATE_DATA_TREE, index);
111
-
112
- return {
113
- commitment: siloedCommitment,
114
- siblingPath: siblingPath.toFieldArray(),
115
- index,
116
- };
101
+ public async getCommitmentIndex(commitment: Fr): Promise<bigint | undefined> {
102
+ return await this.db.findLeafIndex(MerkleTreeId.PRIVATE_DATA_TREE, commitment.toBuffer());
117
103
  }
118
104
  }
@@ -4,9 +4,9 @@ import {
4
4
  CircuitError,
5
5
  CircuitsWasm,
6
6
  MergeRollupInputs,
7
- RollupWasmWrapper,
8
7
  RootRollupInputs,
9
8
  RootRollupPublicInputs,
9
+ baseRollupSim,
10
10
  mergeRollupSim,
11
11
  rootRollupSim,
12
12
  } from '@aztec/circuits.js';
@@ -17,11 +17,9 @@ import { RollupSimulator } from './index.js';
17
17
  * Implements the rollup circuit simulator using the wasm circuits implementation.
18
18
  */
19
19
  export class WasmRollupCircuitSimulator implements RollupSimulator {
20
- private rollupWasmWrapper: RollupWasmWrapper;
21
20
  private wasm: CircuitsWasm;
22
21
 
23
22
  constructor(wasm: CircuitsWasm) {
24
- this.rollupWasmWrapper = new RollupWasmWrapper(wasm);
25
23
  this.wasm = wasm;
26
24
  }
27
25
 
@@ -39,7 +37,12 @@ export class WasmRollupCircuitSimulator implements RollupSimulator {
39
37
  * @returns The public inputs as outputs of the simulation.
40
38
  */
41
39
  baseRollupCircuit(input: BaseRollupInputs): Promise<BaseOrMergeRollupPublicInputs> {
42
- return Promise.resolve(this.rollupWasmWrapper.simulateBaseRollup(input));
40
+ const result = baseRollupSim(this.wasm, input);
41
+ if (result instanceof CircuitError) {
42
+ throw new CircuitError(result.code, result.message);
43
+ }
44
+
45
+ return Promise.resolve(result);
43
46
  }
44
47
  /**
45
48
  * Simulates the merge rollup circuit from its inputs.