@aztec/txe 0.80.0 → 0.82.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.
@@ -6,10 +6,10 @@ import { Fr } from '@aztec/foundation/fields';
6
6
  import { applyStringFormatting } from '@aztec/foundation/log';
7
7
  import { Timer } from '@aztec/foundation/timer';
8
8
  import { KeyStore } from '@aztec/key-store';
9
- import { AddressDataProvider, AuthWitnessDataProvider, CapsuleDataProvider, ContractDataProvider, NoteDataProvider, PXEOracleInterface, SyncDataProvider, TaggingDataProvider, enrichPublicSimulationError } from '@aztec/pxe/server';
9
+ import { AddressDataProvider, CapsuleDataProvider, ContractDataProvider, NoteDataProvider, PXEOracleInterface, SyncDataProvider, TaggingDataProvider, enrichPublicSimulationError } from '@aztec/pxe/server';
10
10
  import { ExecutionNoteCache, HashedValuesCache, Oracle, WASMSimulator, extractCallStack, extractPrivateCircuitPublicInputs, pickNotes, toACVMWitness, witnessMapToFields } from '@aztec/simulator/client';
11
11
  import { createTxForPublicCalls } from '@aztec/simulator/public/fixtures';
12
- import { ExecutionError, PublicTxSimulator, createSimulationError, resolveAssertionMessageFromError } from '@aztec/simulator/server';
12
+ import { ExecutionError, PublicContractsDB, PublicTxSimulator, createSimulationError, resolveAssertionMessageFromError } from '@aztec/simulator/server';
13
13
  import { FunctionSelector, countArgumentsSize } from '@aztec/stdlib/abi';
14
14
  import { AuthWitness } from '@aztec/stdlib/auth-witness';
15
15
  import { PublicDataWrite } from '@aztec/stdlib/avm';
@@ -26,7 +26,7 @@ import { ForkCheckpoint, NativeWorldStateService } from '@aztec/world-state/nati
26
26
  import { TXENode } from '../node/txe_node.js';
27
27
  import { TXEAccountDataProvider } from '../util/txe_account_data_provider.js';
28
28
  import { TXEPublicContractDataSource } from '../util/txe_public_contract_data_source.js';
