@aztec/simulator 0.84.0 → 0.85.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/common/debug_fn_name.d.ts +1 -1
- package/dest/common/debug_fn_name.d.ts.map +1 -1
- package/dest/common/index.d.ts +0 -1
- package/dest/common/index.d.ts.map +1 -1
- package/dest/common/index.js +0 -1
- package/dest/private/acvm/oracle/oracle.d.ts +1 -1
- package/dest/private/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/private/acvm/oracle/oracle.js +3 -3
- package/dest/private/acvm/oracle/typed_oracle.d.ts +3 -3
- package/dest/private/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/private/acvm/oracle/typed_oracle.js +1 -1
- package/dest/private/execution_data_provider.d.ts +39 -5
- package/dest/private/execution_data_provider.d.ts.map +1 -1
- package/dest/private/index.d.ts +1 -0
- package/dest/private/index.d.ts.map +1 -1
- package/dest/private/index.js +1 -0
- package/dest/private/message_load_oracle_inputs.d.ts.map +1 -0
- package/dest/private/simulator.js +1 -1
- package/dest/private/utility_execution_oracle.d.ts +3 -3
- package/dest/private/utility_execution_oracle.d.ts.map +1 -1
- package/dest/private/utility_execution_oracle.js +2 -6
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +4 -4
- package/dest/public/avm/test_utils.d.ts +1 -1
- package/dest/public/avm/test_utils.d.ts.map +1 -1
- package/dest/public/avm/test_utils.js +2 -2
- package/dest/{common → public}/db_interfaces.d.ts +0 -38
- package/dest/public/db_interfaces.d.ts.map +1 -0
- package/dest/public/db_interfaces.js +3 -0
- package/dest/public/hinting_db_sources.d.ts +11 -1
- package/dest/public/hinting_db_sources.d.ts.map +1 -1
- package/dest/public/hinting_db_sources.js +80 -13
- package/dest/public/index.d.ts +1 -1
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +1 -1
- package/dest/public/public_db_sources.d.ts +3 -3
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +27 -9
- package/dest/public/public_processor/public_processor.d.ts +1 -1
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +3 -3
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +6 -4
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +1 -1
- package/dest/public/state_manager/nullifiers.js +2 -2
- package/dest/public/state_manager/public_storage.d.ts +1 -1
- package/dest/public/state_manager/public_storage.d.ts.map +1 -1
- package/dest/public/state_manager/state_manager.js +4 -4
- package/package.json +14 -18
- package/src/common/debug_fn_name.ts +1 -1
- package/src/common/index.ts +0 -1
- package/src/private/acvm/oracle/oracle.ts +6 -4
- package/src/private/acvm/oracle/typed_oracle.ts +3 -2
- package/src/private/execution_data_provider.ts +49 -5
- package/src/private/index.ts +1 -0
- package/src/private/simulator.ts +2 -2
- package/src/private/utility_execution_oracle.ts +5 -7
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +2 -2
- package/src/public/avm/test_utils.ts +2 -2
- package/src/{common → public}/db_interfaces.ts +0 -48
- package/src/public/hinting_db_sources.ts +121 -19
- package/src/public/index.ts +1 -1
- package/src/public/public_db_sources.ts +36 -8
- package/src/public/public_processor/public_processor.ts +1 -3
- package/src/public/public_tx_simulator/public_tx_context.ts +10 -10
- package/src/public/public_tx_simulator/public_tx_simulator.ts +1 -2
- package/src/public/state_manager/nullifiers.ts +2 -2
- package/src/public/state_manager/public_storage.ts +1 -1
- package/src/public/state_manager/state_manager.ts +4 -4
- package/dest/common/db_interfaces.d.ts.map +0 -1
- package/dest/common/db_interfaces.js +0 -1
- package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
- /package/dest/{common → private}/message_load_oracle_inputs.d.ts +0 -0
- /package/dest/{common → private}/message_load_oracle_inputs.js +0 -0
- /package/src/{common → private}/message_load_oracle_inputs.ts +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { sha256Trunc } from '@aztec/foundation/crypto';
|
|
1
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
-
import { AvmBytecodeCommitmentHint, AvmContractClassHint, AvmContractInstanceHint, AvmGetLeafPreimageHintNullifierTree, AvmGetLeafPreimageHintPublicDataTree, AvmGetLeafValueHint, AvmGetPreviousValueIndexHint, AvmGetSiblingPathHint, AvmSequentialInsertHintNullifierTree, AvmSequentialInsertHintPublicDataTree } from '@aztec/stdlib/avm';
|
|
4
|
-
import { AppendOnlyTreeSnapshot, MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf, getTreeName } from '@aztec/stdlib/trees';
|
|
4
|
+
import { AvmAppendLeavesHint, AvmBytecodeCommitmentHint, AvmCommitCheckpointHint, AvmContractClassHint, AvmContractInstanceHint, AvmCreateCheckpointHint, AvmGetLeafPreimageHintNullifierTree, AvmGetLeafPreimageHintPublicDataTree, AvmGetLeafValueHint, AvmGetPreviousValueIndexHint, AvmGetSiblingPathHint, AvmRevertCheckpointHint, AvmSequentialInsertHintNullifierTree, AvmSequentialInsertHintPublicDataTree } from '@aztec/stdlib/avm';
|
|
5
|
+
import { AppendOnlyTreeSnapshot, MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf, getTreeName, merkleTreeIds } from '@aztec/stdlib/trees';
|
|
5
6
|
import { strict as assert } from 'assert';
|
|
6
7
|
import { PublicTreesDB } from './public_db_sources.js';
|
|
7
8
|
/**
|
|
@@ -44,8 +45,17 @@ import { PublicTreesDB } from './public_db_sources.js';
|
|
|
44
45
|
*/ export class HintingPublicTreesDB extends PublicTreesDB {
|
|
45
46
|
hints;
|
|
46
47
|
static log = createLogger('HintingPublicTreesDB');
|
|
48
|
+
// This stack is only for debugging purposes.
|
|
49
|
+
// The top of the stack is the current checkpoint id.
|
|
50
|
+
// We need the stack to be non-empty and use 0 as an arbitrary initial checkpoint id.
|
|
51
|
+
// This is not necessarily a checkpoint that happened, but whatever tree state we start with.
|
|
52
|
+
checkpointStack;
|
|
53
|
+
nextCheckpointId;
|
|
54
|
+
checkpointActionCounter;
|
|
47
55
|
constructor(db, hints){
|
|
48
|
-
super(db), this.hints = hints
|
|
56
|
+
super(db), this.hints = hints, this.checkpointStack = [
|
|
57
|
+
0
|
|
58
|
+
], this.nextCheckpointId = 1, this.checkpointActionCounter = 0;
|
|
49
59
|
}
|
|
50
60
|
// Getters.
|
|
51
61
|
async getSiblingPath(treeId, index) {
|
|
@@ -104,7 +114,8 @@ import { PublicTreesDB } from './public_db_sources.js';
|
|
|
104
114
|
const beforeState = await this.getHintKey(treeId);
|
|
105
115
|
const result = await super.sequentialInsert(treeId, leaves);
|
|
106
116
|
const afterState = await this.getHintKey(treeId);
|
|
107
|
-
HintingPublicTreesDB.log.debug(
|
|
117
|
+
HintingPublicTreesDB.log.debug('[sequentialInsert] Evolved tree state.');
|
|
118
|
+
HintingPublicTreesDB.logTreeChange(beforeState, afterState, treeId);
|
|
108
119
|
switch(treeId){
|
|
109
120
|
case MerkleTreeId.PUBLIC_DATA_TREE:
|
|
110
121
|
this.hints.sequentialInsertHintsPublicDataTree.push(new AvmSequentialInsertHintPublicDataTree(beforeState, afterState, treeId, PublicDataTreeLeaf.fromBuffer(leaves[0]), {
|
|
@@ -134,11 +145,39 @@ import { PublicTreesDB } from './public_db_sources.js';
|
|
|
134
145
|
}
|
|
135
146
|
return result;
|
|
136
147
|
}
|
|
148
|
+
async appendLeaves(treeId, leaves) {
|
|
149
|
+
// Use sequentialInsert for PublicDataTree and NullifierTree.
|
|
150
|
+
assert(treeId == MerkleTreeId.NOTE_HASH_TREE || treeId == MerkleTreeId.L1_TO_L2_MESSAGE_TREE);
|
|
151
|
+
// We need to process each leaf individually because we need the sibling path after insertion, to be able to constraint the insertion.
|
|
152
|
+
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/13380): This can be changed if the world state appendLeaves returns the sibling paths.
|
|
153
|
+
for (const leaf of leaves){
|
|
154
|
+
await this.appendLeafInternal(treeId, leaf);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async createCheckpoint() {
|
|
158
|
+
const actionCounter = this.checkpointActionCounter++;
|
|
159
|
+
const oldCheckpointId = this.getCurrentCheckpointId();
|
|
160
|
+
const treesStateHash = await this.getTreesStateHash();
|
|
161
|
+
await super.createCheckpoint();
|
|
162
|
+
this.checkpointStack.push(this.nextCheckpointId++);
|
|
163
|
+
const newCheckpointId = this.getCurrentCheckpointId();
|
|
164
|
+
this.hints.createCheckpointHints.push(new AvmCreateCheckpointHint(actionCounter, oldCheckpointId, newCheckpointId));
|
|
165
|
+
HintingPublicTreesDB.log.debug(`[createCheckpoint:${actionCounter}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId} at trees state ${treesStateHash}.`);
|
|
166
|
+
}
|
|
167
|
+
async commitCheckpoint() {
|
|
168
|
+
const actionCounter = this.checkpointActionCounter++;
|
|
169
|
+
const oldCheckpointId = this.getCurrentCheckpointId();
|
|
170
|
+
const treesStateHash = await this.getTreesStateHash();
|
|
171
|
+
await super.commitCheckpoint();
|
|
172
|
+
this.checkpointStack.pop();
|
|
173
|
+
const newCheckpointId = this.getCurrentCheckpointId();
|
|
174
|
+
this.hints.commitCheckpointHints.push(new AvmCommitCheckpointHint(actionCounter, oldCheckpointId, newCheckpointId));
|
|
175
|
+
HintingPublicTreesDB.log.debug(`[commitCheckpoint:${actionCounter}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId} at trees state ${treesStateHash}.`);
|
|
176
|
+
}
|
|
137
177
|
async revertCheckpoint() {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
// We will need to keep a stack of checkpoints on the C++ side.
|
|
178
|
+
const actionCounter = this.checkpointActionCounter++;
|
|
179
|
+
const oldCheckpointId = this.getCurrentCheckpointId();
|
|
180
|
+
const treesStateHash = await this.getTreesStateHash();
|
|
142
181
|
const beforeState = {
|
|
143
182
|
[MerkleTreeId.PUBLIC_DATA_TREE]: await this.getHintKey(MerkleTreeId.PUBLIC_DATA_TREE),
|
|
144
183
|
[MerkleTreeId.NULLIFIER_TREE]: await this.getHintKey(MerkleTreeId.NULLIFIER_TREE),
|
|
@@ -147,6 +186,8 @@ import { PublicTreesDB } from './public_db_sources.js';
|
|
|
147
186
|
[MerkleTreeId.ARCHIVE]: await this.getHintKey(MerkleTreeId.ARCHIVE)
|
|
148
187
|
};
|
|
149
188
|
await super.revertCheckpoint();
|
|
189
|
+
this.checkpointStack.pop();
|
|
190
|
+
const newCheckpointId = this.getCurrentCheckpointId();
|
|
150
191
|
const afterState = {
|
|
151
192
|
[MerkleTreeId.PUBLIC_DATA_TREE]: await this.getHintKey(MerkleTreeId.PUBLIC_DATA_TREE),
|
|
152
193
|
[MerkleTreeId.NULLIFIER_TREE]: await this.getHintKey(MerkleTreeId.NULLIFIER_TREE),
|
|
@@ -154,11 +195,10 @@ import { PublicTreesDB } from './public_db_sources.js';
|
|
|
154
195
|
[MerkleTreeId.L1_TO_L2_MESSAGE_TREE]: await this.getHintKey(MerkleTreeId.L1_TO_L2_MESSAGE_TREE),
|
|
155
196
|
[MerkleTreeId.ARCHIVE]: await this.getHintKey(MerkleTreeId.ARCHIVE)
|
|
156
197
|
};
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
HintingPublicTreesDB.log.debug(`${treeName}: ${beforeState[id].root}, ${beforeState[id].nextAvailableLeafIndex} -> ${afterState[id].root}, ${afterState[id].nextAvailableLeafIndex}.`);
|
|
198
|
+
this.hints.revertCheckpointHints.push(AvmRevertCheckpointHint.create(actionCounter, oldCheckpointId, newCheckpointId, beforeState, afterState));
|
|
199
|
+
HintingPublicTreesDB.log.debug(`[revertCheckpoint:${actionCounter}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId} at trees state ${treesStateHash}.`);
|
|
200
|
+
for (const treeId of merkleTreeIds()){
|
|
201
|
+
HintingPublicTreesDB.logTreeChange(beforeState[treeId], afterState[treeId], treeId);
|
|
162
202
|
}
|
|
163
203
|
}
|
|
164
204
|
// Private methods.
|
|
@@ -166,4 +206,31 @@ import { PublicTreesDB } from './public_db_sources.js';
|
|
|
166
206
|
const treeInfo = await super.getTreeInfo(treeId);
|
|
167
207
|
return new AppendOnlyTreeSnapshot(Fr.fromBuffer(treeInfo.root), Number(treeInfo.size));
|
|
168
208
|
}
|
|
209
|
+
getCurrentCheckpointId() {
|
|
210
|
+
return this.checkpointStack[this.checkpointStack.length - 1];
|
|
211
|
+
}
|
|
212
|
+
// For logging/debugging purposes.
|
|
213
|
+
async getTreesStateHash() {
|
|
214
|
+
const stateReferenceFields = (await super.getStateReference()).toFields();
|
|
215
|
+
return Fr.fromBuffer(sha256Trunc(Buffer.concat(stateReferenceFields.map((field)=>field.toBuffer()))));
|
|
216
|
+
}
|
|
217
|
+
static logTreeChange(beforeState, afterState, treeId) {
|
|
218
|
+
const treeName = getTreeName(treeId);
|
|
219
|
+
HintingPublicTreesDB.log.debug(`[${treeName}] Evolved tree state: ${beforeState.root}, ${beforeState.nextAvailableLeafIndex} -> ${afterState.root}, ${afterState.nextAvailableLeafIndex}.`);
|
|
220
|
+
}
|
|
221
|
+
async appendLeafInternal(treeId, leaf) {
|
|
222
|
+
// Use sequentialInsert for PublicDataTree and NullifierTree.
|
|
223
|
+
assert(treeId == MerkleTreeId.NOTE_HASH_TREE || treeId == MerkleTreeId.L1_TO_L2_MESSAGE_TREE);
|
|
224
|
+
const beforeState = await this.getHintKey(treeId);
|
|
225
|
+
await super.appendLeaves(treeId, [
|
|
226
|
+
leaf
|
|
227
|
+
]);
|
|
228
|
+
const afterState = await this.getHintKey(treeId);
|
|
229
|
+
HintingPublicTreesDB.log.debug('[appendLeaves] Evolved tree state.');
|
|
230
|
+
HintingPublicTreesDB.logTreeChange(beforeState, afterState, treeId);
|
|
231
|
+
this.hints.appendLeavesHints.push(new AvmAppendLeavesHint(beforeState, afterState, treeId, [
|
|
232
|
+
leaf
|
|
233
|
+
]));
|
|
234
|
+
return await this.getSiblingPath(treeId, BigInt(beforeState.nextAvailableLeafIndex));
|
|
235
|
+
}
|
|
169
236
|
}
|
package/dest/public/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from '
|
|
1
|
+
export * from './db_interfaces.js';
|
|
2
2
|
export * from './public_tx_simulator/index.js';
|
|
3
3
|
export * from './public_db_sources.js';
|
|
4
4
|
export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/public/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/public/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,kCAAkC,EAAE,MAAM,YAAY,CAAC"}
|
package/dest/public/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from '
|
|
1
|
+
export * from './db_interfaces.js';
|
|
2
2
|
export * from './public_tx_simulator/index.js';
|
|
3
3
|
export * from './public_db_sources.js';
|
|
4
4
|
export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
|
|
@@ -8,7 +8,7 @@ import { type ContractClassPublic, type ContractDataSource, type ContractInstanc
|
|
|
8
8
|
import type { BatchInsertionResult, IndexedTreeId, MerkleTreeLeafType, MerkleTreeWriteOperations, SequentialInsertionResult, TreeInfo } from '@aztec/stdlib/interfaces/server';
|
|
9
9
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
10
10
|
import type { BlockHeader, StateReference, Tx } from '@aztec/stdlib/tx';
|
|
11
|
-
import type { PublicContractsDBInterface, PublicStateDBInterface } from '
|
|
11
|
+
import type { PublicContractsDBInterface, PublicStateDBInterface } from './db_interfaces.js';
|
|
12
12
|
/**
|
|
13
13
|
* Implements the PublicContractsDBInterface using a ContractDataSource.
|
|
14
14
|
* Progressively records contracts in transaction as they are processed in a block.
|
|
@@ -126,7 +126,6 @@ declare class ForwardMerkleTree implements MerkleTreeWriteOperations {
|
|
|
126
126
|
* A class that provides access to the merkle trees, and other helper methods.
|
|
127
127
|
*/
|
|
128
128
|
export declare class PublicTreesDB extends ForwardMerkleTree implements PublicStateDBInterface {
|
|
129
|
-
private readonly db;
|
|
130
129
|
private logger;
|
|
131
130
|
constructor(db: MerkleTreeWriteOperations);
|
|
132
131
|
/**
|
|
@@ -146,7 +145,8 @@ export declare class PublicTreesDB extends ForwardMerkleTree implements PublicSt
|
|
|
146
145
|
storageWrite(contract: AztecAddress, slot: Fr, newValue: Fr): Promise<void>;
|
|
147
146
|
getL1ToL2LeafValue(leafIndex: bigint): Promise<Fr | undefined>;
|
|
148
147
|
getNoteHash(leafIndex: bigint): Promise<Fr | undefined>;
|
|
149
|
-
|
|
148
|
+
checkNullifierExists(nullifier: Fr): Promise<boolean>;
|
|
149
|
+
padTree(treeId: MerkleTreeId, leavesToInsert: number): Promise<void>;
|
|
150
150
|
}
|
|
151
151
|
export {};
|
|
152
152
|
//# sourceMappingURL=public_db_sources.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/public_db_sources.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"public_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/public_db_sources.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAEjC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,QAAQ,EACT,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAsE,MAAM,qBAAqB,CAAC;AACvH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,KAAK,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAG7F;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,0BAA0B;IAgBtD,OAAO,CAAC,UAAU;IAR9B,OAAO,CAAC,2BAA2B,CAAyB;IAC5D,OAAO,CAAC,wBAAwB,CAAyB;IACzD,OAAO,CAAC,UAAU,CAAyB;IAE3C,OAAO,CAAC,uBAAuB,CAAyB;IAExD,OAAO,CAAC,GAAG,CAAmD;gBAE1C,UAAU,EAAE,kBAAkB;IAElD;;;OAGG;IACU,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD;;;OAGG;IACU,4BAA4B,CAAC,EAAE,EAAE,EAAE;IAKhD;;;OAGG;IACU,yBAAyB,CAAC,EAAE,EAAE,EAAE;IAK7C;;;;OAIG;YACW,+BAA+B;IAW7C;;;;OAIG;YACW,4BAA4B;IAW1C;;;;OAIG;IACH,OAAO,CAAC,iCAAiC;IAQzC;;;;OAIG;IACH,OAAO,CAAC,8BAA8B;IAQtC;;;;;OAKG;YACW,0BAA0B;IAoBxC;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAcpC;;OAEG;IACI,mBAAmB;IAM1B;;;OAGG;IACI,oBAAoB,CAAC,kBAAkB,GAAE,OAAe;IAqBlD,mBAAmB,CAC9B,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAUtC,gBAAgB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAU/E,qBAAqB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAyBnE,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAGlH;AAED;;;;;;GAMG;AACH,cAAM,iBAAkB,YAAW,yBAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,yBAAyB;IAElE,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIpD,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAI5C,gBAAgB,IAAI,WAAW;IAI/B,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAI9F,qBAAqB,CAAC,EAAE,SAAS,aAAa,EAC5C,MAAM,EAAE,EAAE,EACV,KAAK,EAAE,MAAM,GACZ,OAAO,CACN;QACE,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,OAAO,CAAC;KACzB,GACD,SAAS,CACZ;IAID,eAAe,CAAC,EAAE,SAAS,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAIlH,eAAe,CAAC,EAAE,SAAS,YAAY,EACrC,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,GAC/B,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAIlC,oBAAoB,CAAC,EAAE,SAAS,YAAY,EAC1C,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAIlC,YAAY,CAAC,EAAE,SAAS,YAAY,EAClC,MAAM,EAAE,EAAE,EACV,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,CAAC,OAAO,MAAM,CAAC,GAAG,SAAS,CAAC;IAIzD,6BAA6B,CAAC,EAAE,SAAS,YAAY,EACnD,MAAM,EAAE,EAAE,EACV,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAIlC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,YAAY,CAAC,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlG,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EAAE,EAAE,SAAS,aAAa,EACtG,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;IAItE,gBAAgB,CAAC,UAAU,SAAS,MAAM,EAAE,EAAE,SAAS,aAAa,EAClE,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAIjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,iBAAkB,YAAW,sBAAsB;IACpF,OAAO,CAAC,MAAM,CAA6C;gBAE/C,EAAE,EAAE,yBAAyB;IAIzC;;;;;OAKG;IACU,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAmBvE;;;;;;OAMG;IACU,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3E,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAc9D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAcvD,oBAAoB,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBrD,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA0BlF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NULLIFIER_SUBTREE_HEIGHT, PUBLIC_DATA_SUBTREE_HEIGHT } from '@aztec/constants';
|
|
1
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
@@ -6,7 +7,7 @@ import { ContractInstanceDeployedEvent } from '@aztec/protocol-contracts/instanc
|
|
|
6
7
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
7
8
|
import { computePublicBytecodeCommitment } from '@aztec/stdlib/contract';
|
|
8
9
|
import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
|
|
9
|
-
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
10
|
+
import { MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
10
11
|
import { TxContractCache } from './tx_contract_cache.js';
|
|
11
12
|
/**
|
|
12
13
|
* Implements the PublicContractsDBInterface using a ContractDataSource.
|
|
@@ -249,10 +250,9 @@ import { TxContractCache } from './tx_contract_cache.js';
|
|
|
249
250
|
/**
|
|
250
251
|
* A class that provides access to the merkle trees, and other helper methods.
|
|
251
252
|
*/ export class PublicTreesDB extends ForwardMerkleTree {
|
|
252
|
-
db;
|
|
253
|
-
logger;
|
|
253
|
+
logger = createLogger('simulator:public-trees-db');
|
|
254
254
|
constructor(db){
|
|
255
|
-
super(db)
|
|
255
|
+
super(db);
|
|
256
256
|
}
|
|
257
257
|
/**
|
|
258
258
|
* Reads a value from public storage, returning zero if none.
|
|
@@ -308,7 +308,7 @@ import { TxContractCache } from './tx_contract_cache.js';
|
|
|
308
308
|
});
|
|
309
309
|
return leafValue;
|
|
310
310
|
}
|
|
311
|
-
async
|
|
311
|
+
async checkNullifierExists(nullifier) {
|
|
312
312
|
const timer = new Timer();
|
|
313
313
|
const lowLeafResult = await this.getPreviousValueIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBigInt());
|
|
314
314
|
if (!lowLeafResult) {
|
|
@@ -318,12 +318,30 @@ import { TxContractCache } from './tx_contract_cache.js';
|
|
|
318
318
|
await this.getSiblingPath(MerkleTreeId.NULLIFIER_TREE, lowLeafResult.index);
|
|
319
319
|
// TODO(fcarreiro): We need this for the hints. Might move it to the hinting layer.
|
|
320
320
|
await this.getLeafPreimage(MerkleTreeId.NULLIFIER_TREE, lowLeafResult.index);
|
|
321
|
-
const
|
|
322
|
-
this.logger.debug(`[DB]
|
|
321
|
+
const exists = lowLeafResult.alreadyPresent;
|
|
322
|
+
this.logger.debug(`[DB] Checked nullifier exists`, {
|
|
323
323
|
eventName: 'public-db-access',
|
|
324
324
|
duration: timer.ms(),
|
|
325
|
-
operation: '
|
|
325
|
+
operation: 'check-nullifier-exists'
|
|
326
326
|
});
|
|
327
|
-
return
|
|
327
|
+
return exists;
|
|
328
|
+
}
|
|
329
|
+
async padTree(treeId, leavesToInsert) {
|
|
330
|
+
switch(treeId){
|
|
331
|
+
// Indexed trees.
|
|
332
|
+
case MerkleTreeId.NULLIFIER_TREE:
|
|
333
|
+
await this.batchInsert(treeId, Array(leavesToInsert).fill(NullifierLeaf.empty().toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
|
|
334
|
+
break;
|
|
335
|
+
case MerkleTreeId.PUBLIC_DATA_TREE:
|
|
336
|
+
await this.batchInsert(treeId, Array(leavesToInsert).fill(PublicDataTreeLeaf.empty().toBuffer()), PUBLIC_DATA_SUBTREE_HEIGHT);
|
|
337
|
+
break;
|
|
338
|
+
// Non-indexed trees.
|
|
339
|
+
case MerkleTreeId.L1_TO_L2_MESSAGE_TREE:
|
|
340
|
+
case MerkleTreeId.NOTE_HASH_TREE:
|
|
341
|
+
await this.appendLeaves(treeId, Array(leavesToInsert).fill(Fr.ZERO));
|
|
342
|
+
break;
|
|
343
|
+
default:
|
|
344
|
+
throw new Error(`Padding not supported for tree ${treeId}`);
|
|
345
|
+
}
|
|
328
346
|
}
|
|
329
347
|
}
|
|
@@ -24,7 +24,7 @@ export declare class PublicProcessorFactory {
|
|
|
24
24
|
* @returns A new instance of a PublicProcessor.
|
|
25
25
|
*/
|
|
26
26
|
create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, skipFeeEnforcement: boolean): PublicProcessor;
|
|
27
|
-
protected createPublicTxSimulator(treesDB: PublicTreesDB, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, doMerkleOperations: boolean, skipFeeEnforcement: boolean
|
|
27
|
+
protected createPublicTxSimulator(treesDB: PublicTreesDB, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, doMerkleOperations: boolean, skipFeeEnforcement: boolean): PublicTxSimulator;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Converts Txs lifted from the P2P module into ProcessedTx objects by executing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":";;AAIA,OAAO,EAAE,KAAK,YAAY,EAAkC,MAAM,yBAAyB,CAAC;AAM5F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EACL,KAAK,QAAQ,EACb,eAAe,EACf,yBAAyB,EACzB,KAAK,WAAW,EAChB,EAAE,EAEF,KAAK,WAAW,EAGjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,KAAK,iBAAiB,EAA8B,MAAM,iCAAiC,CAAC;AAGrG;;GAEG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;gBAFf,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,eAAe,GAAE,eAAsC;IAGjE;;;;;;OAMG;IACI,MAAM,CACX,UAAU,EAAE,yBAAyB,EACrC,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,OAAO,GAC1B,eAAe;
|
|
1
|
+
{"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":";;AAIA,OAAO,EAAE,KAAK,YAAY,EAAkC,MAAM,yBAAyB,CAAC;AAM5F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EACL,KAAK,QAAQ,EACb,eAAe,EACf,yBAAyB,EACzB,KAAK,WAAW,EAChB,EAAE,EAEF,KAAK,WAAW,EAGjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,KAAK,iBAAiB,EAA8B,MAAM,iCAAiC,CAAC;AAGrG;;GAEG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;gBAFf,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,eAAe,GAAE,eAAsC;IAGjE;;;;;;OAMG;IACI,MAAM,CACX,UAAU,EAAE,yBAAyB,EACrC,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,OAAO,GAC1B,eAAe;IAqBlB,SAAS,CAAC,uBAAuB,CAC/B,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,OAAO,EAC3B,kBAAkB,EAAE,OAAO,GAC1B,iBAAiB;CAUrB;AASD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAG7C,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,OAAO,EAAE,aAAa;IAChC,SAAS,CAAC,WAAW,EAAE,iBAAiB;IACxC,SAAS,CAAC,iBAAiB,EAAE,iBAAiB;IAC9C,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,GAAG;IARb,OAAO,CAAC,OAAO,CAAyB;gBAE5B,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,iBAAiB,EAC9B,iBAAiB,EAAE,iBAAiB,EACtC,YAAY,EAAE,YAAY,EAClC,eAAe,GAAE,eAAsC,EAC/C,GAAG,yCAA6C;IAK1D,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;;;OAMG;IACU,OAAO,CAClB,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EACrC,MAAM,GAAE;QACN,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,GAAG,CAAC;QAClB,QAAQ,CAAC,EAAE,IAAI,CAAC;KACZ,EACN,SAAS,GAAE;QACT,mBAAmB,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;QACtC,cAAc,CAAC,EAAE;YAAE,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;SAAE,CAAC;KAC/D,GACL,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAoJtD,SAAS;YA2BT,gCAAgC;IAyC9C,kFAAkF;YACpE,uBAAuB;IA+BrC;;;;OAIG;YACW,4BAA4B;YAwB5B,oBAAoB;YA6BpB,wBAAwB;CA8CvC"}
|
|
@@ -41,11 +41,11 @@ import { PublicProcessorMetrics } from './public_processor_metrics.js';
|
|
|
41
41
|
*/ create(merkleTree, globalVariables, skipFeeEnforcement) {
|
|
42
42
|
const treesDB = new PublicTreesDB(merkleTree);
|
|
43
43
|
const contractsDB = new PublicContractsDB(this.contractDataSource);
|
|
44
|
-
const publicTxSimulator = this.createPublicTxSimulator(treesDB, contractsDB, globalVariables, /*doMerkleOperations=*/ true, skipFeeEnforcement
|
|
44
|
+
const publicTxSimulator = this.createPublicTxSimulator(treesDB, contractsDB, globalVariables, /*doMerkleOperations=*/ true, skipFeeEnforcement);
|
|
45
45
|
return new PublicProcessor(globalVariables, treesDB, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient);
|
|
46
46
|
}
|
|
47
|
-
createPublicTxSimulator(treesDB, contractsDB, globalVariables, doMerkleOperations, skipFeeEnforcement
|
|
48
|
-
return new TelemetryPublicTxSimulator(treesDB, contractsDB, globalVariables, doMerkleOperations, skipFeeEnforcement, telemetryClient);
|
|
47
|
+
createPublicTxSimulator(treesDB, contractsDB, globalVariables, doMerkleOperations, skipFeeEnforcement) {
|
|
48
|
+
return new TelemetryPublicTxSimulator(treesDB, contractsDB, globalVariables, doMerkleOperations, skipFeeEnforcement, this.telemetryClient);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
class PublicProcessorTimeoutError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_tx_context.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/public_tx_context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"public_tx_context.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/public_tx_context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MAX_L2_GAS_PER_TX_PUBLIC_PORTION, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
|
|
1
|
+
import { MAX_L2_GAS_PER_TX_PUBLIC_PORTION, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX } from '@aztec/constants';
|
|
2
2
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -67,9 +67,11 @@ import { getCallRequestsWithCalldataByPhase } from '../utils.js';
|
|
|
67
67
|
const trace = new SideEffectTrace(/*startSideEffectCounter=*/ 0, previousAccumulatedDataArrayLengths);
|
|
68
68
|
const firstNullifier = nonRevertibleAccumulatedDataFromPrivate.nullifiers[0];
|
|
69
69
|
// We wrap the DB to collect AVM hints.
|
|
70
|
-
const hints = new AvmExecutionHints(AvmTxHint.fromTx(tx));
|
|
70
|
+
const hints = new AvmExecutionHints(await AvmTxHint.fromTx(tx));
|
|
71
71
|
const hintingContractsDB = new HintingPublicContractsDB(contractsDB, hints);
|
|
72
72
|
const hintingTreesDB = new HintingPublicTreesDB(treesDB, hints);
|
|
73
|
+
const startStateReference = await treesDB.getStateReference();
|
|
74
|
+
hints.startingTreeRoots = new TreeSnapshots(startStateReference.l1ToL2MessageTree, startStateReference.partial.noteHashTree, startStateReference.partial.nullifierTree, startStateReference.partial.publicDataTree);
|
|
73
75
|
// Transaction level state manager that will be forked for revertible phases.
|
|
74
76
|
const txStateManager = PublicPersistableStateManager.create(hintingTreesDB, hintingContractsDB, trace, doMerkleOperations, firstNullifier, globalVariables.blockNumber.toNumber());
|
|
75
77
|
const gasSettings = tx.data.constants.txContext.gasSettings;
|
|
@@ -242,9 +244,9 @@ import { getCallRequestsWithCalldataByPhase } from '../utils.js';
|
|
|
242
244
|
}
|
|
243
245
|
avmCircuitPublicInputs.accumulatedData.publicDataWrites = padArrayEnd(Array.from(squashedPublicDataWrites.entries()).map(([slot, value])=>new PublicDataWrite(new Fr(slot), value)), PublicDataWrite.empty(), MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
|
|
244
246
|
const numNoteHashesToPad = MAX_NOTE_HASHES_PER_TX - countAccumulatedItems(avmCircuitPublicInputs.accumulatedData.noteHashes);
|
|
245
|
-
await stateManager.deprecatedGetTreesForPIGeneration().
|
|
247
|
+
await stateManager.deprecatedGetTreesForPIGeneration().padTree(MerkleTreeId.NOTE_HASH_TREE, numNoteHashesToPad);
|
|
246
248
|
const numNullifiersToPad = MAX_NULLIFIERS_PER_TX - countAccumulatedItems(avmCircuitPublicInputs.accumulatedData.nullifiers);
|
|
247
|
-
await stateManager.deprecatedGetTreesForPIGeneration().
|
|
249
|
+
await stateManager.deprecatedGetTreesForPIGeneration().padTree(MerkleTreeId.NULLIFIER_TREE, numNullifiersToPad);
|
|
248
250
|
const paddedState = await stateManager.deprecatedGetTreesForPIGeneration().getStateReference();
|
|
249
251
|
avmCircuitPublicInputs.endTreeSnapshots = new TreeSnapshots(paddedState.l1ToL2MessageTree, paddedState.partial.noteHashTree, paddedState.partial.nullifierTree, paddedState.partial.publicDataTree);
|
|
250
252
|
return avmCircuitPublicInputs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EACL,KAAK,eAAe,EACpB,yBAAyB,EACzB,6BAA6B,EAC7B,EAAE,EACF,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEhF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,yBAAyB,EAAE,CAAC;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC,CAAC;AAEF,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,OAAO;IACf,SAAS,CAAC,WAAW,EAAE,iBAAiB;IACxC,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,kBAAkB;IAP5B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;gBAGZ,OAAO,EAAE,aAAa,EACpB,WAAW,EAAE,iBAAiB,EAChC,eAAe,EAAE,eAAe,EAChC,kBAAkB,GAAE,OAAe,EACnC,kBAAkB,GAAE,OAAe;IAK7C;;;;OAIG;IACU,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/public_tx_simulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -294,7 +294,7 @@ export class PublicTxSimulator {
|
|
|
294
294
|
*/ static generateProvingRequest(publicInputs, hints) {
|
|
295
295
|
return {
|
|
296
296
|
type: ProvingRequestType.PUBLIC_VM,
|
|
297
|
-
inputs: new AvmCircuitInputs(
|
|
297
|
+
inputs: new AvmCircuitInputs(hints, publicInputs)
|
|
298
298
|
};
|
|
299
299
|
}
|
|
300
300
|
}
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
// `${MerkleTreeId[MerkleTreeId.NULLIFIER_TREE]} low leaf index should always be found (even if target leaf does not exist)`,
|
|
54
54
|
//);
|
|
55
55
|
//existsInTree = leafOrLowLeafIndex.alreadyPresent;
|
|
56
|
-
const
|
|
57
|
-
existsInTree =
|
|
56
|
+
const exists = await this.hostNullifiers.checkNullifierExists(siloedNullifier);
|
|
57
|
+
existsInTree = exists;
|
|
58
58
|
}
|
|
59
59
|
const exists = cacheHit || existsInTree;
|
|
60
60
|
return Promise.resolve({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
-
import type { PublicStateDBInterface } from '
|
|
3
|
+
import type { PublicStateDBInterface } from '../db_interfaces.js';
|
|
4
4
|
type PublicStorageReadResult = {
|
|
5
5
|
value: Fr;
|
|
6
6
|
cached: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_storage.d.ts","sourceRoot":"","sources":["../../../src/public/state_manager/public_storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"public_storage.d.ts","sourceRoot":"","sources":["../../../src/public/state_manager/public_storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,KAAK,uBAAuB,GAAG;IAC7B,KAAK,EAAE,EAAE,CAAC;IACV,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IAKtB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAP1B,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;;IAGzC,+DAA+D;IAC9C,iBAAiB,EAAE,sBAAsB;IAC1D,qDAAqD;IACpC,MAAM,CAAC,2BAAe;IAKzC;;OAEG;IACI,IAAI;IAIX;;;;;;;OAOG;IACI,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS;IAWhF;;;;;;;;;;OAUG;IACU,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmB5F;;;;;;OAMG;IACI,KAAK,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAI/D;;;;OAIG;IACI,cAAc,CAAC,qBAAqB,EAAE,aAAa;CAG3D"}
|
|
@@ -179,7 +179,7 @@ import { PublicStorage } from './public_storage.js';
|
|
|
179
179
|
this.log.trace(`Checking existence of nullifier (address=${contractAddress}, nullifier=${nullifier})`);
|
|
180
180
|
const siloedNullifier = await siloNullifier(contractAddress, nullifier);
|
|
181
181
|
if (this.doMerkleOperations) {
|
|
182
|
-
const exists = await this.treesDB.
|
|
182
|
+
const exists = await this.treesDB.checkNullifierExists(siloedNullifier);
|
|
183
183
|
this.log.trace(`Checked siloed nullifier ${siloedNullifier} (exists=${exists})`);
|
|
184
184
|
return Promise.resolve(exists);
|
|
185
185
|
} else {
|
|
@@ -204,9 +204,9 @@ import { PublicStorage } from './public_storage.js';
|
|
|
204
204
|
*/ async writeSiloedNullifier(siloedNullifier) {
|
|
205
205
|
this.log.trace(`Inserting siloed nullifier=${siloedNullifier}`);
|
|
206
206
|
if (this.doMerkleOperations) {
|
|
207
|
-
const
|
|
208
|
-
if (
|
|
209
|
-
this.log.verbose(`Siloed nullifier ${siloedNullifier} already present in tree
|
|
207
|
+
const exists = await this.treesDB.checkNullifierExists(siloedNullifier);
|
|
208
|
+
if (exists) {
|
|
209
|
+
this.log.verbose(`Siloed nullifier ${siloedNullifier} already present in tree!`);
|
|
210
210
|
throw new NullifierCollisionError(`Siloed nullifier ${siloedNullifier} already exists in parent cache or host.`);
|
|
211
211
|
} else {
|
|
212
212
|
await this.treesDB.sequentialInsert(MerkleTreeId.NULLIFIER_TREE, [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/simulator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.85.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": "./dest/server.js",
|
|
@@ -60,32 +60,28 @@
|
|
|
60
60
|
]
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@aztec/constants": "0.
|
|
64
|
-
"@aztec/foundation": "0.
|
|
65
|
-
"@aztec/noir-acvm_js": "0.
|
|
66
|
-
"@aztec/noir-noirc_abi": "0.
|
|
67
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
68
|
-
"@aztec/noir-types": "0.
|
|
69
|
-
"@aztec/protocol-contracts": "0.
|
|
70
|
-
"@aztec/stdlib": "0.
|
|
71
|
-
"@aztec/telemetry-client": "0.
|
|
72
|
-
"@aztec/world-state": "0.
|
|
73
|
-
"levelup": "^5.1.1",
|
|
63
|
+
"@aztec/constants": "0.85.0",
|
|
64
|
+
"@aztec/foundation": "0.85.0",
|
|
65
|
+
"@aztec/noir-acvm_js": "0.85.0",
|
|
66
|
+
"@aztec/noir-noirc_abi": "0.85.0",
|
|
67
|
+
"@aztec/noir-protocol-circuits-types": "0.85.0",
|
|
68
|
+
"@aztec/noir-types": "0.85.0",
|
|
69
|
+
"@aztec/protocol-contracts": "0.85.0",
|
|
70
|
+
"@aztec/stdlib": "0.85.0",
|
|
71
|
+
"@aztec/telemetry-client": "0.85.0",
|
|
72
|
+
"@aztec/world-state": "0.85.0",
|
|
74
73
|
"lodash.clonedeep": "^4.5.0",
|
|
75
74
|
"lodash.merge": "^4.6.2",
|
|
76
|
-
"memdown": "^6.1.1",
|
|
77
75
|
"tslib": "^2.4.0"
|
|
78
76
|
},
|
|
79
77
|
"devDependencies": {
|
|
80
|
-
"@aztec/kv-store": "0.
|
|
81
|
-
"@aztec/merkle-tree": "0.
|
|
82
|
-
"@aztec/noir-contracts.js": "0.
|
|
78
|
+
"@aztec/kv-store": "0.85.0",
|
|
79
|
+
"@aztec/merkle-tree": "0.85.0",
|
|
80
|
+
"@aztec/noir-contracts.js": "0.85.0",
|
|
83
81
|
"@jest/globals": "^29.5.0",
|
|
84
82
|
"@types/jest": "^29.5.0",
|
|
85
|
-
"@types/levelup": "^5.1.3",
|
|
86
83
|
"@types/lodash.clonedeep": "^4.5.7",
|
|
87
84
|
"@types/lodash.merge": "^4.6.9",
|
|
88
|
-
"@types/memdown": "^3.0.2",
|
|
89
85
|
"@types/node": "^18.7.23",
|
|
90
86
|
"jest": "^29.5.0",
|
|
91
87
|
"jest-mock-extended": "^3.0.4",
|
|
@@ -2,7 +2,7 @@ import type { Fr } from '@aztec/foundation/fields';
|
|
|
2
2
|
import { FunctionSelector } from '@aztec/stdlib/abi';
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
|
|
5
|
-
import type { PublicContractsDBInterface } from '
|
|
5
|
+
import type { PublicContractsDBInterface } from '../public/db_interfaces.js';
|
|
6
6
|
|
|
7
7
|
export async function getPublicFunctionDebugName(
|
|
8
8
|
db: PublicContractsDBInterface,
|
package/src/common/index.ts
CHANGED
|
@@ -398,7 +398,7 @@ export class Oracle {
|
|
|
398
398
|
fromBoundedVec(content, contentLength),
|
|
399
399
|
Fr.fromString(noteHash),
|
|
400
400
|
Fr.fromString(nullifier),
|
|
401
|
-
|
|
401
|
+
TxHash.fromString(txHash),
|
|
402
402
|
AztecAddress.fromString(recipient),
|
|
403
403
|
);
|
|
404
404
|
|
|
@@ -496,18 +496,20 @@ export class Oracle {
|
|
|
496
496
|
[contractAddress]: ACVMField[],
|
|
497
497
|
[recipient]: ACVMField[],
|
|
498
498
|
[eventSelector]: ACVMField[],
|
|
499
|
-
|
|
500
|
-
[
|
|
499
|
+
msgContentBVecStorage: ACVMField[],
|
|
500
|
+
[msgContentLength]: ACVMField[],
|
|
501
501
|
[txHash]: ACVMField[],
|
|
502
502
|
[logIndexInTx]: ACVMField[],
|
|
503
|
+
[txIndexInBlock]: ACVMField[],
|
|
503
504
|
) {
|
|
504
505
|
await this.typedOracle.storePrivateEventLog(
|
|
505
506
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
506
507
|
AztecAddress.fromField(Fr.fromString(recipient)),
|
|
507
508
|
EventSelector.fromField(Fr.fromString(eventSelector)),
|
|
508
|
-
fromBoundedVec(
|
|
509
|
+
fromBoundedVec(msgContentBVecStorage, msgContentLength),
|
|
509
510
|
new TxHash(Fr.fromString(txHash)),
|
|
510
511
|
Fr.fromString(logIndexInTx).toNumber(),
|
|
512
|
+
Fr.fromString(txIndexInBlock).toNumber(),
|
|
511
513
|
);
|
|
512
514
|
return [];
|
|
513
515
|
}
|
|
@@ -9,7 +9,7 @@ import type { Note, NoteStatus } from '@aztec/stdlib/note';
|
|
|
9
9
|
import { type MerkleTreeId, type NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
10
10
|
import type { BlockHeader, TxHash } from '@aztec/stdlib/tx';
|
|
11
11
|
|
|
12
|
-
import type { MessageLoadOracleInputs } from '
|
|
12
|
+
import type { MessageLoadOracleInputs } from '../../message_load_oracle_inputs.js';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Information about a note needed during execution.
|
|
@@ -225,7 +225,7 @@ export abstract class TypedOracle {
|
|
|
225
225
|
_content: Fr[],
|
|
226
226
|
_noteHash: Fr,
|
|
227
227
|
_nullifier: Fr,
|
|
228
|
-
_txHash:
|
|
228
|
+
_txHash: TxHash,
|
|
229
229
|
_recipient: AztecAddress,
|
|
230
230
|
): Promise<void> {
|
|
231
231
|
return Promise.reject(new OracleMethodNotAvailableError('deliverNote'));
|
|
@@ -266,6 +266,7 @@ export abstract class TypedOracle {
|
|
|
266
266
|
_logContent: Fr[],
|
|
267
267
|
_txHash: TxHash,
|
|
268
268
|
_logIndexInTx: number,
|
|
269
|
+
_txIndexInBlock: number,
|
|
269
270
|
): Promise<void> {
|
|
270
271
|
return Promise.reject(new OracleMethodNotAvailableError('storePrivateEventLog'));
|
|
271
272
|
}
|