@aztec/pxe 0.42.0 → 0.44.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.
- package/dest/database/deferred_note_dao.d.ts +5 -4
- package/dest/database/deferred_note_dao.d.ts.map +1 -1
- package/dest/database/deferred_note_dao.js +4 -3
- package/dest/database/incoming_note_dao.d.ts +74 -0
- package/dest/database/incoming_note_dao.d.ts.map +1 -0
- package/dest/database/incoming_note_dao.js +93 -0
- package/dest/database/index.d.ts +1 -0
- package/dest/database/index.d.ts.map +1 -1
- package/dest/database/index.js +2 -1
- package/dest/database/kv_pxe_database.d.ts +10 -7
- package/dest/database/kv_pxe_database.d.ts.map +1 -1
- package/dest/database/kv_pxe_database.js +149 -78
- package/dest/database/{note_dao.d.ts → outgoing_note_dao.d.ts} +10 -14
- package/dest/database/outgoing_note_dao.d.ts.map +1 -0
- package/dest/database/outgoing_note_dao.js +84 -0
- package/dest/database/pxe_database.d.ts +21 -9
- package/dest/database/pxe_database.d.ts.map +1 -1
- package/dest/database/pxe_database_test_suite.d.ts.map +1 -1
- package/dest/database/pxe_database_test_suite.js +71 -24
- package/dest/index.d.ts +3 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +4 -1
- package/dest/kernel_oracle/index.d.ts +1 -1
- package/dest/note_processor/note_processor.d.ts +23 -20
- package/dest/note_processor/note_processor.d.ts.map +1 -1
- package/dest/note_processor/note_processor.js +116 -76
- package/dest/note_processor/produce_note_dao.d.ts +13 -4
- package/dest/note_processor/produce_note_dao.d.ts.map +1 -1
- package/dest/note_processor/produce_note_dao.js +88 -31
- package/dest/pxe_http/pxe_http_server.d.ts.map +1 -1
- package/dest/pxe_http/pxe_http_server.js +3 -1
- package/dest/pxe_service/create_pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/create_pxe_service.js +3 -1
- package/dest/pxe_service/pxe_service.d.ts +9 -4
- package/dest/pxe_service/pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/pxe_service.js +106 -28
- package/dest/simulator_oracle/index.js +2 -2
- package/dest/synchronizer/synchronizer.d.ts +2 -2
- package/dest/synchronizer/synchronizer.d.ts.map +1 -1
- package/dest/synchronizer/synchronizer.js +37 -36
- package/package.json +23 -15
- package/src/database/deferred_note_dao.ts +4 -3
- package/src/database/{note_dao.ts → incoming_note_dao.ts} +14 -10
- package/src/database/index.ts +1 -0
- package/src/database/kv_pxe_database.ts +127 -29
- package/src/database/outgoing_note_dao.ts +91 -0
- package/src/database/pxe_database.ts +23 -9
- package/src/database/pxe_database_test_suite.ts +93 -29
- package/src/index.ts +3 -0
- package/src/note_processor/note_processor.ts +190 -121
- package/src/note_processor/produce_note_dao.ts +164 -50
- package/src/pxe_http/pxe_http_server.ts +2 -0
- package/src/pxe_service/create_pxe_service.ts +2 -0
- package/src/pxe_service/pxe_service.ts +170 -42
- package/src/simulator_oracle/index.ts +1 -1
- package/src/synchronizer/synchronizer.ts +48 -52
- package/dest/database/note_dao.d.ts.map +0 -1
- package/dest/database/note_dao.js +0 -89
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { L1NotePayload,
|
|
2
|
-
import { INITIAL_L2_BLOCK_NUM, MAX_NEW_NOTE_HASHES_PER_TX } from '@aztec/circuits.js';
|
|
1
|
+
import { L1NotePayload, TaggedLog } from '@aztec/circuit-types';
|
|
2
|
+
import { INITIAL_L2_BLOCK_NUM, MAX_NEW_NOTE_HASHES_PER_TX, } from '@aztec/circuits.js';
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
5
|
-
import { ContractNotFoundError } from '@aztec/simulator';
|
|
6
|
-
import { DeferredNoteDao } from '../database/deferred_note_dao.js';
|
|
7
5
|
import { getAcirSimulator } from '../simulator/index.js';
|
|
8
|
-
import {
|
|
6
|
+
import { produceNoteDaos } from './produce_note_dao.js';
|
|
9
7
|
/**
|
|
10
8
|
* NoteProcessor is responsible for decrypting logs and converting them to notes via their originating contracts
|
|
11
9
|
* before storing them against their owner.
|
|
12
10
|
*/
|
|
13
11
|
export class NoteProcessor {
|
|
14
|
-
constructor(
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
this.
|
|
12
|
+
constructor(account,
|
|
13
|
+
/** The public counterpart to the secret key to be used in the decryption of incoming note logs. */
|
|
14
|
+
ivpkM,
|
|
15
|
+
/** The public counterpart to the secret key to be used in the decryption of outgoing note logs. */
|
|
16
|
+
ovpkM, keyStore, db, node, startingBlock, simulator, log) {
|
|
17
|
+
this.account = account;
|
|
18
|
+
this.ivpkM = ivpkM;
|
|
19
|
+
this.ovpkM = ovpkM;
|
|
20
20
|
this.keyStore = keyStore;
|
|
21
21
|
this.db = db;
|
|
22
22
|
this.node = node;
|
|
@@ -26,7 +26,21 @@ export class NoteProcessor {
|
|
|
26
26
|
/** Keeps track of processing time since an instance is created. */
|
|
27
27
|
this.timer = new Timer();
|
|
28
28
|
/** Stats accumulated for this processor. */
|
|
29
|
-
this.stats = {
|
|
29
|
+
this.stats = {
|
|
30
|
+
seen: 0,
|
|
31
|
+
decryptedIncoming: 0,
|
|
32
|
+
decryptedOutgoing: 0,
|
|
33
|
+
deferredIncoming: 0,
|
|
34
|
+
deferredOutgoing: 0,
|
|
35
|
+
failed: 0,
|
|
36
|
+
blocks: 0,
|
|
37
|
+
txs: 0,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
static async create(account, keyStore, db, node, startingBlock = INITIAL_L2_BLOCK_NUM, simulator = getAcirSimulator(db, node, keyStore), log = createDebugLogger('aztec:note_processor')) {
|
|
41
|
+
const ivpkM = await keyStore.getMasterIncomingViewingPublicKey(account);
|
|
42
|
+
const ovpkM = await keyStore.getMasterOutgoingViewingPublicKey(account);
|
|
43
|
+
return new NoteProcessor(account, ivpkM, ovpkM, keyStore, db, node, startingBlock, simulator, log);
|
|
30
44
|
}
|
|
31
45
|
/**
|
|
32
46
|
* Check if the NoteProcessor is synchronized with the remote block number.
|
|
@@ -46,37 +60,34 @@ export class NoteProcessor {
|
|
|
46
60
|
return { syncedToBlock: this.getSyncedToBlock() };
|
|
47
61
|
}
|
|
48
62
|
getSyncedToBlock() {
|
|
49
|
-
return this.db.getSynchedBlockNumberForPublicKey(this.
|
|
63
|
+
return this.db.getSynchedBlockNumberForPublicKey(this.ivpkM) ?? this.startingBlock - 1;
|
|
50
64
|
}
|
|
51
65
|
/**
|
|
52
66
|
* Extracts new user-relevant notes from the information contained in the provided L2 blocks and encrypted logs.
|
|
53
67
|
*
|
|
54
|
-
* @
|
|
55
|
-
* @param l2Blocks - L2 blocks to be processed.
|
|
56
|
-
* @param encryptedL2BlockLogs - Encrypted logs associated with the L2 blocks.
|
|
68
|
+
* @param blocks - L2 blocks to be processed.
|
|
57
69
|
* @returns A promise that resolves once the processing is completed.
|
|
58
70
|
*/
|
|
59
|
-
async process(
|
|
60
|
-
if (
|
|
61
|
-
throw new Error(`Number of blocks and EncryptedLogs is not equal. Received ${l2Blocks.length} blocks, ${encryptedL2BlockLogs.length} encrypted logs.`);
|
|
62
|
-
}
|
|
63
|
-
if (l2Blocks.length === 0) {
|
|
71
|
+
async process(blocks) {
|
|
72
|
+
if (blocks.length === 0) {
|
|
64
73
|
return;
|
|
65
74
|
}
|
|
66
75
|
const blocksAndNotes = [];
|
|
67
76
|
// Keep track of notes that we couldn't process because the contract was not found.
|
|
68
|
-
const
|
|
77
|
+
const deferredIncomingNotes = [];
|
|
78
|
+
const deferredOutgoingNotes = [];
|
|
79
|
+
const ivskM = await this.keyStore.getMasterSecretKey(this.ivpkM);
|
|
80
|
+
const ovskM = await this.keyStore.getMasterSecretKey(this.ovpkM);
|
|
69
81
|
// Iterate over both blocks and encrypted logs.
|
|
70
|
-
for (
|
|
82
|
+
for (const block of blocks) {
|
|
71
83
|
this.stats.blocks++;
|
|
72
|
-
const { txLogs } =
|
|
73
|
-
const block = l2Blocks[blockIndex];
|
|
84
|
+
const { txLogs } = block.body.noteEncryptedLogs;
|
|
74
85
|
const dataStartIndexForBlock = block.header.state.partial.noteHashTree.nextAvailableLeafIndex -
|
|
75
86
|
block.body.numberOfTxsIncludingPadded * MAX_NEW_NOTE_HASHES_PER_TX;
|
|
76
87
|
// We are using set for `userPertainingTxIndices` to avoid duplicates. This would happen in case there were
|
|
77
88
|
// multiple encrypted logs in a tx pertaining to a user.
|
|
78
|
-
const
|
|
79
|
-
const
|
|
89
|
+
const incomingNotes = [];
|
|
90
|
+
const outgoingNotes = [];
|
|
80
91
|
// Iterate over all the encrypted logs and try decrypting them. If successful, store the note.
|
|
81
92
|
for (let indexOfTxInABlock = 0; indexOfTxInABlock < txLogs.length; ++indexOfTxInABlock) {
|
|
82
93
|
this.stats.txs++;
|
|
@@ -89,42 +100,50 @@ export class NoteProcessor {
|
|
|
89
100
|
for (const functionLogs of txFunctionLogs) {
|
|
90
101
|
for (const log of functionLogs.logs) {
|
|
91
102
|
this.stats.seen++;
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
if (
|
|
95
|
-
|
|
96
|
-
|
|
103
|
+
const incomingTaggedNote = TaggedLog.decryptAsIncoming(log.data, ivskM);
|
|
104
|
+
const outgoingTaggedNote = TaggedLog.decryptAsOutgoing(log.data, ovskM);
|
|
105
|
+
if (incomingTaggedNote || outgoingTaggedNote) {
|
|
106
|
+
if (incomingTaggedNote &&
|
|
107
|
+
outgoingTaggedNote &&
|
|
108
|
+
!incomingTaggedNote.payload.equals(outgoingTaggedNote.payload)) {
|
|
109
|
+
throw new Error(`Incoming and outgoing note payloads do not match. Incoming: ${JSON.stringify(incomingTaggedNote.payload)}, Outgoing: ${JSON.stringify(outgoingTaggedNote.payload)}`);
|
|
110
|
+
}
|
|
111
|
+
const payload = incomingTaggedNote?.payload || outgoingTaggedNote?.payload;
|
|
97
112
|
const txHash = block.body.txEffects[indexOfTxInABlock].txHash;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
this.stats.
|
|
113
|
+
const { incomingNote, outgoingNote, incomingDeferredNote, outgoingDeferredNote } = await produceNoteDaos(this.simulator, incomingTaggedNote ? this.ivpkM : undefined, outgoingTaggedNote ? this.ovpkM : undefined, payload, txHash, newNoteHashes, dataStartIndexForTx, excludedIndices, this.log);
|
|
114
|
+
if (incomingNote) {
|
|
115
|
+
incomingNotes.push(incomingNote);
|
|
116
|
+
this.stats.decryptedIncoming++;
|
|
117
|
+
}
|
|
118
|
+
if (outgoingNote) {
|
|
119
|
+
outgoingNotes.push(outgoingNote);
|
|
120
|
+
this.stats.decryptedOutgoing++;
|
|
121
|
+
}
|
|
122
|
+
if (incomingDeferredNote) {
|
|
123
|
+
deferredIncomingNotes.push(incomingDeferredNote);
|
|
124
|
+
this.stats.deferredIncoming++;
|
|
102
125
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
this.stats.failed++;
|
|
112
|
-
this.log.error(`Could not process note because of "${e}". Discarding note...`);
|
|
113
|
-
}
|
|
126
|
+
if (outgoingDeferredNote) {
|
|
127
|
+
deferredOutgoingNotes.push(outgoingDeferredNote);
|
|
128
|
+
this.stats.deferredOutgoing++;
|
|
129
|
+
}
|
|
130
|
+
if (incomingNote == undefined && outgoingNote == undefined && incomingDeferredNote == undefined) {
|
|
131
|
+
this.stats.failed++;
|
|
114
132
|
}
|
|
115
133
|
}
|
|
116
134
|
}
|
|
117
135
|
}
|
|
118
136
|
}
|
|
119
137
|
blocksAndNotes.push({
|
|
120
|
-
block
|
|
121
|
-
|
|
138
|
+
block,
|
|
139
|
+
incomingNotes,
|
|
140
|
+
outgoingNotes,
|
|
122
141
|
});
|
|
123
142
|
}
|
|
124
143
|
await this.processBlocksAndNotes(blocksAndNotes);
|
|
125
|
-
await this.processDeferredNotes(
|
|
126
|
-
const syncedToBlock =
|
|
127
|
-
await this.db.setSynchedBlockNumberForPublicKey(this.
|
|
144
|
+
await this.processDeferredNotes(deferredIncomingNotes, deferredOutgoingNotes);
|
|
145
|
+
const syncedToBlock = blocks[blocks.length - 1].number;
|
|
146
|
+
await this.db.setSynchedBlockNumberForPublicKey(this.ivpkM, syncedToBlock);
|
|
128
147
|
this.log.debug(`Synched block ${syncedToBlock}`);
|
|
129
148
|
}
|
|
130
149
|
/**
|
|
@@ -137,15 +156,19 @@ export class NoteProcessor {
|
|
|
137
156
|
* @param blocksAndNotes - Array of objects containing L2 blocks, user-pertaining transaction indices, and NoteDaos.
|
|
138
157
|
*/
|
|
139
158
|
async processBlocksAndNotes(blocksAndNotes) {
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
159
|
+
const incomingNotes = blocksAndNotes.flatMap(b => b.incomingNotes);
|
|
160
|
+
const outgoingNotes = blocksAndNotes.flatMap(b => b.outgoingNotes);
|
|
161
|
+
if (incomingNotes.length || outgoingNotes.length) {
|
|
162
|
+
await this.db.addNotes(incomingNotes, outgoingNotes);
|
|
163
|
+
incomingNotes.forEach(noteDao => {
|
|
164
|
+
this.log.verbose(`Added incoming note for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot} with nullifier ${noteDao.siloedNullifier.toString()}`);
|
|
165
|
+
});
|
|
166
|
+
outgoingNotes.forEach(noteDao => {
|
|
167
|
+
this.log.verbose(`Added outgoing note for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot}`);
|
|
145
168
|
});
|
|
146
169
|
}
|
|
147
170
|
const newNullifiers = blocksAndNotes.flatMap(b => b.block.body.txEffects.flatMap(txEffect => txEffect.nullifiers));
|
|
148
|
-
const removedNotes = await this.db.removeNullifiedNotes(newNullifiers, this.
|
|
171
|
+
const removedNotes = await this.db.removeNullifiedNotes(newNullifiers, this.ivpkM);
|
|
149
172
|
removedNotes.forEach(noteDao => {
|
|
150
173
|
this.log.verbose(`Removed note for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot} with nullifier ${noteDao.siloedNullifier.toString()}`);
|
|
151
174
|
});
|
|
@@ -153,13 +176,17 @@ export class NoteProcessor {
|
|
|
153
176
|
/**
|
|
154
177
|
* Store the given deferred notes in the database for later decoding.
|
|
155
178
|
*
|
|
156
|
-
* @param
|
|
179
|
+
* @param deferredIncomingNotes - incoming notes that are intended for us but we couldn't process because the contract was not found.
|
|
180
|
+
* @param deferredOutgoingNotes - outgoing notes that we couldn't process because the contract was not found.
|
|
157
181
|
*/
|
|
158
|
-
async processDeferredNotes(
|
|
159
|
-
if (
|
|
160
|
-
await this.db.addDeferredNotes(
|
|
161
|
-
|
|
162
|
-
this.log.verbose(`Deferred note for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot} in tx ${noteDao.txHash.toString()}`);
|
|
182
|
+
async processDeferredNotes(deferredIncomingNotes, deferredOutgoingNotes) {
|
|
183
|
+
if (deferredIncomingNotes.length || deferredOutgoingNotes.length) {
|
|
184
|
+
await this.db.addDeferredNotes([...deferredIncomingNotes, ...deferredOutgoingNotes]);
|
|
185
|
+
deferredIncomingNotes.forEach(noteDao => {
|
|
186
|
+
this.log.verbose(`Deferred incoming note for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot} in tx ${noteDao.txHash.toString()}`);
|
|
187
|
+
});
|
|
188
|
+
deferredOutgoingNotes.forEach(noteDao => {
|
|
189
|
+
this.log.verbose(`Deferred outgoing note for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot} in tx ${noteDao.txHash.toString()}`);
|
|
163
190
|
});
|
|
164
191
|
}
|
|
165
192
|
}
|
|
@@ -167,28 +194,41 @@ export class NoteProcessor {
|
|
|
167
194
|
* Retry decoding the given deferred notes because we now have the contract code.
|
|
168
195
|
*
|
|
169
196
|
* @param deferredNoteDaos - notes that we have previously deferred because the contract was not found
|
|
170
|
-
* @returns An
|
|
197
|
+
* @returns An object containing arrays of incoming and outgoing notes that were successfully decoded.
|
|
171
198
|
*
|
|
172
199
|
* @remarks Caller is responsible for making sure that we have the contract for the
|
|
173
200
|
* deferred notes provided: we will not retry notes that fail again.
|
|
174
201
|
*/
|
|
175
202
|
async decodeDeferredNotes(deferredNoteDaos) {
|
|
176
203
|
const excludedIndices = new Set();
|
|
177
|
-
const
|
|
204
|
+
const incomingNotes = [];
|
|
205
|
+
const outgoingNotes = [];
|
|
178
206
|
for (const deferredNote of deferredNoteDaos) {
|
|
179
|
-
const { note, contractAddress, storageSlot, noteTypeId, txHash, newNoteHashes, dataStartIndexForTx } = deferredNote;
|
|
207
|
+
const { publicKey, note, contractAddress, storageSlot, noteTypeId, txHash, newNoteHashes, dataStartIndexForTx } = deferredNote;
|
|
180
208
|
const payload = new L1NotePayload(note, contractAddress, storageSlot, noteTypeId);
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
this
|
|
209
|
+
const isIncoming = publicKey.equals(this.ivpkM);
|
|
210
|
+
const isOutgoing = publicKey.equals(this.ovpkM);
|
|
211
|
+
if (!isIncoming && !isOutgoing) {
|
|
212
|
+
// The note does not belong to this note processor
|
|
213
|
+
continue;
|
|
185
214
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
215
|
+
const { incomingNote, outgoingNote } = await produceNoteDaos(this.simulator, isIncoming ? this.ivpkM : undefined, isOutgoing ? this.ovpkM : undefined, payload, txHash, newNoteHashes, dataStartIndexForTx, excludedIndices, this.log);
|
|
216
|
+
if (isIncoming) {
|
|
217
|
+
if (!incomingNote) {
|
|
218
|
+
throw new Error('Deferred incoming note could not be decoded');
|
|
219
|
+
}
|
|
220
|
+
incomingNotes.push(incomingNote);
|
|
221
|
+
this.stats.decryptedIncoming++;
|
|
222
|
+
}
|
|
223
|
+
if (outgoingNote) {
|
|
224
|
+
if (!outgoingNote) {
|
|
225
|
+
throw new Error('Deferred outgoing note could not be decoded');
|
|
226
|
+
}
|
|
227
|
+
outgoingNotes.push(outgoingNote);
|
|
228
|
+
this.stats.decryptedOutgoing++;
|
|
189
229
|
}
|
|
190
230
|
}
|
|
191
|
-
return
|
|
231
|
+
return { incomingNotes, outgoingNotes };
|
|
192
232
|
}
|
|
193
233
|
}
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZV9wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbm90ZV9wcm9jZXNzb3Ivbm90ZV9wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGFBQWEsRUFFYixVQUFVLEdBQ1gsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsMEJBQTBCLEVBQWtCLE1BQU0sb0JBQW9CLENBQUM7QUFFdEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUduRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFnQnZEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBT3hCO0lBQ0U7O09BRUc7SUFDYSw4QkFBeUMsRUFDakQsUUFBa0IsRUFDbEIsRUFBZSxFQUNmLElBQWUsRUFDZixnQkFBd0Isb0JBQW9CLEVBQzVDLFlBQVksZ0JBQWdCLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsRUFDaEQsTUFBTSxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQztRQU52QyxtQ0FBOEIsR0FBOUIsOEJBQThCLENBQVc7UUFDakQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBVztRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUErQjtRQUM1QyxjQUFTLEdBQVQsU0FBUyxDQUF1QztRQUNoRCxRQUFHLEdBQUgsR0FBRyxDQUE0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
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZV9wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbm90ZV9wcm9jZXNzb3Ivbm90ZV9wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixhQUFhLEVBQWdCLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTlGLE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsMEJBQTBCLEdBRTNCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUWhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWN4RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQWdCeEIsWUFDa0IsT0FBcUI7SUFDckMsbUdBQW1HO0lBQ2xGLEtBQWdCO0lBQ2pDLG1HQUFtRztJQUNsRixLQUFnQixFQUN6QixRQUFrQixFQUNsQixFQUFlLEVBQ2YsSUFBZSxFQUNmLGFBQXFCLEVBQ3JCLFNBQXdCLEVBQ3hCLEdBQVc7UUFWSCxZQUFPLEdBQVAsT0FBTyxDQUFjO1FBRXBCLFVBQUssR0FBTCxLQUFLLENBQVc7UUFFaEIsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFXO1FBQ2Ysa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFRO1FBMUJyQixtRUFBbUU7UUFDbkQsVUFBSyxHQUFVLElBQUksS0FBSyxFQUFFLENBQUM7UUFFM0MsNENBQTRDO1FBQzVCLFVBQUss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
|
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
import { type L1NotePayload, type TxHash } from '@aztec/circuit-types';
|
|
2
2
|
import { Fr, type PublicKey } from '@aztec/circuits.js';
|
|
3
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
3
4
|
import { type AcirSimulator } from '@aztec/simulator';
|
|
4
|
-
import {
|
|
5
|
+
import { DeferredNoteDao } from '../database/deferred_note_dao.js';
|
|
6
|
+
import { IncomingNoteDao } from '../database/incoming_note_dao.js';
|
|
7
|
+
import { OutgoingNoteDao } from '../database/outgoing_note_dao.js';
|
|
5
8
|
/**
|
|
6
9
|
* Decodes a note from a transaction that we know was intended for us.
|
|
7
10
|
* Throws if we do not yet have the contract corresponding to the note in our database.
|
|
8
11
|
* Accepts a set of excluded indices, which are indices that have been assigned a note in the same tx.
|
|
9
12
|
* Inserts the index of the note into the excludedIndices set if the note is successfully decoded.
|
|
10
13
|
*
|
|
11
|
-
* @param
|
|
14
|
+
* @param ivpkM - The public counterpart to the secret key to be used in the decryption of incoming note logs.
|
|
15
|
+
* @param ovpkM - The public counterpart to the secret key to be used in the decryption of outgoing note logs.
|
|
12
16
|
* @param payload - An instance of l1NotePayload.
|
|
13
17
|
* @param txHash - The hash of the transaction that created the note. Equivalent to the first nullifier of the transaction.
|
|
14
18
|
* @param newNoteHashes - New note hashes in this transaction, one of which belongs to this note.
|
|
15
19
|
* @param dataStartIndexForTx - The next available leaf index for the note hash tree for this transaction.
|
|
16
20
|
* @param excludedIndices - Indices that have been assigned a note in the same tx. Notes in a tx can have the same l1NotePayload, we need to find a different index for each replicate.
|
|
17
21
|
* @param simulator - An instance of AcirSimulator.
|
|
18
|
-
* @returns
|
|
22
|
+
* @returns An object containing the incoming, outgoing, and deferred notes.
|
|
19
23
|
*/
|
|
20
|
-
export declare function
|
|
24
|
+
export declare function produceNoteDaos(simulator: AcirSimulator, ivpkM: PublicKey | undefined, ovpkM: PublicKey | undefined, payload: L1NotePayload, txHash: TxHash, newNoteHashes: Fr[], dataStartIndexForTx: number, excludedIndices: Set<number>, log: Logger): Promise<{
|
|
25
|
+
incomingNote: IncomingNoteDao | undefined;
|
|
26
|
+
outgoingNote: OutgoingNoteDao | undefined;
|
|
27
|
+
incomingDeferredNote: DeferredNoteDao | undefined;
|
|
28
|
+
outgoingDeferredNote: DeferredNoteDao | undefined;
|
|
29
|
+
}>;
|
|
21
30
|
//# sourceMappingURL=produce_note_dao.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"produce_note_dao.d.ts","sourceRoot":"","sources":["../../src/note_processor/produce_note_dao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"produce_note_dao.d.ts","sourceRoot":"","sources":["../../src/note_processor/produce_note_dao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,aAAa,EAAyB,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,SAAS,GAAG,SAAS,EAC5B,KAAK,EAAE,SAAS,GAAG,SAAS,EAC5B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,EAAE,EAAE,EACnB,mBAAmB,EAAE,MAAM,EAC3B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,EAC5B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IACT,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;IAC1C,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;IAC1C,oBAAoB,EAAE,eAAe,GAAG,SAAS,CAAC;IAClD,oBAAoB,EAAE,eAAe,GAAG,SAAS,CAAC;CACnD,CAAC,CA4HD"}
|
|
@@ -1,60 +1,117 @@
|
|
|
1
1
|
import { Fr } from '@aztec/circuits.js';
|
|
2
2
|
import { computeNoteHashNonce, siloNullifier } from '@aztec/circuits.js/hash';
|
|
3
|
-
import {
|
|
3
|
+
import { ContractNotFoundError } from '@aztec/simulator';
|
|
4
|
+
import { DeferredNoteDao } from '../database/deferred_note_dao.js';
|
|
5
|
+
import { IncomingNoteDao } from '../database/incoming_note_dao.js';
|
|
6
|
+
import { OutgoingNoteDao } from '../database/outgoing_note_dao.js';
|
|
4
7
|
/**
|
|
5
8
|
* Decodes a note from a transaction that we know was intended for us.
|
|
6
9
|
* Throws if we do not yet have the contract corresponding to the note in our database.
|
|
7
10
|
* Accepts a set of excluded indices, which are indices that have been assigned a note in the same tx.
|
|
8
11
|
* Inserts the index of the note into the excludedIndices set if the note is successfully decoded.
|
|
9
12
|
*
|
|
10
|
-
* @param
|
|
13
|
+
* @param ivpkM - The public counterpart to the secret key to be used in the decryption of incoming note logs.
|
|
14
|
+
* @param ovpkM - The public counterpart to the secret key to be used in the decryption of outgoing note logs.
|
|
11
15
|
* @param payload - An instance of l1NotePayload.
|
|
12
16
|
* @param txHash - The hash of the transaction that created the note. Equivalent to the first nullifier of the transaction.
|
|
13
17
|
* @param newNoteHashes - New note hashes in this transaction, one of which belongs to this note.
|
|
14
18
|
* @param dataStartIndexForTx - The next available leaf index for the note hash tree for this transaction.
|
|
15
19
|
* @param excludedIndices - Indices that have been assigned a note in the same tx. Notes in a tx can have the same l1NotePayload, we need to find a different index for each replicate.
|
|
16
20
|
* @param simulator - An instance of AcirSimulator.
|
|
17
|
-
* @returns
|
|
21
|
+
* @returns An object containing the incoming, outgoing, and deferred notes.
|
|
18
22
|
*/
|
|
19
|
-
export async function
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
export async function produceNoteDaos(simulator, ivpkM, ovpkM, payload, txHash, newNoteHashes, dataStartIndexForTx, excludedIndices, log) {
|
|
24
|
+
if (!ivpkM && !ovpkM) {
|
|
25
|
+
throw new Error('Both ivpkM and ovpkM are undefined. Cannot create note.');
|
|
26
|
+
}
|
|
27
|
+
let incomingNote;
|
|
28
|
+
let outgoingNote;
|
|
29
|
+
let incomingDeferredNote;
|
|
30
|
+
let outgoingDeferredNote;
|
|
31
|
+
try {
|
|
32
|
+
if (ivpkM) {
|
|
33
|
+
const { noteHashIndex, nonce, innerNoteHash, siloedNullifier } = await findNoteIndexAndNullifier(simulator, newNoteHashes, txHash, payload, excludedIndices, true);
|
|
34
|
+
const index = BigInt(dataStartIndexForTx + noteHashIndex);
|
|
35
|
+
excludedIndices?.add(noteHashIndex);
|
|
36
|
+
incomingNote = new IncomingNoteDao(payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, nonce, innerNoteHash, siloedNullifier, index, ivpkM);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
if (e instanceof ContractNotFoundError) {
|
|
41
|
+
log.warn(e.message);
|
|
42
|
+
if (ivpkM) {
|
|
43
|
+
incomingDeferredNote = new DeferredNoteDao(ivpkM, payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, newNoteHashes, dataStartIndexForTx);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
log.error(`Could not process note because of "${e}". Discarding note...`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
if (ovpkM) {
|
|
52
|
+
if (incomingNote) {
|
|
53
|
+
// Incoming note is defined meaning that this PXE has both the incoming and outgoing keys. We can skip computing
|
|
54
|
+
// note hash and note index since we already have them in the incoming note.
|
|
55
|
+
outgoingNote = new OutgoingNoteDao(payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, incomingNote.nonce, incomingNote.innerNoteHash, incomingNote.index, ovpkM);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
const { noteHashIndex, nonce, innerNoteHash } = await findNoteIndexAndNullifier(simulator, newNoteHashes, txHash, payload, excludedIndices, false);
|
|
59
|
+
const index = BigInt(dataStartIndexForTx + noteHashIndex);
|
|
60
|
+
excludedIndices?.add(noteHashIndex);
|
|
61
|
+
outgoingNote = new OutgoingNoteDao(payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, nonce, innerNoteHash, index, ovpkM);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
if (e instanceof ContractNotFoundError) {
|
|
67
|
+
log.warn(e.message);
|
|
68
|
+
if (ovpkM) {
|
|
69
|
+
outgoingDeferredNote = new DeferredNoteDao(ovpkM, payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, newNoteHashes, dataStartIndexForTx);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
log.error(`Could not process note because of "${e}". Discarding note...`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
incomingNote,
|
|
78
|
+
outgoingNote,
|
|
79
|
+
incomingDeferredNote,
|
|
80
|
+
outgoingDeferredNote,
|
|
81
|
+
};
|
|
24
82
|
}
|
|
25
83
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* @param
|
|
33
|
-
* @param txHash - First nullifier in the tx.
|
|
34
|
-
* @param l1NotePayload - An instance of l1NotePayload.
|
|
84
|
+
* Finds nonce, index, inner hash and siloed nullifier for a given note.
|
|
85
|
+
* @dev Finds the index in the note hash tree by computing the note hash with different nonce and see which hash for
|
|
86
|
+
* the current tx matches this value.
|
|
87
|
+
* @remarks This method assists in identifying spent notes in the note hash tree.
|
|
88
|
+
* @param noteHashes - Note hashes in the tx. One of them should correspond to the note we are looking for
|
|
89
|
+
* @param txHash - Hash of a tx the note was emitted in.
|
|
90
|
+
* @param l1NotePayload - The note payload.
|
|
35
91
|
* @param excludedIndices - Indices that have been assigned a note in the same tx. Notes in a tx can have the same
|
|
36
92
|
* l1NotePayload. We need to find a different index for each replicate.
|
|
37
|
-
* @
|
|
38
|
-
*
|
|
93
|
+
* @param computeNullifier - A flag indicating whether to compute the nullifier or just return 0.
|
|
94
|
+
* @returns Nonce, index, inner hash and siloed nullifier for a given note.
|
|
95
|
+
* @throws If cannot find the nonce for the note.
|
|
39
96
|
*/
|
|
40
|
-
async function findNoteIndexAndNullifier(simulator,
|
|
41
|
-
let
|
|
97
|
+
async function findNoteIndexAndNullifier(simulator, noteHashes, txHash, { contractAddress, storageSlot, noteTypeId, note }, excludedIndices, computeNullifier) {
|
|
98
|
+
let noteHashIndex = 0;
|
|
42
99
|
let nonce;
|
|
43
100
|
let innerNoteHash;
|
|
44
101
|
let siloedNoteHash;
|
|
45
102
|
let innerNullifier;
|
|
46
103
|
const firstNullifier = Fr.fromBuffer(txHash.toBuffer());
|
|
47
|
-
for (;
|
|
48
|
-
if (excludedIndices.has(
|
|
104
|
+
for (; noteHashIndex < noteHashes.length; ++noteHashIndex) {
|
|
105
|
+
if (excludedIndices.has(noteHashIndex)) {
|
|
49
106
|
continue;
|
|
50
107
|
}
|
|
51
|
-
const
|
|
52
|
-
if (
|
|
108
|
+
const noteHash = noteHashes[noteHashIndex];
|
|
109
|
+
if (noteHash.equals(Fr.ZERO)) {
|
|
53
110
|
break;
|
|
54
111
|
}
|
|
55
|
-
const expectedNonce = computeNoteHashNonce(firstNullifier,
|
|
56
|
-
({ innerNoteHash, siloedNoteHash, innerNullifier } = await simulator.
|
|
57
|
-
if (
|
|
112
|
+
const expectedNonce = computeNoteHashNonce(firstNullifier, noteHashIndex);
|
|
113
|
+
({ innerNoteHash, siloedNoteHash, innerNullifier } = await simulator.computeNoteHashAndOptionallyANullifier(contractAddress, expectedNonce, storageSlot, noteTypeId, computeNullifier, note));
|
|
114
|
+
if (noteHash.equals(siloedNoteHash)) {
|
|
58
115
|
nonce = expectedNonce;
|
|
59
116
|
break;
|
|
60
117
|
}
|
|
@@ -62,13 +119,13 @@ async function findNoteIndexAndNullifier(simulator, commitments, txHash, { contr
|
|
|
62
119
|
if (!nonce) {
|
|
63
120
|
// NB: this used to warn the user that a decrypted log didn't match any notes.
|
|
64
121
|
// This was previously fine as we didn't chop transient note logs, but now we do (#1641 complete).
|
|
65
|
-
throw new Error('Cannot find a matching
|
|
122
|
+
throw new Error('Cannot find a matching note hash for the note.');
|
|
66
123
|
}
|
|
67
124
|
return {
|
|
68
|
-
|
|
125
|
+
noteHashIndex,
|
|
69
126
|
nonce,
|
|
70
127
|
innerNoteHash: innerNoteHash,
|
|
71
128
|
siloedNullifier: siloNullifier(contractAddress, innerNullifier),
|
|
72
129
|
};
|
|
73
130
|
}
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjZV9ub3RlX2Rhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub3RlX3Byb2Nlc3Nvci9wcm9kdWNlX25vdGVfZGFvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQWtCLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlFLE9BQU8sRUFBc0IscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVuRTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FDbkMsU0FBd0IsRUFDeEIsS0FBNEIsRUFDNUIsS0FBNEIsRUFDNUIsT0FBc0IsRUFDdEIsTUFBYyxFQUNkLGFBQW1CLEVBQ25CLG1CQUEyQixFQUMzQixlQUE0QixFQUM1QixHQUFXO0lBT1gsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFBSSxZQUF5QyxDQUFDO0lBQzlDLElBQUksWUFBeUMsQ0FBQztJQUM5QyxJQUFJLG9CQUFpRCxDQUFDO0lBQ3RELElBQUksb0JBQWlELENBQUM7SUFFdEQsSUFBSSxDQUFDO1FBQ0gsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsR0FBRyxNQUFNLHlCQUF5QixDQUM5RixTQUFTLEVBQ1QsYUFBYSxFQUNi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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pxe_http_server.d.ts","sourceRoot":"","sources":["../../src/pxe_http/pxe_http_server.ts"],"names":[],"mappings":";AAAA,OAAO,EAUL,KAAK,GAAG,EAQT,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"pxe_http_server.d.ts","sourceRoot":"","sources":["../../src/pxe_http/pxe_http_server.ts"],"names":[],"mappings":";AAAA,OAAO,EAUL,KAAK,GAAG,EAQT,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,aAAa,EAAiC,MAAM,mCAAmC,CAAC;AAEjG,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,GAAG,aAAa,CAyBjE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAStF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AuthWitness, CompleteAddress, EncryptedNoteL2BlockL2Logs, ExtendedNote, ExtendedUnencryptedL2Log, L2Block, LogId, Note, NullifierMembershipWitness, SimulatedTx, Tx, TxEffect, TxExecutionRequest, TxHash, TxReceipt, UnencryptedL2BlockL2Logs, } from '@aztec/circuit-types';
|
|
2
2
|
import { FunctionSelector } from '@aztec/circuits.js';
|
|
3
|
+
import { NoteSelector } from '@aztec/foundation/abi';
|
|
3
4
|
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
4
5
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
6
|
import { Fr, GrumpkinScalar, Point } from '@aztec/foundation/fields';
|
|
@@ -27,6 +28,7 @@ export function createPXERpcServer(pxeService) {
|
|
|
27
28
|
L2Block,
|
|
28
29
|
TxEffect,
|
|
29
30
|
LogId,
|
|
31
|
+
NoteSelector,
|
|
30
32
|
}, { SimulatedTx, Tx, TxReceipt, EncryptedNoteL2BlockL2Logs, UnencryptedL2BlockL2Logs, NullifierMembershipWitness }, ['start', 'stop']);
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
@@ -43,4 +45,4 @@ export function startPXEHttpServer(pxeService, port) {
|
|
|
43
45
|
httpServer.listen(port);
|
|
44
46
|
return httpServer;
|
|
45
47
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlX2h0dHBfc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B4ZV9odHRwL3B4ZV9odHRwX3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsWUFBWSxFQUNaLHdCQUF3QixFQUN4QixPQUFPLEVBQ1AsS0FBSyxFQUNMLElBQUksRUFDSiwwQkFBMEIsRUFFMUIsV0FBVyxFQUNYLEVBQUUsRUFDRixRQUFRLEVBQ1Isa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixTQUFTLEVBQ1Qsd0JBQXdCLEdBQ3pCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpHLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUV4Qjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsVUFBZTtJQUNoRCxPQUFPLElBQUksYUFBYSxDQUN0QixVQUFVLEVBQ1Y7UUFDRSxlQUFlO1FBQ2YsWUFBWTtRQUNaLGtCQUFrQjtRQUNsQix3QkFBd0I7UUFDeEIsZ0JBQWdCO1FBQ2hCLE1BQU07UUFDTixVQUFVO1FBQ1YsS0FBSztRQUNMLEVBQUU7UUFDRixjQUFjO1FBQ2QsSUFBSTtRQUNKLFlBQVk7UUFDWixXQUFXO1FBQ1gsT0FBTztRQUNQLFFBQVE7UUFDUixLQUFLO1FBQ0wsWUFBWTtLQUNiLEVBQ0QsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEIsRUFBRSxFQUNoSCxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FDbEIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxVQUFlLEVBQUUsSUFBcUI7SUFDdkUsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakQsTUFBTSxTQUFTLEdBQUcsNkJBQTZCLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFdEUsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQy9CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDckQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV4QixPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create_pxe_service.d.ts","sourceRoot":"","sources":["../../src/pxe_service/create_pxe_service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"create_pxe_service.d.ts","sourceRoot":"","sources":["../../src/pxe_service/create_pxe_service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAezE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,EACxB,YAAY,GAAE,MAAM,GAAG,OAAO,GAAG,SAAqB,EACtD,YAAY,CAAC,EAAE,YAAY,uBAyC5B"}
|