29
- import { TXEWorldStateDB } from '../util/txe_world_state_db.js';
29
+ import { TXEPublicTreesDB } from '../util/txe_public_dbs.js';
30
30
  export class TXE {
31
31
  logger;
32
32
  keyStore;
@@ -36,7 +36,6 @@ export class TXE {
36
36
  syncDataProvider;
37
37
  taggingDataProvider;
38
38
  addressDataProvider;
39
- authWitnessDataProvider;
40
39
  accountDataProvider;
41
40
  executionCache;
42
41
  contractAddress;
@@ -62,7 +61,8 @@ export class TXE {
62
61
  node;
63
62
  simulationProvider;
64
63
  noteCache;
65
- constructor(logger, keyStore, contractDataProvider, noteDataProvider, capsuleDataProvider, syncDataProvider, taggingDataProvider, addressDataProvider, authWitnessDataProvider, accountDataProvider, executionCache, contractAddress, nativeWorldStateService, baseFork){
64
+ authwits;
65
+ constructor(logger, keyStore, contractDataProvider, noteDataProvider, capsuleDataProvider, syncDataProvider, taggingDataProvider, addressDataProvider, accountDataProvider, executionCache, contractAddress, nativeWorldStateService, baseFork){
66
66
  this.logger = logger;
67
67
  this.keyStore = keyStore;
68
68
  this.contractDataProvider = contractDataProvider;
@@ -71,7 +71,6 @@ export class TXE {
71
71
  this.syncDataProvider = syncDataProvider;
72
72
  this.taggingDataProvider = taggingDataProvider;
73
73
  this.addressDataProvider = addressDataProvider;
74
- this.authWitnessDataProvider = authWitnessDataProvider;
75
74
  this.accountDataProvider = accountDataProvider;
76
75
  this.executionCache = executionCache;
77
76
  this.contractAddress = contractAddress;
@@ -92,18 +91,18 @@ export class TXE {
92
91
  this.VERSION = 1;
93
92
  this.CHAIN_ID = 1;
94
93
  this.simulationProvider = new WASMSimulator();
94
+ this.authwits = new Map();
95
95
  this.noteCache = new ExecutionNoteCache(this.getTxRequestHash());
96
96
  this.node = new TXENode(this.blockNumber, this.VERSION, this.CHAIN_ID, nativeWorldStateService, baseFork);
97
97
  // Default msg_sender (for entrypoints) is now Fr.max_value rather than 0 addr (see #7190 & #7404)
98
98
  this.msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE);
99
- this.pxeOracleInterface = new PXEOracleInterface(this.node, this.keyStore, this.simulationProvider, this.contractDataProvider, this.noteDataProvider, this.capsuleDataProvider, this.syncDataProvider, this.taggingDataProvider, this.addressDataProvider, this.authWitnessDataProvider, this.logger);
99
+ this.pxeOracleInterface = new PXEOracleInterface(this.node, this.keyStore, this.simulationProvider, this.contractDataProvider, this.noteDataProvider, this.capsuleDataProvider, this.syncDataProvider, this.taggingDataProvider, this.addressDataProvider, this.logger);
100
100
  }
101
101
  static async create(logger, store, protocolContracts) {
102
102
  const executionCache = new HashedValuesCache();
103
103
  const nativeWorldStateService = await NativeWorldStateService.tmp();
104
104
  const baseFork = await nativeWorldStateService.fork();
105
105
  const addressDataProvider = new AddressDataProvider(store);
106
- const authWitnessDataProvider = new AuthWitnessDataProvider(store);
107
106
  const contractDataProvider = new ContractDataProvider(store);
108
107
  const noteDataProvider = await NoteDataProvider.create(store);
109
108
  const syncDataProvider = new SyncDataProvider(store);
@@ -116,7 +115,7 @@ export class TXE {
116
115
  await contractDataProvider.addContractArtifact(contractClass.id, artifact);
117
116
  await contractDataProvider.addContractInstance(instance);
118
117
  }
119
- return new TXE(logger, keyStore, contractDataProvider, noteDataProvider, capsuleDataProvider, syncDataProvider, taggingDataProvider, addressDataProvider, authWitnessDataProvider, accountDataProvider, executionCache, await AztecAddress.random(), nativeWorldStateService, baseFork);
118
+ return new TXE(logger, keyStore, contractDataProvider, noteDataProvider, capsuleDataProvider, syncDataProvider, taggingDataProvider, addressDataProvider, accountDataProvider, executionCache, await AztecAddress.random(), nativeWorldStateService, baseFork);
120
119
  }
121
120
  // Utils
122
121
  getNativeWorldStateService() {
@@ -205,7 +204,7 @@ export class TXE {
205
204
  const authWitness = new AuthWitness(messageHash, [
206
205
  ...signature.toBuffer()
207
206
  ]);
208
- return this.authWitnessDataProvider.addAuthWitness(authWitness.requestHash, authWitness.witness);
207
+ return this.authwits.set(authWitness.requestHash.toString(), authWitness);
209
208
  }
210
209
  async addPublicDataWrites(writes) {
211
210
  this.publicDataWrites.push(...writes);
@@ -316,7 +315,7 @@ export class TXE {
316
315
  }
317
316
  return new NullifierMembershipWitness(BigInt(index), leafPreimage, siblingPath);
318
317
  }
319
- async getPublicDataTreeWitness(blockNumber, leafSlot) {
318
+ async getPublicDataWitness(blockNumber, leafSlot) {
320
319
  const snap = this.nativeWorldStateService.getSnapshot(blockNumber);
321
320
  const lowLeafResult = await snap.getPreviousValueIndex(MerkleTreeId.PUBLIC_DATA_TREE, leafSlot.toBigInt());
322
321
  if (!lowLeafResult) {
@@ -358,7 +357,8 @@ export class TXE {
358
357
  return Promise.resolve(this.accountDataProvider.getAccount(account));
359
358
  }
360
359
  getAuthWitness(messageHash) {
361
- return this.pxeOracleInterface.getAuthWitness(messageHash);
360
+ const authwit = this.authwits.get(messageHash.toString());
361
+ return Promise.resolve(authwit?.witness);
362
362
  }
363
363
  async getNotes(storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status) {
364
364
  // Nullified pending notes are already removed from the list.
@@ -508,8 +508,7 @@ export class TXE {
508
508
  }
509
509
  }
510
510
  await this.node.setTxEffect(blockNumber, new TxHash(new Fr(blockNumber)), txEffect);
511
- this.node.setNullifiersIndexesWithBlock(blockNumber, txEffect.nullifiers);
512
- this.node.addNoteLogsByTags(this.blockNumber, this.privateLogs);
511
+ this.node.addPrivateLogsByTags(this.blockNumber, this.privateLogs);
513
512
  this.node.addPublicLogsByTags(this.blockNumber, this.publicLogs);
514
513
  const stateReference = await fork.getStateReference();
515
514
  const archiveInfo = await fork.getTreeInfo(MerkleTreeId.ARCHIVE);
@@ -548,11 +547,10 @@ export class TXE {
548
547
  this.setContractAddress(targetContractAddress);
549
548
  this.setFunctionSelector(functionSelector);
550
549
  const artifact = await this.contractDataProvider.getFunctionArtifact(targetContractAddress, functionSelector);
551
- const acir = artifact.bytecode;
552
550
  const initialWitness = await this.getInitialWitness(artifact, argsHash, sideEffectCounter, isStaticCall);
553
551
  const acvmCallback = new Oracle(this);
554
552
  const timer = new Timer();
555
- const acirExecutionResult = await this.simulationProvider.executeUserCircuit(acir, initialWitness, acvmCallback).catch((err)=>{
553
+ const acirExecutionResult = await this.simulationProvider.executeUserCircuit(initialWitness, artifact, acvmCallback).catch((err)=>{
556
554
  err.message = resolveAssertionMessageFromError(err, artifact);
557
555
  const execError = new ExecutionError(err.message, {
558
556
  contractAddress: targetContractAddress,
@@ -635,7 +633,9 @@ export class TXE {
635
633
  // See note at revert below.
636
634
  const checkpoint = await ForkCheckpoint.new(db);
637
635
  try {
638
- const simulator = new PublicTxSimulator(db, new TXEWorldStateDB(db, new TXEPublicContractDataSource(this), this), globalVariables, /*doMerkleOperations=*/ true);
636
+ const treesDB = new TXEPublicTreesDB(db, this);
637
+ const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(this));
638
+ const simulator = new PublicTxSimulator(treesDB, contractsDB, globalVariables, /*doMerkleOperations=*/ true);
639
639
  const { usedTxRequestHashForNonces } = this.noteCache.finish();
640
640
  const firstNullifier = usedTxRequestHashForNonces ? this.getTxRequestHash() : this.noteCache.getAllNullifiers()[0];
641
641
  // When setting up a teardown call, we tell it that
@@ -719,13 +719,13 @@ export class TXE {
719
719
  async syncNotes() {
720
720
  const taggedLogsByRecipient = await this.pxeOracleInterface.syncTaggedLogs(this.contractAddress, await this.getBlockNumber(), undefined);
721
721
  for (const [recipient, taggedLogs] of taggedLogsByRecipient.entries()){
722
- await this.pxeOracleInterface.processTaggedLogs(taggedLogs, AztecAddress.fromString(recipient));
722
+ await this.pxeOracleInterface.processTaggedLogs(this.contractAddress, taggedLogs, AztecAddress.fromString(recipient));
723
723
  }
724
724
  await this.pxeOracleInterface.removeNullifiedNotes(this.contractAddress);
725
725
  return Promise.resolve();
726
726
  }
727
- deliverNote(_contractAddress, _storageSlot, _nonce, _content, _noteHash, _nullifier, _txHash, _recipient) {
728
- throw new Error('deliverNote');
727
+ async deliverNote(contractAddress, storageSlot, nonce, content, noteHash, nullifier, txHash, recipient) {
728
+ await this.pxeOracleInterface.deliverNote(contractAddress, storageSlot, nonce, content, noteHash, nullifier, txHash, recipient);
729
729
  }
730
730
  async getLogByTag(tag) {
731
731
  return await this.pxeOracleInterface.getLogByTag(tag);
@@ -831,4 +831,7 @@ export class TXE {
831
831
  const aes128 = new Aes128();
832
832
  return aes128.decryptBufferCBC(ciphertext, iv, symKey);
833
833
  }
834
+ getSharedSecret(address, ephPk) {
835
+ return this.pxeOracleInterface.getSharedSecret(address, ephPk);
836
+ }
834
837
  }
@@ -69,7 +69,7 @@ export declare class TXEService {
69
69
  storageWrite(startStorageSlot: ForeignCallSingle, values: ForeignCallArray): Promise<{
70
70
  values: (string | ForeignCallArray)[];
71
71
  }>;
72
- getPublicDataTreeWitness(blockNumber: ForeignCallSingle, leafSlot: ForeignCallSingle): Promise<{
72
+ getPublicDataWitness(blockNumber: ForeignCallSingle, leafSlot: ForeignCallSingle): Promise<{
73
73
  values: (string | ForeignCallArray)[];
74
74
  }>;
75
75
  getNotes(storageSlot: ForeignCallSingle, numSelects: ForeignCallSingle, selectByIndexes: ForeignCallArray, selectByOffsets: ForeignCallArray, selectByLengths: ForeignCallArray, selectValues: ForeignCallArray, selectComparators: ForeignCallArray, sortByIndexes: ForeignCallArray, sortByOffsets: ForeignCallArray, sortByLengths: ForeignCallArray, sortOrder: ForeignCallArray, limit: ForeignCallSingle, offset: ForeignCallSingle, status: ForeignCallSingle, returnSize: ForeignCallSingle): Promise<{
@@ -133,6 +133,12 @@ export declare class TXEService {
133
133
  syncNotes(): Promise<{
134
134
  values: (string | ForeignCallArray)[];
135
135
  }>;
136
+ deliverNote(contractAddress: ForeignCallSingle, storageSlot: ForeignCallSingle, nonce: ForeignCallSingle, content: ForeignCallArray, contentLength: ForeignCallSingle, noteHash: ForeignCallSingle, nullifier: ForeignCallSingle, txHash: ForeignCallSingle, recipient: ForeignCallSingle): Promise<{
137
+ values: (string | ForeignCallArray)[];
138
+ }>;
139
+ getLogByTag(tag: ForeignCallSingle): Promise<{
140
+ values: (string | ForeignCallArray)[];
141
+ }>;
136
142
  storeCapsule(contractAddress: ForeignCallSingle, slot: ForeignCallSingle, capsule: ForeignCallArray): Promise<{
137
143
  values: (string | ForeignCallArray)[];
138
144
  }>;
@@ -145,7 +151,10 @@ export declare class TXEService {
145
151
  copyCapsule(contractAddress: ForeignCallSingle, srcSlot: ForeignCallSingle, dstSlot: ForeignCallSingle, numEntries: ForeignCallSingle): Promise<{
146
152
  values: (string | ForeignCallArray)[];
147
153
  }>;
148
- aes128Decrypt(ciphertext: ForeignCallArray, iv: ForeignCallArray, symKey: ForeignCallArray): Promise<{
154
+ aes128Decrypt(ciphertextBVecStorage: ForeignCallArray, ciphertextLength: ForeignCallSingle, iv: ForeignCallArray, symKey: ForeignCallArray): Promise<{
155
+ values: (string | ForeignCallArray)[];
156
+ }>;
157
+ getSharedSecret(address: ForeignCallSingle, ephPk: ForeignCallArray): Promise<{
149
158
  values: (string | ForeignCallArray)[];
150
159
  }>;
151
160
  avmOpcodeEmitUnencryptedLog(_message: ForeignCallArray): {
@@ -1 +1 @@
1
- {"version":3,"file":"txe_service.d.ts","sourceRoot":"","sources":["../../src/txe_service/txe_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,2BAA2B,EAAM,MAAM,iBAAiB,CAAC;AAEvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,KAAK,gBAAgB,EAAkC,MAAM,mBAAmB,CAAC;AAS1F,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAUvB,MAAM,qBAAqB,CAAC;AAG7B,qBAAa,UAAU;IACT,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,WAAW;gBAAnC,MAAM,EAAE,MAAM,EAAU,WAAW,EAAE,WAAW;WAEvD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE;IAWjE,uBAAuB,CAAC,WAAW,EAAE,iBAAiB;;;IAKtD,eAAe,CAAC,MAAM,EAAE,iBAAiB;;;IAY/C,kBAAkB,CAAC,OAAO,EAAE,iBAAiB;;;IAMvC,UAAU,CAAC,MAAM,EAAE,iBAAiB;;;IAKpC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,EAAE,iBAAiB;;;IAyBnG,kBAAkB,CACtB,eAAe,EAAE,iBAAiB,EAClC,gBAAgB,EAAE,iBAAiB,EACnC,MAAM,EAAE,gBAAgB;;;IAmBpB,aAAa,CAAC,MAAM,EAAE,iBAAiB;;;IAgBvC,UAAU,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,EAAE,iBAAiB;;;IAkB7G,qBAAqB;;;IAKf,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB;;;IAKzE,qBAAqB,CACzB,OAAO,EAAE,iBAAiB,EAC1B,gBAAgB,EAAE,iBAAiB,EACnC,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,gBAAgB;;;IAalB,sBAAsB,CAC1B,qBAAqB,EAAE,iBAAiB,EACxC,gBAAgB,EAAE,iBAAiB,EACnC,QAAQ,EAAE,iBAAiB,EAC3B,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,iBAAiB;;;IAqBjC,cAAc;;;IAIR,kBAAkB;;;IAKlB,cAAc;;;IAMd,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB;;;IAK1E,sBAAsB,CAAC,IAAI,EAAE,iBAAiB;;;IAMpD,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB;;;IASlF,WAAW,CACf,eAAe,EAAE,iBAAiB,EAClC,gBAAgB,EAAE,iBAAiB,EACnC,WAAW,EAAE,iBAAiB,EAC9B,gBAAgB,EAAE,iBAAiB;;;IAW/B,YAAY,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB;;;IAK1E,wBAAwB,CAAC,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB;;;IAWpF,QAAQ,CACZ,WAAW,EAAE,iBAAiB,EAC9B,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EAAE,gBAAgB,EACjC,eAAe,EAAE,gBAAgB,EACjC,eAAe,EAAE,gBAAgB,EACjC,YAAY,EAAE,gBAAgB,EAC9B,iBAAiB,EAAE,gBAAgB,EACnC,aAAa,EAAE,gBAAgB,EAC/B,aAAa,EAAE,gBAAgB,EAC/B,aAAa,EAAE,gBAAgB,EAC/B,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,iBAAiB;;;IA8C/B,iBAAiB,CACf,WAAW,EAAE,iBAAiB,EAC9B,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,iBAAiB;;;IAYtB,mBAAmB,CACvB,cAAc,EAAE,iBAAiB,EACjC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,iBAAiB;;;IAUtB,sBAAsB,CAAC,cAAc,EAAE,iBAAiB;;;IAKxD,oBAAoB,CAAC,cAAc,EAAE,iBAAiB;;;IAKtD,mBAAmB,CAAC,OAAO,EAAE,iBAAiB;;;IAa9C,8BAA8B,CAAC,OAAO,EAAE,iBAAiB;;;IAMzD,uBAAuB,CAAC,OAAO,EAAE,iBAAiB;;;IAKlD,mBAAmB,CACvB,qBAAqB,EAAE,iBAAiB,EACxC,gBAAgB,EAAE,iBAAiB,EACnC,QAAQ,EAAE,iBAAiB,EAC3B,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,iBAAiB;;;IAY3B,6BAA6B,CAAC,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB;;;IAS1F,cAAc,CAAC,WAAW,EAAE,iBAAiB;;;IAS7C,yBAAyB,CAC7B,qBAAqB,EAAE,iBAAiB,EACxC,gBAAgB,EAAE,iBAAiB,EACnC,QAAQ,EAAE,iBAAiB,EAC3B,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,iBAAiB;;;IAYpB,6BAA6B,CACxC,qBAAqB,EAAE,iBAAiB,EACxC,gBAAgB,EAAE,iBAAiB,EACnC,QAAQ,EAAE,iBAAiB,EAC3B,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,iBAAiB;;;IAY1B,uCAAuC,CAAC,8BAA8B,EAAE,iBAAiB;IAI1F,UAAU;;;IAIV,UAAU;;;IAIV,cAAc,CAAC,WAAW,EAAE,iBAAiB;;;IAQ7C,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB;;;IAa5G,gCAAgC,CAAC,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB;;;IAU7F,+BAA+B,CAAC,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB;;;IAQvF,SAAS;;;IAKT,YAAY,CAAC,eAAe,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAgB;;;IASnG,WAAW,CAAC,eAAe,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB;;;IAgBjG,aAAa,CAAC,eAAe,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB;;;IAKzE,WAAW,CACf,eAAe,EAAE,iBAAiB,EAClC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,iBAAiB;;;IAazB,aAAa,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB;;;IAYhG,2BAA2B,CAAC,QAAQ,EAAE,gBAAgB;;;IAKhD,oBAAoB,CAAC,IAAI,EAAE,iBAAiB;;;IAK5C,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB;;;IAKvE,oCAAoC,CAAC,OAAO,EAAE,iBAAiB;;;IAS/D,mCAAmC,CAAC,OAAO,EAAE,iBAAiB;;;IAS9D,8CAA8C,CAAC,OAAO,EAAE,iBAAiB;;;IAS/E,eAAe;;;IAKT,sBAAsB,CAAC,SAAS,EAAE,iBAAiB;;;IAKnD,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB;;;IAKjD,wBAAwB,CAAC,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB;;;IAQ5F,gBAAgB;;;IAKhB,oBAAoB;;;IAK1B,qBAAqB;;;IAKf,gBAAgB;;;IAKhB,gBAAgB;;;IAKtB,uBAAuB;;;IAKvB,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB;;;IAS1E,aAAa,CACjB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,gBAAgB;;;IAyBlB,mBAAmB,CACvB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,gBAAgB;;;IAyBxB,oBAAoB;;;CAIrB"}
1
+ {"version":3,"file":"txe_service.d.ts","sourceRoot":"","sources":["../../src/txe_service/txe_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,2BAA2B,EAAa,MAAM,iBAAiB,CAAC;AAE9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,KAAK,gBAAgB,EAAkC,MAAM,mBAAmB,CAAC;AAU1F,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAYvB,MAAM,qBAAqB,CAAC;AAG7B,qBAAa,UAAU;IACT,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,WAAW;gBAAnC,MAAM,EAAE,MAAM,EAAU,WAAW,EAAE,WAAW;WAEvD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE;IAWjE,uBAAuB,CAAC,WAAW,EAAE,iBAAiB;;;IAKtD,eAAe,CAAC,MAAM,EAAE,iBAAiB;;;IAY/C,kBAAkB,CAAC,OAAO,EAAE,iBAAiB;;;IAMvC,UAAU,CAAC,MAAM,EAAE,iBAAiB;;;IAKpC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,EAAE,iBAAiB;;;IAyBnG,kBAAkB,CACtB,eAAe,EAAE,iBAAiB,EAClC,gBAAgB,EAAE,iBAAiB,EACnC,MAAM,EAAE,gBAAgB;;;IAmBpB,aAAa,CAAC,MAAM,EAAE,iBAAiB;;;IAgBvC,UAAU,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,EAAE,iBAAiB;;;IAkB7G,qBAAqB;;;IAKf,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB;;;IAKzE,qBAAqB,CACzB,OAAO,EAAE,iBAAiB,EAC1B,gBAAgB,EAAE,iBAAiB,EACnC,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,gBAAgB;;;IAalB,sBAAsB,CAC1B,qBAAqB,EAAE,iBAAiB,EACxC,gBAAgB,EAAE,iBAAiB,EACnC,QAAQ,EAAE,iBAAiB,EAC3B,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,iBAAiB;;;IAqBjC,cAAc;;;IAIR,kBAAkB;;;IAKlB,cAAc;;;IAMd,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB;;;IAK1E,sBAAsB,CAAC,IAAI,EAAE,iBAAiB;;;IAMpD,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB;;;IASlF,WAAW,CACf,eAAe,EAAE,iBAAiB,EAClC,gBAAgB,EAAE,iBAAiB,EACnC,WAAW,EAAE,iBAAiB,EAC9B,gBAAgB,EAAE,iBAAiB;;;IAW/B,YAAY,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB;;;IAK1E,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB;;;IAWhF,QAAQ,CACZ,WAAW,EAAE,iBAAiB,EAC9B,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EAAE,gBAAgB,EACjC,eAAe,EAAE,gBAAgB,EACjC,eAAe,EAAE,gBAAgB,EACjC,YAAY,EAAE,gBAAgB,EAC9B,iBAAiB,EAAE,gBAAgB,EACnC,aAAa,EAAE,gBAAgB,EAC/B,aAAa,EAAE,gBAAgB,EAC/B,aAAa,EAAE,gBAAgB,EAC/B,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,iBAAiB;;;IA8C/B,iBAAiB,CACf,WAAW,EAAE,iBAAiB,EAC9B,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,iBAAiB;;;IAYtB,mBAAmB,CACvB,cAAc,EAAE,iBAAiB,EACjC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,iBAAiB;;;IAUtB,sBAAsB,CAAC,cAAc,EAAE,iBAAiB;;;IAKxD,oBAAoB,CAAC,cAAc,EAAE,iBAAiB;;;IAKtD,mBAAmB,CAAC,OAAO,EAAE,iBAAiB;;;IAa9C,8BAA8B,CAAC,OAAO,EAAE,iBAAiB;;;IAMzD,uBAAuB,CAAC,OAAO,EAAE,iBAAiB;;;IAKlD,mBAAmB,CACvB,qBAAqB,EAAE,iBAAiB,EACxC,gBAAgB,EAAE,iBAAiB,EACnC,QAAQ,EAAE,iBAAiB,EAC3B,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,iBAAiB;;;IAY3B,6BAA6B,CAAC,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB;;;IAS1F,cAAc,CAAC,WAAW,EAAE,iBAAiB;;;IAS7C,yBAAyB,CAC7B,qBAAqB,EAAE,iBAAiB,EACxC,gBAAgB,EAAE,iBAAiB,EACnC,QAAQ,EAAE,iBAAiB,EAC3B,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,iBAAiB;;;IAYpB,6BAA6B,CACxC,qBAAqB,EAAE,iBAAiB,EACxC,gBAAgB,EAAE,iBAAiB,EACnC,QAAQ,EAAE,iBAAiB,EAC3B,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,iBAAiB;;;IAY1B,uCAAuC,CAAC,8BAA8B,EAAE,iBAAiB;IAI1F,UAAU;;;IAIV,UAAU;;;IAIV,cAAc,CAAC,WAAW,EAAE,iBAAiB;;;IAQ7C,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB;;;IAa5G,gCAAgC,CAAC,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB;;;IAU7F,+BAA+B,CAAC,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB;;;IAQvF,SAAS;;;IAKF,WAAW,CACtB,eAAe,EAAE,iBAAiB,EAClC,WAAW,EAAE,iBAAiB,EAC9B,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,gBAAgB,EACzB,aAAa,EAAE,iBAAiB,EAChC,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,iBAAiB;;;IAgBxB,WAAW,CAAC,GAAG,EAAE,iBAAiB;;;IAWlC,YAAY,CAAC,eAAe,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAgB;;;IASnG,WAAW,CAAC,eAAe,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB;;;IAgBjG,aAAa,CAAC,eAAe,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB;;;IAKzE,WAAW,CACf,eAAe,EAAE,iBAAiB,EAClC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,iBAAiB;;;IAgBzB,aAAa,CACjB,qBAAqB,EAAE,gBAAgB,EACvC,gBAAgB,EAAE,iBAAiB,EACnC,EAAE,EAAE,gBAAgB,EACpB,MAAM,EAAE,gBAAgB;;;IAWpB,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,gBAAgB;;;IAUzE,2BAA2B,CAAC,QAAQ,EAAE,gBAAgB;;;IAKhD,oBAAoB,CAAC,IAAI,EAAE,iBAAiB;;;IAK5C,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB;;;IAKvE,oCAAoC,CAAC,OAAO,EAAE,iBAAiB;;;IAS/D,mCAAmC,CAAC,OAAO,EAAE,iBAAiB;;;IAS9D,8CAA8C,CAAC,OAAO,EAAE,iBAAiB;;;IAS/E,eAAe;;;IAKT,sBAAsB,CAAC,SAAS,EAAE,iBAAiB;;;IAKnD,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB;;;IAKjD,wBAAwB,CAAC,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB;;;IAQ5F,gBAAgB;;;IAKhB,oBAAoB;;;IAK1B,qBAAqB;;;IAKf,gBAAgB;;;IAKhB,gBAAgB;;;IAKtB,uBAAuB;;;IAKvB,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB;;;IAS1E,aAAa,CACjB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,gBAAgB;;;IAyBlB,mBAAmB,CACvB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,gBAAgB;;;IAyBxB,oBAAoB;;;CAIrB"}
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/aztec.js';
1
+ import { Fr, Point } from '@aztec/aztec.js';
2
2
  import { DEPLOYER_CONTRACT_ADDRESS } from '@aztec/constants';
3
3
  import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
4
4
  import { enrichPublicSimulationError } from '@aztec/pxe/server';
@@ -8,9 +8,10 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
8
8
  import { computePartialAddress } from '@aztec/stdlib/contract';
9
9
  import { SimulationError } from '@aztec/stdlib/errors';
10
10
  import { computePublicDataTreeLeafSlot, siloNullifier } from '@aztec/stdlib/hash';
11
+ import { LogWithTxData } from '@aztec/stdlib/logs';
11
12
  import { MerkleTreeId } from '@aztec/stdlib/trees';
12
13
  import { TXE } from '../oracle/txe_oracle.js';
13
- import { addressFromSingle, arrayToBoundedVec, bufferToU8Array, fromArray, fromSingle, fromUintArray, toArray, toForeignCallResult, toSingle } from '../util/encoding.js';
14
+ import { addressFromSingle, arrayToBoundedVec, bufferToU8Array, fromArray, fromSingle, fromUintArray, fromUintBoundedVec, toArray, toForeignCallResult, toSingle, toSingleOrArray } from '../util/encoding.js';
14
15
  import { ExpectedFailureError } from '../util/expected_failure_error.js';
15
16
  export class TXEService {
16
17
  logger;
@@ -202,16 +203,14 @@ export class TXEService {
202
203
  toArray(newValues)
203
204
  ]);
204
205
  }
205
- async getPublicDataTreeWitness(blockNumber, leafSlot) {
206
+ async getPublicDataWitness(blockNumber, leafSlot) {
206
207
  const parsedBlockNumber = fromSingle(blockNumber).toNumber();
207
208
  const parsedLeafSlot = fromSingle(leafSlot);
208
- const witness = await this.typedOracle.getPublicDataTreeWitness(parsedBlockNumber, parsedLeafSlot);
209
+ const witness = await this.typedOracle.getPublicDataWitness(parsedBlockNumber, parsedLeafSlot);
209
210
  if (!witness) {
210
211
  throw new Error(`Public data witness not found for slot ${parsedLeafSlot} at block ${parsedBlockNumber}.`);
211
212
  }
212
- return toForeignCallResult([
213
- toArray(witness.toFields())
214
- ]);
213
+ return toForeignCallResult(witness.toNoirRepresentation());
215
214
  }
216
215
  async getNotes(storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status, returnSize) {
217
216
  const noteDatas = await this.typedOracle.getNotes(fromSingle(storageSlot), fromSingle(numSelects).toNumber(), fromArray(selectByIndexes).map((fr)=>fr.toNumber()), fromArray(selectByOffsets).map((fr)=>fr.toNumber()), fromArray(selectByLengths).map((fr)=>fr.toNumber()), fromArray(selectValues), fromArray(selectComparators).map((fr)=>fr.toNumber()), fromArray(sortByIndexes).map((fr)=>fr.toNumber()), fromArray(sortByOffsets).map((fr)=>fr.toNumber()), fromArray(sortByLengths).map((fr)=>fr.toNumber()), fromArray(sortOrder).map((fr)=>fr.toNumber()), fromSingle(limit).toNumber(), fromSingle(offset).toNumber(), fromSingle(status).toNumber());
@@ -249,21 +248,15 @@ export class TXEService {
249
248
  }
250
249
  notifyCreatedNote(storageSlot, noteTypeId, note, noteHash, counter) {
251
250
  this.typedOracle.notifyCreatedNote(fromSingle(storageSlot), NoteSelector.fromField(fromSingle(noteTypeId)), fromArray(note), fromSingle(noteHash), fromSingle(counter).toNumber());
252
- return toForeignCallResult([
253
- toSingle(new Fr(0))
254
- ]);
251
+ return toForeignCallResult([]);
255
252
  }
256
253
  async notifyNullifiedNote(innerNullifier, noteHash, counter) {
257
254
  await this.typedOracle.notifyNullifiedNote(fromSingle(innerNullifier), fromSingle(noteHash), fromSingle(counter).toNumber());
258
- return toForeignCallResult([
259
- toSingle(new Fr(0))
260
- ]);
255
+ return toForeignCallResult([]);
261
256
  }
262
257
  async notifyCreatedNullifier(innerNullifier) {
263
258
  await this.typedOracle.notifyCreatedNullifier(fromSingle(innerNullifier));
264
- return toForeignCallResult([
265
- toSingle(new Fr(0))
266
- ]);
259
+ return toForeignCallResult([]);
267
260
  }
268
261
  async checkNullifierExists(innerNullifier) {
269
262
  const exists = await this.typedOracle.checkNullifierExists(fromSingle(innerNullifier));
@@ -274,14 +267,12 @@ export class TXEService {
274
267
  async getContractInstance(address) {
275
268
  const instance = await this.typedOracle.getContractInstance(addressFromSingle(address));
276
269
  return toForeignCallResult([
277
- toArray([
278
- instance.salt,
279
- instance.deployer.toField(),
280
- instance.currentContractClassId,
281
- instance.initializationHash,
282
- ...instance.publicKeys.toFields()
283
- ])
284
- ]);
270
+ instance.salt,
271
+ instance.deployer.toField(),
272
+ instance.currentContractClassId,
273
+ instance.initializationHash,
274
+ ...instance.publicKeys.toFields()
275
+ ].map(toSingle));
285
276
  }
286
277
  async getPublicKeysAndPartialAddress(address) {
287
278
  const parsedAddress = addressFromSingle(address);
@@ -295,9 +286,7 @@ export class TXEService {
295
286
  }
296
287
  async getKeyValidationRequest(pkMHash) {
297
288
  const keyValidationRequest = await this.typedOracle.getKeyValidationRequest(fromSingle(pkMHash));
298
- return toForeignCallResult([
299
- toArray(keyValidationRequest.toFields())
300
- ]);
289
+ return toForeignCallResult(keyValidationRequest.toFields().map(toSingle));
301
290
  }
302
291
  async callPrivateFunction(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall) {
303
292
  const result = await this.typedOracle.callPrivateFunction(addressFromSingle(targetContractAddress), FunctionSelector.fromField(fromSingle(functionSelector)), fromSingle(argsHash), fromSingle(sideEffectCounter).toNumber(), fromSingle(isStaticCall).toBool());
@@ -314,9 +303,7 @@ export class TXEService {
314
303
  if (!witness) {
315
304
  throw new Error(`Nullifier membership witness not found at block ${parsedBlockNumber}.`);
316
305
  }
317
- return toForeignCallResult([
318
- toArray(witness.toFields())
319
- ]);
306
+ return toForeignCallResult(witness.toNoirRepresentation());
320
307
  }
321
308
  async getAuthWitness(messageHash) {
322
309
  const parsedMessageHash = fromSingle(messageHash);
@@ -358,9 +345,7 @@ export class TXEService {
358
345
  if (!header) {
359
346
  throw new Error(`Block header not found for block ${blockNumber}.`);
360
347
  }
361
- return toForeignCallResult([
362
- toArray(header.toFields())
363
- ]);
348
+ return toForeignCallResult(header.toFields().map(toSingle));
364
349
  }
365
350
  async getMembershipWitness(blockNumber, treeId, leafValue) {
366
351
  const parsedBlockNumber = fromSingle(blockNumber).toNumber();
@@ -371,7 +356,8 @@ export class TXEService {
371
356
  throw new Error(`Membership witness in tree ${MerkleTreeId[parsedTreeId]} not found for value ${parsedLeafValue} at block ${parsedBlockNumber}.`);
372
357
  }
373
358
  return toForeignCallResult([
374
- toArray(witness)
359
+ toSingle(witness[0]),
360
+ toArray(witness.slice(1))
375
361
  ]);
376
362
  }
377
363
  async getLowNullifierMembershipWitness(blockNumber, nullifier) {
@@ -380,9 +366,7 @@ export class TXEService {
380
366
  if (!witness) {
381
367
  throw new Error(`Low nullifier witness not found for nullifier ${nullifier} at block ${parsedBlockNumber}.`);
382
368
  }
383
- return toForeignCallResult([
384
- toArray(witness.toFields())
385
- ]);
369
+ return toForeignCallResult(witness.toNoirRepresentation());
386
370
  }
387
371
  async getIndexedTaggingSecretAsSender(sender, recipient) {
388
372
  const secret = await this.typedOracle.getIndexedTaggingSecretAsSender(AztecAddress.fromField(fromSingle(sender)), AztecAddress.fromField(fromSingle(recipient)));
@@ -394,6 +378,27 @@ export class TXEService {
394
378
  await this.typedOracle.syncNotes();
395
379
  return toForeignCallResult([]);
396
380
  }
381
+ async deliverNote(contractAddress, storageSlot, nonce, content, contentLength, noteHash, nullifier, txHash, recipient) {
382
+ await this.typedOracle.deliverNote(AztecAddress.fromField(fromSingle(contractAddress)), fromSingle(storageSlot), fromSingle(nonce), fromArray(content.slice(0, Number(BigInt(contentLength)))), fromSingle(noteHash), fromSingle(nullifier), fromSingle(txHash), AztecAddress.fromField(fromSingle(recipient)));
383
+ return toForeignCallResult([
384
+ toSingle(Fr.ONE)
385
+ ]);
386
+ }
387
+ async getLogByTag(tag) {
388
+ // TODO(AD): this was warning that getLogByTag did not return a promise.
389
+ const log = await Promise.resolve(this.typedOracle.getLogByTag(fromSingle(tag)));
390
+ if (log == null) {
391
+ return toForeignCallResult([
392
+ toSingle(Fr.ZERO),
393
+ ...LogWithTxData.noirSerializationOfEmpty().map(toSingleOrArray)
394
+ ]);
395
+ } else {
396
+ return toForeignCallResult([
397
+ toSingle(Fr.ONE),
398
+ ...log.toNoirSerialization().map(toSingleOrArray)
399
+ ]);
400
+ }
401
+ }
397
402
  async storeCapsule(contractAddress, slot, capsule) {
398
403
  await this.typedOracle.storeCapsule(AztecAddress.fromField(fromSingle(contractAddress)), fromSingle(slot), fromArray(capsule));
399
404
  return toForeignCallResult([]);
@@ -424,13 +429,20 @@ export class TXEService {
424
429
  await this.typedOracle.copyCapsule(AztecAddress.fromField(fromSingle(contractAddress)), fromSingle(srcSlot), fromSingle(dstSlot), fromSingle(numEntries).toNumber());
425
430
  return toForeignCallResult([]);
426
431
  }
427
- // TODO: I forgot to add a corresponding function here, when I introduced an oracle method to txe_oracle.ts. The compiler didn't throw an error, so it took me a while to learn of the existence of this file, and that I need to implement this function here. Isn't there a way to programmatically identify that this is missing, given the existence of a txe_oracle method?
428
- async aes128Decrypt(ciphertext, iv, symKey) {
429
- const ciphertextBuffer = fromUintArray(ciphertext, 8);
432
+ // TODO: I forgot to add a corresponding function here, when I introduced an oracle method to txe_oracle.ts.
433
+ // The compiler didn't throw an error, so it took me a while to learn of the existence of this file, and that I need
434
+ // to implement this function here. Isn't there a way to programmatically identify that this is missing, given the
435
+ // existence of a txe_oracle method?
436
+ async aes128Decrypt(ciphertextBVecStorage, ciphertextLength, iv, symKey) {
437
+ const ciphertext = fromUintBoundedVec(ciphertextBVecStorage, ciphertextLength, 8);
430
438
  const ivBuffer = fromUintArray(iv, 8);
431
439
  const symKeyBuffer = fromUintArray(symKey, 8);
432
- const plaintextBuffer = await this.typedOracle.aes128Decrypt(ciphertextBuffer, ivBuffer, symKeyBuffer);
433
- return toForeignCallResult(arrayToBoundedVec(bufferToU8Array(plaintextBuffer), ciphertextBuffer.length));
440
+ const plaintextBuffer = await this.typedOracle.aes128Decrypt(ciphertext, ivBuffer, symKeyBuffer);
441
+ return toForeignCallResult(arrayToBoundedVec(bufferToU8Array(plaintextBuffer), ciphertextBVecStorage.length));
442
+ }
443
+ async getSharedSecret(address, ephPk) {
444
+ const secret = await this.typedOracle.getSharedSecret(AztecAddress.fromField(fromSingle(address)), Point.fromFields(fromArray(ephPk)));
445
+ return toForeignCallResult(secret.toFields().map(toSingle));
434
446
  }
435
447
  // AVM opcodes
436
448
  avmOpcodeEmitUnencryptedLog(_message) {
@@ -17,21 +17,32 @@ export declare function fromArray(obj: ForeignCallArray): Fr[];
17
17
  /**
18
18
  * Converts an array of Noir unsigned integers to a single tightly-packed buffer.
19
19
  * @param uintBitSize If it's an array of Noir u8's, put `8`, etc.
20
- * @returns
20
+ * @returns A buffer where each byte is correctly represented as a single byte in the buffer.
21
21
  */
22
22
  export declare function fromUintArray(obj: ForeignCallArray, uintBitSize: number): Buffer;
23
+ /**
24
+ * Converts a Noir BoundedVec of unsigned integers into a Buffer. Note that BoundedVecs are structs, and therefore
25
+ * translated as two separate ForeignCallArray and ForeignCallSingle values (an array and a single field).
26
+ *
27
+ * @param storage The array with the BoundedVec's storage (i.e. BoundedVec::storage())
28
+ * @param length The length of the BoundedVec (i.e. BoundedVec::len())
29
+ * @param uintBitSize If it's an array of Noir u8's, put `8`, etc.
30
+ * @returns A buffer containing the unsigned integers tightly packed
31
+ */
32
+ export declare function fromUintBoundedVec(storage: ForeignCallArray, length: ForeignCallSingle, uintBitSize: number): Buffer;
23
33
  export declare function toSingle(obj: Fr | AztecAddress): ForeignCallSingle;
24
34
  export declare function toArray(objs: Fr[]): ForeignCallArray;
35
+ export declare function toSingleOrArray(value: Fr | Fr[]): string | string[];
25
36
  export declare function bufferToU8Array(buffer: Buffer): ForeignCallArray;
26
37
  /**
27
38
  * Converts a ForeignCallArray into a tuple which represents a nr BoundedVec.
28
39
  * If the input array is shorter than the maxLen, it pads the result with zeros,
29
40
  * so that nr can correctly coerce this result into a BoundedVec.
30
- * @param array
41
+ * @param bVecStorage - The array underlying the BoundedVec.
31
42
  * @param maxLen - the max length of the BoundedVec.
32
43
  * @returns a tuple representing a BoundedVec.
33
44
  */
34
- export declare function arrayToBoundedVec(array: ForeignCallArray, maxLen: number): [ForeignCallArray, ForeignCallSingle];
45
+ export declare function arrayToBoundedVec(bVecStorage: ForeignCallArray, maxLen: number): [ForeignCallArray, ForeignCallSingle];
35
46
  export declare function toForeignCallResult(obj: (ForeignCallSingle | ForeignCallArray)[]): {
36
47
  values: (string | ForeignCallArray)[];
37
48
  };
@@ -1 +1 @@
1
- {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/util/encoding.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,KAAK,gBAAgB,EAA0B,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,KAAK,2BAA2B,EAAqC,MAAM,wBAAwB,CAAC;AAE7G,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC,MAAM,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC;AAExC,MAAM,MAAM,eAAe,GAAG,CAAC,iBAAiB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,2BAA2B,CAAC,EAAE,CAAC;AAExH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;CAClD,CAAC;AAEF,wBAAgB,UAAU,CAAC,GAAG,EAAE,iBAAiB,MAEhD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,gBAEvD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,gBAAgB,QAE9C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAMhF;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,YAAY,GAAG,iBAAiB,CAElE;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAEpD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAEhE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAYhH;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE;;EAEhF;AAED,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAElD,eAAO,MAAM,sBAAsB,iCAAsB,CAAC;AAE1D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAEjC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAC"}
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/util/encoding.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,KAAK,gBAAgB,EAA0B,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,KAAK,2BAA2B,EAAqC,MAAM,wBAAwB,CAAC;AAE7G,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC,MAAM,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC;AAExC,MAAM,MAAM,eAAe,GAAG,CAAC,iBAAiB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,2BAA2B,CAAC,EAAE,CAAC;AAExH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;CAClD,CAAC;AAEF,wBAAgB,UAAU,CAAC,GAAG,EAAE,iBAAiB,MAEhD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,gBAEvD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,gBAAgB,QAE9C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAMhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAOpH;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,YAAY,GAAG,iBAAiB,CAElE;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAEpD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,qBAE/C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAEhE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,gBAAgB,EAC7B,MAAM,EAAE,MAAM,GACb,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAYvC;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE;;EAEhF;AAED,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAElD,eAAO,MAAM,sBAAsB,iCAAsB,CAAC;AAE1D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAEjC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAC"}
@@ -16,7 +16,7 @@ export function fromArray(obj) {
16
16
  /**
17
17
  * Converts an array of Noir unsigned integers to a single tightly-packed buffer.
18
18
  * @param uintBitSize If it's an array of Noir u8's, put `8`, etc.
19
- * @returns
19
+ * @returns A buffer where each byte is correctly represented as a single byte in the buffer.
20
20
  */ export function fromUintArray(obj, uintBitSize) {
21
21
  if (uintBitSize % 8 !== 0) {
22
22
  throw new Error(`u${uintBitSize} is not a supported type in Noir`);
@@ -24,12 +24,31 @@ export function fromArray(obj) {
24
24
  const uintByteSize = uintBitSize / 8;
25
25
  return Buffer.concat(obj.map((str)=>hexToBuffer(str).slice(-uintByteSize)));
26
26
  }
27
+ /**
28
+ * Converts a Noir BoundedVec of unsigned integers into a Buffer. Note that BoundedVecs are structs, and therefore
29
+ * translated as two separate ForeignCallArray and ForeignCallSingle values (an array and a single field).
30
+ *
31
+ * @param storage The array with the BoundedVec's storage (i.e. BoundedVec::storage())
32
+ * @param length The length of the BoundedVec (i.e. BoundedVec::len())
33
+ * @param uintBitSize If it's an array of Noir u8's, put `8`, etc.
34
+ * @returns A buffer containing the unsigned integers tightly packed
35
+ */ export function fromUintBoundedVec(storage, length, uintBitSize) {
36
+ if (uintBitSize % 8 !== 0) {
37
+ throw new Error(`u${uintBitSize} is not a supported type in Noir`);
38
+ }
39
+ const uintByteSize = uintBitSize / 8;
40
+ const boundedStorage = storage.slice(0, fromSingle(length).toNumber());
41
+ return Buffer.concat(boundedStorage.map((str)=>hexToBuffer(str).slice(-uintByteSize)));
42
+ }
27
43
  export function toSingle(obj) {
28
44
  return obj.toString().slice(2);
29
45
  }
30
46
  export function toArray(objs) {
31
47
  return objs.map((obj)=>obj.toString());
32
48
  }
49
+ export function toSingleOrArray(value) {
50
+ return Array.isArray(value) ? value.map(toSingle) : toSingle(value);
51
+ }
33
52
  export function bufferToU8Array(buffer) {
34
53
  return toArray(Array.from(buffer).map((byte)=>new Fr(byte)));
35
54
  }
@@ -37,19 +56,19 @@ export function bufferToU8Array(buffer) {
37
56
  * Converts a ForeignCallArray into a tuple which represents a nr BoundedVec.
38
57
  * If the input array is shorter than the maxLen, it pads the result with zeros,
39
58
  * so that nr can correctly coerce this result into a BoundedVec.
40
- * @param array
59
+ * @param bVecStorage - The array underlying the BoundedVec.
41
60
  * @param maxLen - the max length of the BoundedVec.
42
61
  * @returns a tuple representing a BoundedVec.
43
- */ export function arrayToBoundedVec(array, maxLen) {
44
- if (array.length > maxLen) {
45
- throw new Error(`Array of length ${array.length} larger than maxLen ${maxLen}`);
62
+ */ export function arrayToBoundedVec(bVecStorage, maxLen) {
63
+ if (bVecStorage.length > maxLen) {
64
+ throw new Error(`Array of length ${bVecStorage.length} larger than maxLen ${maxLen}`);
46
65
  }
47
- const lengthDiff = maxLen - array.length;
66
+ const lengthDiff = maxLen - bVecStorage.length;
48
67
  // We pad the array to the maxLen of the BoundedVec.
49
68
  const zeroPaddingArray = toArray(Array(lengthDiff).fill(new Fr(0)));
50
69
  // These variable names match with the BoundedVec members in nr:
51
- const storage = array.concat(zeroPaddingArray);
52
- const len = toSingle(new Fr(array.length));
70
+ const storage = bVecStorage.concat(zeroPaddingArray);
71
+ const len = toSingle(new Fr(bVecStorage.length));
53
72
  return [
54
73
  storage,
55
74
  len
@@ -1,12 +1,11 @@
1
1
  import { Fr } from '@aztec/foundation/fields';
2
2
  import { type ContractArtifact, FunctionSelector } from '@aztec/stdlib/abi';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
- import { type ContractClassPublic, type ContractDataSource, type ContractInstanceWithAddress, type PublicFunction } from '@aztec/stdlib/contract';
4
+ import { type ContractClassPublic, type ContractDataSource, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
5
5
  import type { TXE } from '../oracle/txe_oracle.js';
6
6
  export declare class TXEPublicContractDataSource implements ContractDataSource {
7
7
  private txeOracle;
8
8
  constructor(txeOracle: TXE);
9
- getPublicFunction(address: AztecAddress, selector: FunctionSelector): Promise<PublicFunction | undefined>;
10
9
  getBlockNumber(): Promise<number>;
11
10
  getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
12
11
  getBytecodeCommitment(id: Fr): Promise<Fr | undefined>;
@@ -15,6 +14,5 @@ export declare class TXEPublicContractDataSource implements ContractDataSource {
15
14
  getContractArtifact(address: AztecAddress): Promise<ContractArtifact | undefined>;
16
15
  getContractFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
17
16
  registerContractFunctionSignatures(_address: AztecAddress, _signatures: []): Promise<void>;
18
- addContractClass(_contractClass: ContractClassPublic): Promise<void>;
19
17
  }
20
18
  //# sourceMappingURL=txe_public_contract_data_source.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"txe_public_contract_data_source.d.ts","sourceRoot":"","sources":["../../src/util/txe_public_contract_data_source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAChC,KAAK,cAAc,EAEpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAEnD,qBAAa,2BAA4B,YAAW,kBAAkB;IACxD,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,GAAG;IAE5B,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAQ/G,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3B,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IA0BlE,qBAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAKtD,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAK1F,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAI9B,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAKjF,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgB7G,kCAAkC,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1F,gBAAgB,CAAC,cAAc,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAIrE"}
1
+ {"version":3,"file":"txe_public_contract_data_source.d.ts","sourceRoot":"","sources":["../../src/util/txe_public_contract_data_source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAGjC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAEnD,qBAAa,2BAA4B,YAAW,kBAAkB;IACxD,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,GAAG;IAElC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3B,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IA0BlE,qBAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAKtD,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAK1F,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAI9B,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAKjF,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgB7G,kCAAkC,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3F"}
@@ -8,16 +8,6 @@ export class TXEPublicContractDataSource {
8
8
  constructor(txeOracle){
9
9
  this.txeOracle = txeOracle;
10
10
  }
11
- async getPublicFunction(address, selector) {
12
- const bytecode = await this.txeOracle.getContractDataProvider().getBytecode(address, selector);
13
- if (!bytecode) {
14
- return undefined;
15
- }
16
- return {
17
- bytecode,
18
- selector
19
- };
20
- }
21
11
  getBlockNumber() {
22
12
  return this.txeOracle.getBlockNumber();
23
13
  }
@@ -80,9 +70,4 @@ export class TXEPublicContractDataSource {
80
70
  registerContractFunctionSignatures(_address, _signatures) {
81
71
  return Promise.resolve();
82
72
  }
83
- // TODO(#10007): Remove this method.
84
- addContractClass(_contractClass) {
85
- // We don't really need to do anything for the txe here
86
- return Promise.resolve();
87
- }
88
73
  }
@@ -1,14 +1,13 @@
1
1
  import { Fr } from '@aztec/foundation/fields';
2
- import { WorldStateDB } from '@aztec/simulator/server';
2
+ import { PublicTreesDB } from '@aztec/simulator/server';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
- import type { ContractDataSource } from '@aztec/stdlib/contract';
5
4
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
6
5
  import type { TXE } from '../oracle/txe_oracle.js';
7
- export declare class TXEWorldStateDB extends WorldStateDB {
6
+ export declare class TXEPublicTreesDB extends PublicTreesDB {
8
7
  private merkleDb;
9
8
  private txe;
10
- constructor(merkleDb: MerkleTreeWriteOperations, dataSource: ContractDataSource, txe: TXE);
9
+ constructor(merkleDb: MerkleTreeWriteOperations, txe: TXE);
11
10
  storageRead(contract: AztecAddress, slot: Fr): Promise<Fr>;
12
11
  storageWrite(contract: AztecAddress, slot: Fr, newValue: Fr): Promise<void>;
13
12
  }
14
- //# sourceMappingURL=txe_world_state_db.d.ts.map
13
+ //# sourceMappingURL=txe_public_dbs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"txe_public_dbs.d.ts","sourceRoot":"","sources":["../../src/util/txe_public_dbs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAGjF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAEnD,qBAAa,gBAAiB,SAAQ,aAAa;IACrC,OAAO,CAAC,QAAQ;IAA6B,OAAO,CAAC,GAAG;gBAAhD,QAAQ,EAAE,yBAAyB,EAAU,GAAG,EAAE,GAAG;IAI1D,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAgB1D,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3F"}
@@ -1,13 +1,13 @@
1
1
  import { Fr } from '@aztec/foundation/fields';
2
- import { WorldStateDB } from '@aztec/simulator/server';
2
+ import { PublicTreesDB } from '@aztec/simulator/server';
3
3
  import { PublicDataWrite } from '@aztec/stdlib/avm';
4
4
  import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
5
5
  import { MerkleTreeId } from '@aztec/stdlib/trees';
6
- export class TXEWorldStateDB extends WorldStateDB {
6
+ export class TXEPublicTreesDB extends PublicTreesDB {
7
7
  merkleDb;
8
8
  txe;
9
- constructor(merkleDb, dataSource, txe){
10
- super(merkleDb, dataSource), this.merkleDb = merkleDb, this.txe = txe;
9
+ constructor(merkleDb, txe){
10
+ super(merkleDb), this.merkleDb = merkleDb, this.txe = txe;
11
11
  }
12
12
  async storageRead(contract, slot) {
13
13
  const leafSlot = (await computePublicDataTreeLeafSlot(contract, slot)).toBigInt();