@aztec/txe 0.0.1-commit.2ed92850 → 0.0.1-commit.43c09e3f

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 (32) hide show
  1. package/dest/oracle/interfaces.d.ts +2 -2
  2. package/dest/oracle/interfaces.d.ts.map +1 -1
  3. package/dest/oracle/txe_oracle_public_context.d.ts +2 -2
  4. package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
  5. package/dest/oracle/txe_oracle_public_context.js +3 -4
  6. package/dest/oracle/txe_oracle_top_level_context.d.ts +1 -1
  7. package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
  8. package/dest/oracle/txe_oracle_top_level_context.js +15 -12
  9. package/dest/rpc_translator.d.ts +5 -5
  10. package/dest/rpc_translator.d.ts.map +1 -1
  11. package/dest/rpc_translator.js +38 -27
  12. package/dest/state_machine/archiver.d.ts +1 -1
  13. package/dest/state_machine/archiver.d.ts.map +1 -1
  14. package/dest/state_machine/archiver.js +2 -0
  15. package/dest/state_machine/index.d.ts +5 -5
  16. package/dest/state_machine/index.d.ts.map +1 -1
  17. package/dest/state_machine/index.js +14 -9
  18. package/dest/txe_session.d.ts +1 -1
  19. package/dest/txe_session.d.ts.map +1 -1
  20. package/dest/txe_session.js +11 -8
  21. package/dest/utils/block_creation.d.ts +1 -1
  22. package/dest/utils/block_creation.d.ts.map +1 -1
  23. package/dest/utils/block_creation.js +3 -1
  24. package/package.json +15 -15
  25. package/src/oracle/interfaces.ts +1 -1
  26. package/src/oracle/txe_oracle_public_context.ts +3 -5
  27. package/src/oracle/txe_oracle_top_level_context.ts +42 -14
  28. package/src/rpc_translator.ts +40 -22
  29. package/src/state_machine/archiver.ts +2 -0
  30. package/src/state_machine/index.ts +24 -9
  31. package/src/txe_session.ts +13 -14
  32. package/src/utils/block_creation.ts +3 -1
@@ -6,6 +6,7 @@ import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
6
6
  import type { ProtocolContract } from '@aztec/protocol-contracts';
