@aztec/pxe 0.69.0-devnet → 0.69.1-devnet

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 (59) hide show
  1. package/dest/database/kv_pxe_database.d.ts +11 -7
  2. package/dest/database/kv_pxe_database.d.ts.map +1 -1
  3. package/dest/database/kv_pxe_database.js +36 -13
  4. package/dest/database/note_dao.d.ts +105 -0
  5. package/dest/database/note_dao.d.ts.map +1 -0
  6. package/dest/database/note_dao.js +123 -0
  7. package/dest/database/outgoing_note_dao.js +3 -3
  8. package/dest/database/pxe_database.d.ts +25 -9
  9. package/dest/database/pxe_database.d.ts.map +1 -1
  10. package/dest/database/pxe_database_test_suite.d.ts.map +1 -1
  11. package/dest/database/pxe_database_test_suite.js +68 -21
  12. package/dest/kernel_oracle/index.js +2 -2
  13. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +2 -2
  14. package/dest/kernel_prover/index.d.ts +0 -1
  15. package/dest/kernel_prover/index.d.ts.map +1 -1
  16. package/dest/kernel_prover/index.js +1 -2
  17. package/dest/kernel_prover/kernel_prover.d.ts +8 -2
  18. package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
  19. package/dest/kernel_prover/kernel_prover.js +32 -12
  20. package/dest/note_decryption_utils/brute_force_note_info.d.ts +1 -1
  21. package/dest/note_decryption_utils/brute_force_note_info.d.ts.map +1 -1
  22. package/dest/note_decryption_utils/brute_force_note_info.js +2 -3
  23. package/dest/note_decryption_utils/produce_note_daos.d.ts +3 -3
  24. package/dest/note_decryption_utils/produce_note_daos.d.ts.map +1 -1
  25. package/dest/note_decryption_utils/produce_note_daos.js +6 -6
  26. package/dest/note_decryption_utils/produce_note_daos_for_key.d.ts +1 -1
  27. package/dest/note_decryption_utils/produce_note_daos_for_key.d.ts.map +1 -1
  28. package/dest/note_decryption_utils/produce_note_daos_for_key.js +3 -3
  29. package/dest/pxe_service/pxe_service.d.ts +3 -2
  30. package/dest/pxe_service/pxe_service.d.ts.map +1 -1
  31. package/dest/pxe_service/pxe_service.js +34 -42
  32. package/dest/simulator_oracle/index.d.ts +18 -3
  33. package/dest/simulator_oracle/index.d.ts.map +1 -1
  34. package/dest/simulator_oracle/index.js +63 -37
  35. package/dest/utils/create_pxe_service.d.ts.map +1 -1
  36. package/dest/utils/create_pxe_service.js +3 -8
  37. package/package.json +14 -15
  38. package/src/database/kv_pxe_database.ts +46 -16
  39. package/src/database/{incoming_note_dao.ts → note_dao.ts} +65 -48
  40. package/src/database/outgoing_note_dao.ts +2 -2
  41. package/src/database/pxe_database.ts +27 -9
  42. package/src/database/pxe_database_test_suite.ts +86 -25
  43. package/src/kernel_oracle/index.ts +1 -1
  44. package/src/kernel_prover/hints/build_private_kernel_reset_private_inputs.ts +1 -1
  45. package/src/kernel_prover/index.ts +0 -2
  46. package/src/kernel_prover/kernel_prover.ts +41 -11
  47. package/src/note_decryption_utils/brute_force_note_info.ts +1 -1
  48. package/src/note_decryption_utils/produce_note_daos.ts +8 -6
  49. package/src/note_decryption_utils/produce_note_daos_for_key.ts +2 -0
  50. package/src/pxe_service/pxe_service.ts +42 -63
  51. package/src/simulator_oracle/index.ts +54 -24
  52. package/src/utils/create_pxe_service.ts +2 -8
  53. package/dest/database/incoming_note_dao.d.ts +0 -86
  54. package/dest/database/incoming_note_dao.d.ts.map +0 -1
  55. package/dest/database/incoming_note_dao.js +0 -110
  56. package/dest/kernel_prover/test/test_circuit_prover.d.ts +0 -20
  57. package/dest/kernel_prover/test/test_circuit_prover.d.ts.map +0 -1
  58. package/dest/kernel_prover/test/test_circuit_prover.js +0 -75
  59. package/src/kernel_prover/test/test_circuit_prover.ts +0 -122