7
7
  import {
8
8
  AddressStore,
9
+ AnchorBlockStore,
9
10
  CapsuleStore,
10
11
  JobCoordinator,
11
12
  NoteService,
@@ -49,6 +50,7 @@ import type { IAvmExecutionOracle, ITxeExecutionOracle } from './oracle/interfac
49
50
  import { TXEOraclePublicContext } from './oracle/txe_oracle_public_context.js';
50
51
  import { TXEOracleTopLevelContext } from './oracle/txe_oracle_top_level_context.js';
51
52
  import { RPCTranslator } from './rpc_translator.js';
53
+ import { TXEArchiver } from './state_machine/archiver.js';
52
54
  import { TXEStateMachine } from './state_machine/index.js';
53
55
  import type { ForeignCallArgs, ForeignCallResult } from './util/encoding.js';
54
56
  import { TXEAccountStore } from './util/txe_account_store.js';
@@ -176,7 +178,9 @@ export class TXESession implements TXESessionStateHandler {
176
178
  await contractStore.addContractInstance(instance);
177
179
  }
178
180
 
179
- const stateMachine = await TXEStateMachine.create(store);
181
+ const archiver = new TXEArchiver(store);
182
+ const anchorBlockStore = new AnchorBlockStore(store);
183
+ const stateMachine = await TXEStateMachine.create(archiver, anchorBlockStore, contractStore, noteStore);
180
184
 
181
185
  const nextBlockTimestamp = BigInt(Math.floor(new Date().getTime() / 1000));
182
186
  const version = new Fr(await stateMachine.node.getVersion());
@@ -312,17 +316,14 @@ export class TXESession implements TXESessionStateHandler {
312
316
  ): Promise<PrivateContextInputs> {
313
317
  this.exitTopLevelState();
314
318
 
315
- await new NoteService(
316
- this.noteStore,
317
- this.stateMachine.node,
318
- this.stateMachine.anchorBlockStore,
319
- this.currentJobId,
320
- ).syncNoteNullifiers(contractAddress);
321
-
322
319
  // Private execution has two associated block numbers: the anchor block (i.e. the historical block that is used to
323
320
  // build the proof), and the *next* block, i.e. the one we'll create once the execution ends, and which will contain
324
321
  // a single transaction with the effects of what was done in the test.
325
322
  const anchorBlock = await this.stateMachine.node.getBlockHeader(anchorBlockNumber ?? 'latest');
323
+
324
+ await new NoteService(this.noteStore, this.stateMachine.node, anchorBlock!, this.currentJobId).syncNoteNullifiers(
325
+ contractAddress,
326
+ );
326
327
  const latestBlock = await this.stateMachine.node.getBlockHeader('latest');
327
328
 
328
329
  const nextBlockGlobalVariables = makeGlobalVariables(undefined, {
@@ -354,12 +355,12 @@ export class TXESession implements TXESessionStateHandler {
354
355
  this.keyStore,
355
356
  this.addressStore,
356
357
  this.stateMachine.node,
357
- this.stateMachine.anchorBlockStore,
358
358
  this.senderTaggingStore,
359
359
  this.recipientTaggingStore,
360
360
  this.senderAddressBookStore,
361
361
  this.capsuleStore,
362
362
  this.privateEventStore,
363
+ this.stateMachine.contractSyncService,
363
364
  this.currentJobId,
364
365
  );
365
366
 
@@ -401,6 +402,8 @@ export class TXESession implements TXESessionStateHandler {
401
402
  async enterUtilityState(contractAddress: AztecAddress = DEFAULT_ADDRESS) {
402
403
  this.exitTopLevelState();
403
404
 
405
+ const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
406
+
404
407
  // There is no automatic message discovery and contract-driven syncing process in inlined private or utility
405
408
  // contexts, which means that known nullifiers are also not searched for, since it is during the tagging sync that
406
409
  // we perform this. We therefore search for known nullifiers now, as otherwise notes that were nullified would not
@@ -409,12 +412,10 @@ export class TXESession implements TXESessionStateHandler {
409
412
  await new NoteService(
410
413
  this.noteStore,
411
414
  this.stateMachine.node,
412
- this.stateMachine.anchorBlockStore,
415
+ anchorBlockHeader,
413
416
  this.currentJobId,
414
417
  ).syncNoteNullifiers(contractAddress);
415
418
 
416
- const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
417
-
418
419
  this.oracleHandler = new UtilityExecutionOracle(
419
420
  contractAddress,
420
421
  [],
@@ -425,7 +426,6 @@ export class TXESession implements TXESessionStateHandler {
425
426
  this.keyStore,
426
427
  this.addressStore,
427
428
  this.stateMachine.node,
428
- this.stateMachine.anchorBlockStore,
429
429
  this.recipientTaggingStore,
430
430
  this.senderAddressBookStore,
431
431
  this.capsuleStore,
@@ -516,7 +516,6 @@ export class TXESession implements TXESessionStateHandler {
516
516
  this.keyStore,
517
517
  this.addressStore,
518
518
  this.stateMachine.node,
519
- this.stateMachine.anchorBlockStore,
520
519
  this.recipientTaggingStore,
521
520
  this.senderAddressBookStore,
522
521
  this.capsuleStore,
@@ -87,7 +87,9 @@ export async function makeTXEBlock(
87
87
  const newArchiveInfo = await worldTrees.getTreeInfo(MerkleTreeId.ARCHIVE);
88
88
  const newArchive = new AppendOnlyTreeSnapshot(new Fr(newArchiveInfo.root), Number(newArchiveInfo.size));
89
89
 
90
- // L2Block requires checkpointNumber and indexWithinCheckpoint
90
+ // L2Block requires checkpointNumber and indexWithinCheckpoint.
91
+ // TXE uses 1-block-per-checkpoint for testing simplicity, so we can use block number as checkpoint number.
92
+ // This uses the deprecated fromBlockNumber method intentionally for the TXE testing environment.
91
93
  const checkpointNumber = CheckpointNumber.fromBlockNumber(globalVariables.blockNumber);
92
94
  const indexWithinCheckpoint = IndexWithinCheckpoint(0);
93
95