@@ -1,86 +0,0 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
- import { type L1NotePayload, Note, TxHash } from '@aztec/circuit-types';
4
- import { AztecAddress, Fr, type PublicKey } from '@aztec/circuits.js';
5
- import { NoteSelector } from '@aztec/foundation/abi';
6
- import { BufferReader } from '@aztec/foundation/serialize';
7
- import { type NoteData } from '@aztec/simulator/acvm';
8
- import { type NoteInfo } from '../note_decryption_utils/index.js';
9
- /**
10
- * A note with contextual data which was decrypted as incoming.
11
- */
12
- export declare class IncomingNoteDao implements NoteData {
13
- /** The note as emitted from the Noir contract. */
14
- note: Note;
15
- /** The contract address this note is created in. */
16
- contractAddress: AztecAddress;
17
- /** The specific storage location of the note on the contract. */
18
- storageSlot: Fr;
19
- /** The note type identifier for the contract. */
20
- noteTypeId: NoteSelector;
21
- /** The hash of the tx the note was created in. */
22
- txHash: TxHash;
23
- /** The L2 block number in which the tx with this note was included. */
24
- l2BlockNumber: number;
25
- /** The L2 block hash in which the tx with this note was included. */
26
- l2BlockHash: string;
27
- /** The nonce of the note. */
28
- nonce: Fr;
29
- /**
30
- * A hash of the note. This is customizable by the app circuit.
31
- * We can use this value to compute siloedNoteHash and uniqueSiloedNoteHash.
32
- */
33
- noteHash: Fr;
34
- /**
35
- * The nullifier of the note (siloed by contract address).
36
- * Note: Might be set as 0 if the note was added to PXE as nullified.
37
- */
38
- siloedNullifier: Fr;
39
- /** The location of the relevant note in the note hash tree. */
40
- index: bigint;
41
- /** The public key with which the note was encrypted. */
42
- addressPoint: PublicKey;
43
- constructor(
44
- /** The note as emitted from the Noir contract. */
45
- note: Note,
46
- /** The contract address this note is created in. */
47
- contractAddress: AztecAddress,
48
- /** The specific storage location of the note on the contract. */
49
- storageSlot: Fr,
50
- /** The note type identifier for the contract. */
51
- noteTypeId: NoteSelector,
52
- /** The hash of the tx the note was created in. */
53
- txHash: TxHash,
54
- /** The L2 block number in which the tx with this note was included. */
55
- l2BlockNumber: number,
56
- /** The L2 block hash in which the tx with this note was included. */
57
- l2BlockHash: string,
58
- /** The nonce of the note. */
59
- nonce: Fr,
60
- /**
61
- * A hash of the note. This is customizable by the app circuit.
62
- * We can use this value to compute siloedNoteHash and uniqueSiloedNoteHash.
63
- */
64
- noteHash: Fr,
65
- /**
66
- * The nullifier of the note (siloed by contract address).
67
- * Note: Might be set as 0 if the note was added to PXE as nullified.
68
- */
69
- siloedNullifier: Fr,
70
- /** The location of the relevant note in the note hash tree. */
71
- index: bigint,
72
- /** The public key with which the note was encrypted. */
73
- addressPoint: PublicKey);
74
- static fromPayloadAndNoteInfo(note: Note, payload: L1NotePayload, noteInfo: NoteInfo, l2BlockNumber: number, l2BlockHash: string, dataStartIndexForTx: number, addressPoint: PublicKey): IncomingNoteDao;
75
- toBuffer(): Buffer;
76
- static fromBuffer(buffer: Buffer | BufferReader): IncomingNoteDao;
77
- toString(): string;
78
- static fromString(str: string): IncomingNoteDao;
79
- /**
80
- * Returns the size in bytes of the Note Dao.
81
- * @returns - Its size in bytes.
82
- */
83
- getSize(): number;
84
- static random({ note, contractAddress, txHash, storageSlot, noteTypeId, nonce, l2BlockNumber, l2BlockHash, noteHash, siloedNullifier, index, addressPoint, }?: Partial<IncomingNoteDao>): IncomingNoteDao;
85
- }
86
- //# sourceMappingURL=incoming_note_dao.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"incoming_note_dao.d.ts","sourceRoot":"","sources":["../../src/database/incoming_note_dao.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,IAAI,EAAE,MAAM,EAAgB,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,EAAE,EAAS,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAElE;;GAEG;AACH,qBAAa,eAAgB,YAAW,QAAQ;IAE5C,kDAAkD;IAC3C,IAAI,EAAE,IAAI;IACjB,oDAAoD;IAC7C,eAAe,EAAE,YAAY;IACpC,iEAAiE;IAC1D,WAAW,EAAE,EAAE;IACtB,iDAAiD;IAC1C,UAAU,EAAE,YAAY;IAC/B,kDAAkD;IAC3C,MAAM,EAAE,MAAM;IACrB,uEAAuE;IAChE,aAAa,EAAE,MAAM;IAC5B,qEAAqE;IAC9D,WAAW,EAAE,MAAM;IAC1B,6BAA6B;IACtB,KAAK,EAAE,EAAE;IAChB;;;OAGG;IACI,QAAQ,EAAE,EAAE;IACnB;;;OAGG;IACI,eAAe,EAAE,EAAE;IAC1B,+DAA+D;IACxD,KAAK,EAAE,MAAM;IACpB,wDAAwD;IACjD,YAAY,EAAE,SAAS;;IA7B9B,kDAAkD;IAC3C,IAAI,EAAE,IAAI;IACjB,oDAAoD;IAC7C,eAAe,EAAE,YAAY;IACpC,iEAAiE;IAC1D,WAAW,EAAE,EAAE;IACtB,iDAAiD;IAC1C,UAAU,EAAE,YAAY;IAC/B,kDAAkD;IAC3C,MAAM,EAAE,MAAM;IACrB,uEAAuE;IAChE,aAAa,EAAE,MAAM;IAC5B,qEAAqE;IAC9D,WAAW,EAAE,MAAM;IAC1B,6BAA6B;IACtB,KAAK,EAAE,EAAE;IAChB;;;OAGG;IACI,QAAQ,EAAE,EAAE;IACnB;;;OAGG;IACI,eAAe,EAAE,EAAE;IAC1B,+DAA+D;IACxD,KAAK,EAAE,MAAM;IACpB,wDAAwD;IACjD,YAAY,EAAE,SAAS;IAGhC,MAAM,CAAC,sBAAsB,CAC3B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,MAAM,EAC3B,YAAY,EAAE,SAAS;IAmBzB,QAAQ,IAAI,MAAM;IAiBlB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAgC/C,QAAQ;IAIR,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM;IAK7B;;;OAGG;IACI,OAAO;IAMd,MAAM,CAAC,MAAM,CAAC,EACZ,IAAoB,EACpB,eAAuC,EACvC,MAAuB,EACvB,WAAyB,EACzB,UAAkC,EAClC,KAAmB,EACnB,aAAgD,EAChD,WAAoC,EACpC,QAAsB,EACtB,eAA6B,EAC7B,KAA8B,EAC9B,YAA6B,GAC9B,GAAE,OAAO,CAAC,eAAe,CAAM;CAgBjC"}
@@ -1,110 +0,0 @@
1
- import { Note, TxHash, randomTxHash } from '@aztec/circuit-types';
2
- import { AztecAddress, Fr, Point } from '@aztec/circuits.js';
3
- import { NoteSelector } from '@aztec/foundation/abi';
4
- import { toBigIntBE } from '@aztec/foundation/bigint-buffer';
5
- import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
6
- /**
7
- * A note with contextual data which was decrypted as incoming.
8
- */
9
- export class IncomingNoteDao {
10
- constructor(
11
- /** The note as emitted from the Noir contract. */
12
- note,
13
- /** The contract address this note is created in. */
14
- contractAddress,
15
- /** The specific storage location of the note on the contract. */
16
- storageSlot,
17
- /** The note type identifier for the contract. */
18
- noteTypeId,
19
- /** The hash of the tx the note was created in. */
20
- txHash,
21
- /** The L2 block number in which the tx with this note was included. */
22
- l2BlockNumber,
23
- /** The L2 block hash in which the tx with this note was included. */
24
- l2BlockHash,
25
- /** The nonce of the note. */
26
- nonce,
27
- /**
28
- * A hash of the note. This is customizable by the app circuit.
29
- * We can use this value to compute siloedNoteHash and uniqueSiloedNoteHash.
30
- */
31
- noteHash,
32
- /**
33
- * The nullifier of the note (siloed by contract address).
34
- * Note: Might be set as 0 if the note was added to PXE as nullified.
35
- */
36
- siloedNullifier,
37
- /** The location of the relevant note in the note hash tree. */
38
- index,
39
- /** The public key with which the note was encrypted. */
40
- addressPoint) {
41
- this.note = note;
42
- this.contractAddress = contractAddress;
43
- this.storageSlot = storageSlot;
44
- this.noteTypeId = noteTypeId;
45
- this.txHash = txHash;
46
- this.l2BlockNumber = l2BlockNumber;
47
- this.l2BlockHash = l2BlockHash;
48
- this.nonce = nonce;
49
- this.noteHash = noteHash;
50
- this.siloedNullifier = siloedNullifier;
51
- this.index = index;
52
- this.addressPoint = addressPoint;
53
- }
54
- static fromPayloadAndNoteInfo(note, payload, noteInfo, l2BlockNumber, l2BlockHash, dataStartIndexForTx, addressPoint) {
55
- const noteHashIndexInTheWholeTree = BigInt(dataStartIndexForTx + noteInfo.noteHashIndex);
56
- return new IncomingNoteDao(note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, noteInfo.txHash, l2BlockNumber, l2BlockHash, noteInfo.nonce, noteInfo.noteHash, noteInfo.siloedNullifier, noteHashIndexInTheWholeTree, addressPoint);
57
- }
58
- toBuffer() {
59
- return serializeToBuffer([
60
- this.note,
61
- this.contractAddress,
62
- this.storageSlot,
63
- this.noteTypeId,
64
- this.txHash.buffer,
65
- this.l2BlockNumber,
66
- Fr.fromHexString(this.l2BlockHash),
67
- this.nonce,
68
- this.noteHash,
69
- this.siloedNullifier,
70
- this.index,
71
- this.addressPoint,
72
- ]);
73
- }
74
- static fromBuffer(buffer) {
75
- const reader = BufferReader.asReader(buffer);
76
- const note = Note.fromBuffer(reader);
77
- const contractAddress = AztecAddress.fromBuffer(reader);
78
- const storageSlot = Fr.fromBuffer(reader);
79
- const noteTypeId = reader.readObject(NoteSelector);
80
- const txHash = reader.readObject(TxHash);
81
- const l2BlockNumber = reader.readNumber();
82
- const l2BlockHash = Fr.fromBuffer(reader).toString();
83
- const nonce = Fr.fromBuffer(reader);
84
- const noteHash = Fr.fromBuffer(reader);
85
- const siloedNullifier = Fr.fromBuffer(reader);
86
- const index = toBigIntBE(reader.readBytes(32));
87
- const publicKey = Point.fromBuffer(reader);
88
- return new IncomingNoteDao(note, contractAddress, storageSlot, noteTypeId, txHash, l2BlockNumber, l2BlockHash, nonce, noteHash, siloedNullifier, index, publicKey);
89
- }
90
- toString() {
91
- return '0x' + this.toBuffer().toString('hex');
92
- }
93
- static fromString(str) {
94
- const hex = str.replace(/^0x/, '');
95
- return IncomingNoteDao.fromBuffer(Buffer.from(hex, 'hex'));
96
- }
97
- /**
98
- * Returns the size in bytes of the Note Dao.
99
- * @returns - Its size in bytes.
100
- */
101
- getSize() {
102
- const indexSize = Math.ceil(Math.log2(Number(this.index)));
103
- const noteSize = 4 + this.note.items.length * Fr.SIZE_IN_BYTES;
104
- return noteSize + AztecAddress.SIZE_IN_BYTES + Fr.SIZE_IN_BYTES * 4 + TxHash.SIZE + Point.SIZE_IN_BYTES + indexSize;
105
- }
106
- static random({ note = Note.random(), contractAddress = AztecAddress.random(), txHash = randomTxHash(), storageSlot = Fr.random(), noteTypeId = NoteSelector.random(), nonce = Fr.random(), l2BlockNumber = Math.floor(Math.random() * 1000), l2BlockHash = Fr.random().toString(), noteHash = Fr.random(), siloedNullifier = Fr.random(), index = Fr.random().toBigInt(), addressPoint = Point.random(), } = {}) {
107
- return new IncomingNoteDao(note, contractAddress, storageSlot, noteTypeId, txHash, l2BlockNumber, l2BlockHash, nonce, noteHash, siloedNullifier, index, addressPoint);
108
- }
109
- }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jb21pbmdfbm90ZV9kYW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWJhc2UvaW5jb21pbmdfbm90ZV9kYW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBa0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUs5RTs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQzFCO0lBQ0Usa0RBQWtEO0lBQzNDLElBQVU7SUFDakIsb0RBQW9EO0lBQzdDLGVBQTZCO0lBQ3BDLGlFQUFpRTtJQUMxRCxXQUFlO0lBQ3RCLGlEQUFpRDtJQUMxQyxVQUF3QjtJQUMvQixrREFBa0Q7SUFDM0MsTUFBYztJQUNyQix1RUFBdUU7SUFDaEUsYUFBcUI7SUFDNUIscUVBQXFFO0lBQzlELFdBQW1CO0lBQzFCLDZCQUE2QjtJQUN0QixLQUFTO0lBQ2hCOzs7T0FHRztJQUNJLFFBQVk7SUFDbkI7OztPQUdHO0lBQ0ksZUFBbUI7SUFDMUIsK0RBQStEO0lBQ3hELEtBQWE7SUFDcEIsd0RBQXdEO0lBQ2pELFlBQXVCO1FBNUJ2QixTQUFJLEdBQUosSUFBSSxDQUFNO1FBRVYsb0JBQWUsR0FBZixlQUFlLENBQWM7UUFFN0IsZ0JBQVcsR0FBWCxXQUFXLENBQUk7UUFFZixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBRXhCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFFZCxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUVyQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUVuQixVQUFLLEdBQUwsS0FBSyxDQUFJO1FBS1QsYUFBUSxHQUFSLFFBQVEsQ0FBSTtRQUtaLG9CQUFlLEdBQWYsZUFBZSxDQUFJO1FBRW5CLFVBQUssR0FBTCxLQUFLLENBQVE7UUFFYixpQkFBWSxHQUFaLFlBQVksQ0FBVztJQUM3QixDQUFDO0lBRUosTUFBTSxDQUFDLHNCQUFzQixDQUMzQixJQUFVLEVBQ1YsT0FBc0IsRUFDdEIsUUFBa0IsRUFDbEIsYUFBcUIsRUFDckIsV0FBbUIsRUFDbkIsbUJBQTJCLEVBQzNCLFlBQXVCO1FBRXZCLE1BQU0sMkJBQTJCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RixPQUFPLElBQUksZUFBZSxDQUN4QixJQUFJLEVBQ0osT0FBTyxDQUFDLGVBQWUsRUFDdkIsT0FBTyxDQUFDLFdBQVcsRUFDbkIsT0FBTyxDQUFDLFVBQVUsRUFDbEIsUUFBUSxDQUFDLE1BQU0sRUFDZixhQUFhLEVBQ2IsV0FBVyxFQUNYLFFBQVEsQ0FBQyxLQUFLLEVBQ2QsUUFBUSxDQUFDLFFBQVEsRUFDakIsUUFBUSxDQUFDLGVBQWUsRUFDeEIsMkJBQTJCLEVBQzNCLFlBQVksQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLGlCQUFpQixDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJO1lBQ1QsSUFBSSxDQUFDLGVBQWU7WUFDcEIsSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLFVBQVU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDbEIsSUFBSSxDQUFDLGFBQWE7WUFDbEIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLO1lBQ1YsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsZUFBZTtZQUNwQixJQUFJLENBQUMsS0FBSztZQUNWLElBQUksQ0FBQyxZQUFZO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQTZCO1FBQzdDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzQyxPQUFPLElBQUksZUFBZSxDQUN4QixJQUFJLEVBQ0osZUFBZSxFQUNmLFdBQVcsRUFDWCxVQUFVLEVBQ1YsTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsS0FBSyxFQUNMLFFBQVEsRUFDUixlQUFlLEVBQ2YsS0FBSyxFQUNMLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVc7UUFDM0IsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkMsT0FBTyxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU87UUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQy9ELE9BQU8sUUFBUSxHQUFHLFlBQVksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUN0SCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUNaLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQ3BCLGVBQWUsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQ3ZDLE1BQU0sR0FBRyxZQUFZLEVBQUUsRUFDdkIsV0FBVyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFDekIsVUFBVSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsRUFDbEMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFDbkIsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUNoRCxXQUFXLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUNwQyxRQUFRLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUN0QixlQUFlLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUM3QixLQUFLLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUM5QixZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUNELEVBQUU7UUFDOUIsT0FBTyxJQUFJLGVBQWUsQ0FDeEIsSUFBSSxFQUNKLGVBQWUsRUFDZixXQUFXLEVBQ1gsVUFBVSxFQUNWLE1BQU0sRUFDTixhQUFhLEVBQ2IsV0FBVyxFQUNYLEtBQUssRUFDTCxRQUFRLEVBQ1IsZUFBZSxFQUNmLEtBQUssRUFDTCxZQUFZLENBQ2IsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
@@ -1,20 +0,0 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
- import { type PrivateKernelProver, type PrivateKernelSimulateOutput } from '@aztec/circuit-types';
4
- import { ClientIvcProof, type PrivateKernelCircuitPublicInputs, type PrivateKernelInitCircuitPrivateInputs, type PrivateKernelInnerCircuitPrivateInputs, type PrivateKernelResetCircuitPrivateInputs, type PrivateKernelTailCircuitPrivateInputs, type PrivateKernelTailCircuitPublicInputs } from '@aztec/circuits.js';
5
- import { type WitnessMap } from '@noir-lang/types';
6
- /**
7
- * Test Proof Creator executes circuit simulations and provides fake proofs.
8
- */
9
- export declare class TestPrivateKernelProver implements PrivateKernelProver {
10
- private log;
11
- constructor(log?: import("@aztec/foundation/log").Logger);
12
- createClientIvcProof(_acirs: Buffer[], _witnessStack: WitnessMap[]): Promise<ClientIvcProof>;
13
- simulateProofInit(privateInputs: PrivateKernelInitCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
14
- simulateProofInner(privateInputs: PrivateKernelInnerCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
15
- simulateProofReset(privateInputs: PrivateKernelResetCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
16
- simulateProofTail(privateInputs: PrivateKernelTailCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>>;
17
- computeGateCountForCircuit(_bytecode: Buffer, _circuitName: string): Promise<number>;
18
- private makeEmptyKernelSimulateOutput;
19
- }
20
- //# sourceMappingURL=test_circuit_prover.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/test/test_circuit_prover.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAElG,OAAO,EACL,cAAc,EACd,KAAK,gCAAgC,EACrC,KAAK,qCAAqC,EAC1C,KAAK,sCAAsC,EAC3C,KAAK,sCAAsC,EAC3C,KAAK,qCAAqC,EAC1C,KAAK,oCAAoC,EAC1C,MAAM,oBAAoB,CAAC;AAe5B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IACrD,OAAO,CAAC,GAAG;gBAAH,GAAG,yCAAyC;IAEhE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAI/E,iBAAiB,CAC5B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,CAAC;IAY5D,kBAAkB,CAC7B,aAAa,EAAE,sCAAsC,GACpD,OAAO,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,CAAC;IAY5D,kBAAkB,CAC7B,aAAa,EAAE,sCAAsC,GACpD,OAAO,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,CAAC;IAkB5D,iBAAiB,CAC5B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,2BAA2B,CAAC,oCAAoC,CAAC,CAAC;IAkBtE,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK3F,OAAO,CAAC,6BAA6B;CAWtC"}
@@ -1,75 +0,0 @@
1
- import { ClientIvcProof, } from '@aztec/circuits.js';
2
- import { createLogger } from '@aztec/foundation/log';
3
- import { elapsed } from '@aztec/foundation/timer';
4
- import { ClientCircuitVks, executeInit, executeInner, executeReset, executeTail, executeTailForPublic, getPrivateKernelResetArtifactName, maxPrivateKernelResetDimensions, } from '@aztec/noir-protocol-circuits-types/client';
5
- /**
6
- * Test Proof Creator executes circuit simulations and provides fake proofs.
7
- */
8
- export class TestPrivateKernelProver {
9
- constructor(log = createLogger('pxe:test_proof_creator')) {
10
- this.log = log;
11
- }
12
- createClientIvcProof(_acirs, _witnessStack) {
13
- return Promise.resolve(ClientIvcProof.empty());
14
- }
15
- async simulateProofInit(privateInputs) {
16
- const [duration, result] = await elapsed(() => executeInit(privateInputs));
17
- this.log.debug(`Simulated private kernel init`, {
18
- eventName: 'circuit-simulation',
19
- circuitName: 'private-kernel-init',
20
- duration,
21
- inputSize: privateInputs.toBuffer().length,
22
- outputSize: result.toBuffer().length,
23
- });
24
- return this.makeEmptyKernelSimulateOutput(result, 'PrivateKernelInitArtifact');
25
- }
26
- async simulateProofInner(privateInputs) {
27
- const [duration, result] = await elapsed(() => executeInner(privateInputs));
28
- this.log.debug(`Simulated private kernel inner`, {
29
- eventName: 'circuit-simulation',
30
- circuitName: 'private-kernel-inner',
31
- duration,
32
- inputSize: privateInputs.toBuffer().length,
33
- outputSize: result.toBuffer().length,
34
- });
35
- return this.makeEmptyKernelSimulateOutput(result, 'PrivateKernelInnerArtifact');
36
- }
37
- async simulateProofReset(privateInputs) {
38
- const variantPrivateInputs = privateInputs.trimToSizes();
39
- const [duration, result] = await elapsed(() => executeReset(variantPrivateInputs, privateInputs.dimensions, privateInputs));
40
- this.log.debug(`Simulated private kernel reset`, {
41
- eventName: 'circuit-simulation',
42
- circuitName: 'private-kernel-reset',
43
- duration,
44
- inputSize: variantPrivateInputs.toBuffer().length,
45
- outputSize: result.toBuffer().length,
46
- });
47
- return this.makeEmptyKernelSimulateOutput(result, getPrivateKernelResetArtifactName(maxPrivateKernelResetDimensions));
48
- }
49
- async simulateProofTail(privateInputs) {
50
- const isForPublic = privateInputs.isForPublic();
51
- const [duration, result] = await elapsed(() => isForPublic ? executeTailForPublic(privateInputs) : executeTail(privateInputs));
52
- this.log.debug(`Simulated private kernel ordering`, {
53
- eventName: 'circuit-simulation',
54
- circuitName: 'private-kernel-tail',
55
- duration,
56
- inputSize: privateInputs.toBuffer().length,
57
- outputSize: result.toBuffer().length,
58
- });
59
- return this.makeEmptyKernelSimulateOutput(result, isForPublic ? 'PrivateKernelTailToPublicArtifact' : 'PrivateKernelTailArtifact');
60
- }
61
- computeGateCountForCircuit(_bytecode, _circuitName) {
62
- // No gates in test prover
63
- return Promise.resolve(0);
64
- }
65
- makeEmptyKernelSimulateOutput(publicInputs, circuitType) {
66
- const kernelProofOutput = {
67
- publicInputs,
68
- verificationKey: ClientCircuitVks[circuitType].keyAsFields,
69
- outputWitness: new Map(),
70
- bytecode: Buffer.from([]),
71
- };
72
- return kernelProofOutput;
73
- }
74
- }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jaXJjdWl0X3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3Rlc3QvdGVzdF9jaXJjdWl0X3Byb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsY0FBYyxHQU9mLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLFdBQVcsRUFDWCxZQUFZLEVBQ1osWUFBWSxFQUNaLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsaUNBQWlDLEVBQ2pDLCtCQUErQixHQUNoQyxNQUFNLDRDQUE0QyxDQUFDO0FBSXBEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxZQUFvQixNQUFNLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQztRQUE1QyxRQUFHLEdBQUgsR0FBRyxDQUF5QztJQUFHLENBQUM7SUFFcEUsb0JBQW9CLENBQUMsTUFBZ0IsRUFBRSxhQUEyQjtRQUNoRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FDNUIsYUFBb0Q7UUFFcEQsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRTtZQUM5QyxTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLFdBQVcsRUFBRSxxQkFBcUI7WUFDbEMsUUFBUTtZQUNSLFNBQVMsRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFLENB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
@@ -1,122 +0,0 @@
1
- import { type PrivateKernelProver, type PrivateKernelSimulateOutput } from '@aztec/circuit-types';
2
- import type { CircuitSimulationStats } from '@aztec/circuit-types/stats';
3
- import {
4
- ClientIvcProof,
5
- type PrivateKernelCircuitPublicInputs,
6
- type PrivateKernelInitCircuitPrivateInputs,
7
- type PrivateKernelInnerCircuitPrivateInputs,
8
- type PrivateKernelResetCircuitPrivateInputs,
9
- type PrivateKernelTailCircuitPrivateInputs,
10
- type PrivateKernelTailCircuitPublicInputs,
11
- } from '@aztec/circuits.js';
12
- import { createLogger } from '@aztec/foundation/log';
13
- import { elapsed } from '@aztec/foundation/timer';
14
- import {
15
- ClientCircuitVks,
16
- type ClientProtocolArtifact,
17
- executeInit,
18
- executeInner,
19
- executeReset,
20
- executeTail,
21
- executeTailForPublic,
22
- getPrivateKernelResetArtifactName,
23
- maxPrivateKernelResetDimensions,
24
- } from '@aztec/noir-protocol-circuits-types/client';
25
-
26
- import { type WitnessMap } from '@noir-lang/types';
27
-
28
- /**
29
- * Test Proof Creator executes circuit simulations and provides fake proofs.
30
- */
31
- export class TestPrivateKernelProver implements PrivateKernelProver {
32
- constructor(private log = createLogger('pxe:test_proof_creator')) {}
33
-
34
- createClientIvcProof(_acirs: Buffer[], _witnessStack: WitnessMap[]): Promise<ClientIvcProof> {
35
- return Promise.resolve(ClientIvcProof.empty());
36
- }
37
-
38
- public async simulateProofInit(
39
- privateInputs: PrivateKernelInitCircuitPrivateInputs,
40
- ): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
41
- const [duration, result] = await elapsed(() => executeInit(privateInputs));
42
- this.log.debug(`Simulated private kernel init`, {
43
- eventName: 'circuit-simulation',
44
- circuitName: 'private-kernel-init',
45
- duration,
46
- inputSize: privateInputs.toBuffer().length,
47
- outputSize: result.toBuffer().length,
48
- } satisfies CircuitSimulationStats);
49
- return this.makeEmptyKernelSimulateOutput<PrivateKernelCircuitPublicInputs>(result, 'PrivateKernelInitArtifact');
50
- }
51
-
52
- public async simulateProofInner(
53
- privateInputs: PrivateKernelInnerCircuitPrivateInputs,
54
- ): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
55
- const [duration, result] = await elapsed(() => executeInner(privateInputs));
56
- this.log.debug(`Simulated private kernel inner`, {
57
- eventName: 'circuit-simulation',
58
- circuitName: 'private-kernel-inner',
59
- duration,
60
- inputSize: privateInputs.toBuffer().length,
61
- outputSize: result.toBuffer().length,
62
- } satisfies CircuitSimulationStats);
63
- return this.makeEmptyKernelSimulateOutput<PrivateKernelCircuitPublicInputs>(result, 'PrivateKernelInnerArtifact');
64
- }
65
-
66
- public async simulateProofReset(
67
- privateInputs: PrivateKernelResetCircuitPrivateInputs,
68
- ): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
69
- const variantPrivateInputs = privateInputs.trimToSizes();
70
- const [duration, result] = await elapsed(() =>
71
- executeReset(variantPrivateInputs, privateInputs.dimensions, privateInputs),
72
- );
73
- this.log.debug(`Simulated private kernel reset`, {
74
- eventName: 'circuit-simulation',
75
- circuitName: 'private-kernel-reset',
76
- duration,
77
- inputSize: variantPrivateInputs.toBuffer().length,
78
- outputSize: result.toBuffer().length,
79
- } satisfies CircuitSimulationStats);
80
- return this.makeEmptyKernelSimulateOutput<PrivateKernelCircuitPublicInputs>(
81
- result,
82
- getPrivateKernelResetArtifactName(maxPrivateKernelResetDimensions),
83
- );
84
- }
85
-
86
- public async simulateProofTail(
87
- privateInputs: PrivateKernelTailCircuitPrivateInputs,
88
- ): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>> {
89
- const isForPublic = privateInputs.isForPublic();
90
- const [duration, result] = await elapsed(() =>
91
- isForPublic ? executeTailForPublic(privateInputs) : executeTail(privateInputs),
92
- );
93
- this.log.debug(`Simulated private kernel ordering`, {
94
- eventName: 'circuit-simulation',
95
- circuitName: 'private-kernel-tail',
96
- duration,
97
- inputSize: privateInputs.toBuffer().length,
98
- outputSize: result.toBuffer().length,
99
- } satisfies CircuitSimulationStats);
100
- return this.makeEmptyKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>(
101
- result,
102
- isForPublic ? 'PrivateKernelTailToPublicArtifact' : 'PrivateKernelTailArtifact',
103
- );
104
- }
105
-
106
- public computeGateCountForCircuit(_bytecode: Buffer, _circuitName: string): Promise<number> {
107
- // No gates in test prover
108
- return Promise.resolve(0);
109
- }
110
-
111
- private makeEmptyKernelSimulateOutput<
112
- PublicInputsType extends PrivateKernelTailCircuitPublicInputs | PrivateKernelCircuitPublicInputs,
113
- >(publicInputs: PublicInputsType, circuitType: ClientProtocolArtifact) {
114
- const kernelProofOutput: PrivateKernelSimulateOutput<PublicInputsType> = {
115
- publicInputs,
116
- verificationKey: ClientCircuitVks[circuitType].keyAsFields,
117
- outputWitness: new Map(),
118
- bytecode: Buffer.from([]),
119
- };
120
- return kernelProofOutput;
121
- }
122
- }