@aztec/simulator 0.84.0-nightly.20250409 → 0.84.0-nightly.20250412
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/typed_oracle.d.ts +1 -1
- package/dest/private/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/private/execution_data_provider.d.ts +35 -2
- 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/utility_execution_oracle.d.ts +1 -1
- 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 +2 -1
- package/dest/public/hinting_db_sources.d.ts.map +1 -1
- package/dest/public/hinting_db_sources.js +19 -8
- 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 -2
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +25 -6
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +5 -3
- 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/typed_oracle.ts +1 -1
- package/src/private/execution_data_provider.ts +44 -2
- package/src/private/index.ts +1 -0
- 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 +26 -14
- package/src/public/index.ts +1 -1
- package/src/public/public_db_sources.ts +35 -7
- package/src/public/public_tx_simulator/public_tx_context.ts +9 -9
- 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,5 +1,5 @@
|
|
|
1
1
|
import type { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
-
import type { PublicContractsDBInterface } from '
|
|
3
|
+
import type { PublicContractsDBInterface } from '../public/db_interfaces.js';
|
|
4
4
|
export declare function getPublicFunctionDebugName(db: PublicContractsDBInterface, contractAddress: AztecAddress, calldata: Fr[]): Promise<string>;
|
|
5
5
|
//# sourceMappingURL=debug_fn_name.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug_fn_name.d.ts","sourceRoot":"","sources":["../../src/common/debug_fn_name.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"debug_fn_name.d.ts","sourceRoot":"","sources":["../../src/common/debug_fn_name.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAE7E,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,0BAA0B,EAC9B,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,EAAE,EAAE,GACb,OAAO,CAAC,MAAM,CAAC,CAOjB"}
|
package/dest/common/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
|
package/dest/common/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import type { ContractClassLog, IndexedTaggingSecret, LogWithTxData } from '@azt
|
|
|
10
10
|
import type { Note, NoteStatus } from '@aztec/stdlib/note';
|
|
11
11
|
import { type MerkleTreeId, type NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
12
12
|
import type { BlockHeader, TxHash } from '@aztec/stdlib/tx';
|
|
13
|
-
import type { MessageLoadOracleInputs } from '
|
|
13
|
+
import type { MessageLoadOracleInputs } from '../../message_load_oracle_inputs.js';
|
|
14
14
|
/**
|
|
15
15
|
* Information about a note needed during execution.
|
|
16
16
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed_oracle.d.ts","sourceRoot":"","sources":["../../../../src/private/acvm/oracle/typed_oracle.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"typed_oracle.d.ts","sourceRoot":"","sources":["../../../../src/private/acvm/oracle/typed_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
|
|
1
2
|
import type { Fr, Point } from '@aztec/foundation/fields';
|
|
2
3
|
import type { EventSelector, FunctionArtifact, FunctionArtifactWithContractName, FunctionSelector } from '@aztec/stdlib/abi';
|
|
3
4
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
@@ -8,8 +9,8 @@ import { IndexedTaggingSecret, LogWithTxData } from '@aztec/stdlib/logs';
|
|
|
8
9
|
import type { NoteStatus } from '@aztec/stdlib/note';
|
|
9
10
|
import { type MerkleTreeId, type NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
10
11
|
import type { BlockHeader, TxHash } from '@aztec/stdlib/tx';
|
|
11
|
-
import type { CommitmentsDBInterface } from '../common/db_interfaces.js';
|
|
12
12
|
import type { NoteData } from './acvm/index.js';
|
|
13
|
+
import type { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
13
14
|
/**
|
|
14
15
|
* Error thrown when a contract is not found in the database.
|
|
15
16
|
*/
|
|
@@ -25,7 +26,7 @@ export declare class ContractClassNotFoundError extends Error {
|
|
|
25
26
|
/**
|
|
26
27
|
* The interface for the data layer required to perform private and utility execution.
|
|
27
28
|
*/
|
|
28
|
-
export interface ExecutionDataProvider
|
|
29
|
+
export interface ExecutionDataProvider {
|
|
29
30
|
/**
|
|
30
31
|
* Returns a contract instance associated with an address, if available.
|
|
31
32
|
* @param address - Address.
|
|
@@ -88,6 +89,32 @@ export interface ExecutionDataProvider extends CommitmentsDBInterface {
|
|
|
88
89
|
* @returns - The index of the nullifier. Undefined if it does not exist in the tree.
|
|
89
90
|
*/
|
|
90
91
|
getNullifierIndex(nullifier: Fr): Promise<bigint | undefined>;
|
|
92
|
+
/**
|
|
93
|
+
* Gets the index of a nullifier in the nullifier tree.
|
|
94
|
+
* @param nullifier - The nullifier.
|
|
95
|
+
* @returns - The index of the nullifier. Undefined if it does not exist in the tree.
|
|
96
|
+
*/
|
|
97
|
+
getNullifierIndex(nullifier: Fr): Promise<bigint | undefined>;
|
|
98
|
+
/**
|
|
99
|
+
* Returns a nullifier membership witness for the given nullifier or undefined if not found.
|
|
100
|
+
* REFACTOR: Same as getL1ToL2MembershipWitness, can be combined with aztec-node method that does almost the same thing.
|
|
101
|
+
* @param nullifier - Nullifier we're looking for.
|
|
102
|
+
*/
|
|
103
|
+
getNullifierMembershipWitnessAtLatestBlock(nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
104
|
+
/**
|
|
105
|
+
* Fetches a message from the db, given its key.
|
|
106
|
+
* @param contractAddress - Address of a contract by which the message was emitted.
|
|
107
|
+
* @param messageHash - Hash of the message.
|
|
108
|
+
* @param secret - Secret used to compute a nullifier.
|
|
109
|
+
* @dev Contract address and secret are only used to compute the nullifier to get non-nullified messages
|
|
110
|
+
* @returns The l1 to l2 membership witness (index of message in the tree and sibling path).
|
|
111
|
+
*/
|
|
112
|
+
getL1ToL2MembershipWitness(contractAddress: AztecAddress, messageHash: Fr, secret: Fr): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
|
|
113
|
+
/**
|
|
114
|
+
* @param leafIndex the leaf to look up
|
|
115
|
+
* @returns The l1 to l2 leaf message hash or undefined if not found.
|
|
116
|
+
*/
|
|
117
|
+
getL1ToL2MessageHash(leafIndex: bigint): Promise<Fr | undefined>;
|
|
91
118
|
/**
|
|
92
119
|
* Retrieve the databases view of the Block Header object.
|
|
93
120
|
* This structure is fed into the circuits simulator and is used to prove against certain historical roots.
|
|
@@ -199,6 +226,12 @@ export interface ExecutionDataProvider extends CommitmentsDBInterface {
|
|
|
199
226
|
* @param recipient - The account that discovered the note
|
|
200
227
|
*/
|
|
201
228
|
deliverNote(contractAddress: AztecAddress, storageSlot: Fr, nonce: Fr, content: Fr[], noteHash: Fr, nullifier: Fr, txHash: TxHash, recipient: AztecAddress): Promise<void>;
|
|
229
|
+
/**
|
|
230
|
+
* Gets note hash in the note hash tree at the given leaf index.
|
|
231
|
+
* @param leafIndex - the leaf to look up.
|
|
232
|
+
* @returns - The note hash at that index. Undefined if leaf index is not found.
|
|
233
|
+
*/
|
|
234
|
+
getNoteHash(leafIndex: bigint): Promise<Fr | undefined>;
|
|
202
235
|
/**
|
|
203
236
|
* Searches for a log with the corresponding `tag` and returns it along with contextual transaction information.
|
|
204
237
|
* Returns null if no such log exists, and throws if more than one exists.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution_data_provider.d.ts","sourceRoot":"","sources":["../../src/private/execution_data_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,gCAAgC,EAChC,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"execution_data_provider.d.ts","sourceRoot":"","sources":["../../src/private/execution_data_provider.ts"],"names":[],"mappings":"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"}
|
package/dest/private/index.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export { extractCallStack } from './acvm/acvm.js';
|
|
|
9
9
|
export { type NoteData, TypedOracle } from './acvm/oracle/typed_oracle.js';
|
|
10
10
|
export { Oracle } from './acvm/oracle/oracle.js';
|
|
11
11
|
export { HashedValuesCache } from './hashed_values_cache.js';
|
|
12
|
+
export { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/private/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,KAAK,qBAAqB,EAC1B,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iCAAiC,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,KAAK,QAAQ,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/private/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,KAAK,qBAAqB,EAC1B,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iCAAiC,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,KAAK,QAAQ,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC"}
|
package/dest/private/index.js
CHANGED
|
@@ -9,3 +9,4 @@ export { extractCallStack } from './acvm/acvm.js';
|
|
|
9
9
|
export { TypedOracle } from './acvm/oracle/typed_oracle.js';
|
|
10
10
|
export { Oracle } from './acvm/oracle/oracle.js';
|
|
11
11
|
export { HashedValuesCache } from './hashed_values_cache.js';
|
|
12
|
+
export { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message_load_oracle_inputs.d.ts","sourceRoot":"","sources":["../../src/private/message_load_oracle_inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,qBAAa,uBAAuB,CAAC,CAAC,SAAS,MAAM;IAEjD,8DAA8D;IACvD,KAAK,EAAE,MAAM;IACpB,kDAAkD;IAC3C,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;;IAHlC,8DAA8D;IACvD,KAAK,EAAE,MAAM;IACpB,kDAAkD;IAC3C,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;IAGpC,QAAQ,IAAI,EAAE,EAAE;IAIhB;;OAEG;IACI,oBAAoB,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE;CAIrD"}
|
|
@@ -132,7 +132,7 @@ export declare class UtilityExecutionOracle extends TypedOracle {
|
|
|
132
132
|
* @dev Contract address and secret are only used to compute the nullifier to get non-nullified messages
|
|
133
133
|
* @returns The l1 to l2 membership witness (index of message in the tree and sibling path).
|
|
134
134
|
*/
|
|
135
|
-
getL1ToL2MembershipWitness(contractAddress: AztecAddress, messageHash: Fr, secret: Fr): Promise<import("
|
|
135
|
+
getL1ToL2MembershipWitness(contractAddress: AztecAddress, messageHash: Fr, secret: Fr): Promise<import("./message_load_oracle_inputs.js").MessageLoadOracleInputs<39>>;
|
|
136
136
|
/**
|
|
137
137
|
* Read the public storage data.
|
|
138
138
|
* @param contractAddress - The address to read storage from.
|
|
@@ -38,9 +38,9 @@ import { createContractClassAndInstance } from './index.js';
|
|
|
38
38
|
const leafSlot = await computePublicDataTreeLeafSlot(address, slot);
|
|
39
39
|
// get existing preimage
|
|
40
40
|
const publicDataWrite = new PublicDataWrite(leafSlot, value);
|
|
41
|
-
await this.merkleTrees.
|
|
41
|
+
await this.merkleTrees.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, [
|
|
42
42
|
publicDataWrite.toBuffer()
|
|
43
|
-
]
|
|
43
|
+
]);
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
46
|
* Derive the contract class and instance with some seed.
|
|
@@ -71,8 +71,8 @@ import { createContractClassAndInstance } from './index.js';
|
|
|
71
71
|
}
|
|
72
72
|
async insertContractAddressNullifier(contractAddress) {
|
|
73
73
|
const contractAddressNullifier = await siloNullifier(AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS), contractAddress.toField());
|
|
74
|
-
await this.merkleTrees.
|
|
74
|
+
await this.merkleTrees.sequentialInsert(MerkleTreeId.NULLIFIER_TREE, [
|
|
75
75
|
contractAddressNullifier.toBuffer()
|
|
76
|
-
]
|
|
76
|
+
]);
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -7,7 +7,7 @@ export declare function mockStorageRead(worldStateDB: PublicTreesDB, value: Fr):
|
|
|
7
7
|
export declare function mockNoteHashCount(mockedTrace: PublicSideEffectTraceInterface, count: number): void;
|
|
8
8
|
export declare function mockStorageReadWithMap(worldStateDB: PublicTreesDB, mockedStorage: Map<bigint, Fr>): void;
|
|
9
9
|
export declare function mockNoteHashExists(worldStateDB: PublicTreesDB, _leafIndex: Fr, value?: Fr): void;
|
|
10
|
-
export declare function
|
|
10
|
+
export declare function mockCheckNullifierExists(worldStateDB: PublicTreesDB, exists: boolean, _ignoredValue?: Fr): void;
|
|
11
11
|
export declare function mockL1ToL2MessageExists(worldStateDB: PublicTreesDB, leafIndex: Fr, value: Fr, valueAtOtherIndices?: Fr): void;
|
|
12
12
|
export declare function mockGetContractInstance(contractsDB: PublicContractsDB, contractInstance: ContractInstanceWithAddress): void;
|
|
13
13
|
export declare function mockGetContractClass(contractsDB: PublicContractsDB, contractClass: ContractClassPublic): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../../../src/public/avm/test_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAK/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAExF,wBAAgB,aAAa,CAAC,KAAK,EAAE,8BAA8B,EAAE,WAAW,CAAC,EAAE,8BAA8B,QAIhH;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,QAErE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,8BAA8B,EAAE,KAAK,EAAE,MAAM,QAE3F;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,QAIjG;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QASzF;AAED,wBAAgB,
|
|
1
|
+
{"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../../../src/public/avm/test_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAK/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAExF,wBAAgB,aAAa,CAAC,KAAK,EAAE,8BAA8B,EAAE,WAAW,CAAC,EAAE,8BAA8B,QAIhH;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,QAErE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,8BAA8B,EAAE,KAAK,EAAE,MAAM,QAE3F;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,QAIjG;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QASzF;AAED,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,QAExG;AAED,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,aAAa,EAC3B,SAAS,EAAE,EAAE,EACb,KAAK,EAAE,EAAE,EACT,mBAAmB,CAAC,EAAE,EAAE,QAWzB;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,2BAA2B,QAEpH;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,mBAAmB,QAEtG;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,QAEvF"}
|
|
@@ -22,8 +22,8 @@ export function mockNoteHashExists(worldStateDB, _leafIndex, value) {
|
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
|
-
export function
|
|
26
|
-
worldStateDB.
|
|
25
|
+
export function mockCheckNullifierExists(worldStateDB, exists, _ignoredValue) {
|
|
26
|
+
worldStateDB.checkNullifierExists.mockResolvedValue(exists);
|
|
27
27
|
}
|
|
28
28
|
export function mockL1ToL2MessageExists(worldStateDB, leafIndex, value, valueAtOtherIndices) {
|
|
29
29
|
worldStateDB.getL1ToL2LeafValue.mockImplementation((index)=>{
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import type { L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
|
|
2
1
|
import type { Fr } from '@aztec/foundation/fields';
|
|
3
2
|
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
4
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
4
|
import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
6
|
-
import type { NullifierMembershipWitness } from '@aztec/stdlib/trees';
|
|
7
|
-
import type { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
8
5
|
/**
|
|
9
6
|
* Database interface for providing access to public state.
|
|
10
7
|
*/
|
|
@@ -55,39 +52,4 @@ export interface PublicContractsDBInterface {
|
|
|
55
52
|
*/
|
|
56
53
|
getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
57
54
|
}
|
|
58
|
-
/** Database interface for providing access to note hash tree, l1 to l2 message tree, and nullifier tree. */
|
|
59
|
-
export interface CommitmentsDBInterface {
|
|
60
|
-
/**
|
|
61
|
-
* Fetches a message from the db, given its key.
|
|
62
|
-
* @param contractAddress - Address of a contract by which the message was emitted.
|
|
63
|
-
* @param messageHash - Hash of the message.
|
|
64
|
-
* @param secret - Secret used to compute a nullifier.
|
|
65
|
-
* @dev Contract address and secret are only used to compute the nullifier to get non-nullified messages
|
|
66
|
-
* @returns The l1 to l2 membership witness (index of message in the tree and sibling path).
|
|
67
|
-
*/
|
|
68
|
-
getL1ToL2MembershipWitness(contractAddress: AztecAddress, messageHash: Fr, secret: Fr): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
|
|
69
|
-
/**
|
|
70
|
-
* @param leafIndex the leaf to look up
|
|
71
|
-
* @returns The l1 to l2 leaf message hash or undefined if not found.
|
|
72
|
-
*/
|
|
73
|
-
getL1ToL2MessageHash(leafIndex: bigint): Promise<Fr | undefined>;
|
|
74
|
-
/**
|
|
75
|
-
* Gets note hash in the note hash tree at the given leaf index.
|
|
76
|
-
* @param leafIndex - the leaf to look up.
|
|
77
|
-
* @returns - The note hash at that index. Undefined if leaf index is not found.
|
|
78
|
-
*/
|
|
79
|
-
getNoteHash(leafIndex: bigint): Promise<Fr | undefined>;
|
|
80
|
-
/**
|
|
81
|
-
* Gets the index of a nullifier in the nullifier tree.
|
|
82
|
-
* @param nullifier - The nullifier.
|
|
83
|
-
* @returns - The index of the nullifier. Undefined if it does not exist in the tree.
|
|
84
|
-
*/
|
|
85
|
-
getNullifierIndex(nullifier: Fr): Promise<bigint | undefined>;
|
|
86
|
-
/**
|
|
87
|
-
* Returns a nullifier membership witness for the given nullifier or undefined if not found.
|
|
88
|
-
* REFACTOR: Same as getL1ToL2MembershipWitness, can be combined with aztec-node method that does almost the same thing.
|
|
89
|
-
* @param nullifier - Nullifier we're looking for.
|
|
90
|
-
*/
|
|
91
|
-
getNullifierMembershipWitnessAtLatestBlock(nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
92
|
-
}
|
|
93
55
|
//# sourceMappingURL=db_interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db_interfaces.d.ts","sourceRoot":"","sources":["../../src/public/db_interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE/F;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAE3D;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAAC;IAElH;;;;OAIG;IACH,gBAAgB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAEhF;;;;OAIG;IACH,qBAAqB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAEpE;;;;;OAKG;IACH,oBAAoB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC9G"}
|
|
@@ -7,7 +7,7 @@ import { type AvmExecutionHints } from '@aztec/stdlib/avm';
|
|
|
7
7
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
8
8
|
import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
9
9
|
import { type IndexedTreeId, MerkleTreeId, type MerkleTreeLeafType, type SequentialInsertionResult } from '@aztec/stdlib/trees';
|
|
10
|
-
import type { PublicContractsDBInterface } from '
|
|
10
|
+
import type { PublicContractsDBInterface } from './db_interfaces.js';
|
|
11
11
|
import { PublicTreesDB } from './public_db_sources.js';
|
|
12
12
|
/**
|
|
13
13
|
* A public contracts database that forwards requests and collects AVM hints.
|
|
@@ -47,5 +47,6 @@ export declare class HintingPublicTreesDB extends PublicTreesDB {
|
|
|
47
47
|
private getCurrentCheckpointId;
|
|
48
48
|
private getTreesStateHash;
|
|
49
49
|
private static logTreeChange;
|
|
50
|
+
private appendLeafInternal;
|
|
50
51
|
}
|
|
51
52
|
//# sourceMappingURL=hinting_db_sources.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hinting_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/hinting_db_sources.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAOL,KAAK,iBAAiB,EASvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAEL,KAAK,aAAa,EAClB,YAAY,EACZ,KAAK,kBAAkB,EAKvB,KAAK,yBAAyB,EAG/B,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"hinting_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/hinting_db_sources.ts"],"names":[],"mappings":"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"}
|
|
@@ -148,15 +148,11 @@ import { PublicTreesDB } from './public_db_sources.js';
|
|
|
148
148
|
async appendLeaves(treeId, leaves) {
|
|
149
149
|
// Use sequentialInsert for PublicDataTree and NullifierTree.
|
|
150
150
|
assert(treeId == MerkleTreeId.NOTE_HASH_TREE || treeId == MerkleTreeId.L1_TO_L2_MESSAGE_TREE);
|
|
151
|
-
|
|
152
|
-
|
|
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);
|
|
153
155
|
}
|
|
154
|
-
const beforeState = await this.getHintKey(treeId);
|
|
155
|
-
await super.appendLeaves(treeId, leaves);
|
|
156
|
-
const afterState = await this.getHintKey(treeId);
|
|
157
|
-
HintingPublicTreesDB.log.debug('[appendLeaves] Evolved tree state.');
|
|
158
|
-
HintingPublicTreesDB.logTreeChange(beforeState, afterState, treeId);
|
|
159
|
-
this.hints.appendLeavesHints.push(new AvmAppendLeavesHint(beforeState, afterState, treeId, leaves));
|
|
160
156
|
}
|
|
161
157
|
async createCheckpoint() {
|
|
162
158
|
const actionCounter = this.checkpointActionCounter++;
|
|
@@ -222,4 +218,19 @@ import { PublicTreesDB } from './public_db_sources.js';
|
|
|
222
218
|
const treeName = getTreeName(treeId);
|
|
223
219
|
HintingPublicTreesDB.log.debug(`[${treeName}] Evolved tree state: ${beforeState.root}, ${beforeState.nextAvailableLeafIndex} -> ${afterState.root}, ${afterState.nextAvailableLeafIndex}.`);
|
|
224
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
|
+
}
|
|
225
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.
|
|
@@ -146,7 +146,8 @@ export declare class PublicTreesDB extends ForwardMerkleTree implements PublicSt
|
|
|
146
146
|
storageWrite(contract: AztecAddress, slot: Fr, newValue: Fr): Promise<void>;
|
|
147
147
|
getL1ToL2LeafValue(leafIndex: bigint): Promise<Fr | undefined>;
|
|
148
148
|
getNoteHash(leafIndex: bigint): Promise<Fr | undefined>;
|
|
149
|
-
|
|
149
|
+
checkNullifierExists(nullifier: Fr): Promise<boolean>;
|
|
150
|
+
padTree(treeId: MerkleTreeId, leavesToInsert: number): Promise<void>;
|
|
150
151
|
}
|
|
151
152
|
export {};
|
|
152
153
|
//# 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":"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"}
|
|
@@ -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.
|
|
@@ -308,7 +309,7 @@ import { TxContractCache } from './tx_contract_cache.js';
|
|
|
308
309
|
});
|
|
309
310
|
return leafValue;
|
|
310
311
|
}
|
|
311
|
-
async
|
|
312
|
+
async checkNullifierExists(nullifier) {
|
|
312
313
|
const timer = new Timer();
|
|
313
314
|
const lowLeafResult = await this.getPreviousValueIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBigInt());
|
|
314
315
|
if (!lowLeafResult) {
|
|
@@ -318,12 +319,30 @@ import { TxContractCache } from './tx_contract_cache.js';
|
|
|
318
319
|
await this.getSiblingPath(MerkleTreeId.NULLIFIER_TREE, lowLeafResult.index);
|
|
319
320
|
// TODO(fcarreiro): We need this for the hints. Might move it to the hinting layer.
|
|
320
321
|
await this.getLeafPreimage(MerkleTreeId.NULLIFIER_TREE, lowLeafResult.index);
|
|
321
|
-
const
|
|
322
|
-
this.logger.debug(`[DB]
|
|
322
|
+
const exists = lowLeafResult.alreadyPresent;
|
|
323
|
+
this.logger.debug(`[DB] Checked nullifier exists`, {
|
|
323
324
|
eventName: 'public-db-access',
|
|
324
325
|
duration: timer.ms(),
|
|
325
|
-
operation: '
|
|
326
|
+
operation: 'check-nullifier-exists'
|
|
326
327
|
});
|
|
327
|
-
return
|
|
328
|
+
return exists;
|
|
329
|
+
}
|
|
330
|
+
async padTree(treeId, leavesToInsert) {
|
|
331
|
+
switch(treeId){
|
|
332
|
+
// Indexed trees.
|
|
333
|
+
case MerkleTreeId.NULLIFIER_TREE:
|
|
334
|
+
await this.batchInsert(treeId, Array(leavesToInsert).fill(NullifierLeaf.empty().toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
|
|
335
|
+
break;
|
|
336
|
+
case MerkleTreeId.PUBLIC_DATA_TREE:
|
|
337
|
+
await this.batchInsert(treeId, Array(leavesToInsert).fill(PublicDataTreeLeaf.empty().toBuffer()), PUBLIC_DATA_SUBTREE_HEIGHT);
|
|
338
|
+
break;
|
|
339
|
+
// Non-indexed trees.
|
|
340
|
+
case MerkleTreeId.L1_TO_L2_MESSAGE_TREE:
|
|
341
|
+
case MerkleTreeId.NOTE_HASH_TREE:
|
|
342
|
+
await this.appendLeaves(treeId, Array(leavesToInsert).fill(Fr.ZERO));
|
|
343
|
+
break;
|
|
344
|
+
default:
|
|
345
|
+
throw new Error(`Padding not supported for tree ${treeId}`);
|
|
346
|
+
}
|
|
328
347
|
}
|
|
329
348
|
}
|
|
@@ -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';
|
|
@@ -70,6 +70,8 @@ import { getCallRequestsWithCalldataByPhase } from '../utils.js';
|
|
|
70
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;
|
|
@@ -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.84.0-nightly.
|
|
3
|
+
"version": "0.84.0-nightly.20250412",
|
|
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.84.0-nightly.
|
|
64
|
-
"@aztec/foundation": "0.84.0-nightly.
|
|
65
|
-
"@aztec/noir-acvm_js": "0.84.0-nightly.
|
|
66
|
-
"@aztec/noir-noirc_abi": "0.84.0-nightly.
|
|
67
|
-
"@aztec/noir-protocol-circuits-types": "0.84.0-nightly.
|
|
68
|
-
"@aztec/noir-types": "0.84.0-nightly.
|
|
69
|
-
"@aztec/protocol-contracts": "0.84.0-nightly.
|
|
70
|
-
"@aztec/stdlib": "0.84.0-nightly.
|
|
71
|
-
"@aztec/telemetry-client": "0.84.0-nightly.
|
|
72
|
-
"@aztec/world-state": "0.84.0-nightly.
|
|
73
|
-
"levelup": "^5.1.1",
|
|
63
|
+
"@aztec/constants": "0.84.0-nightly.20250412",
|
|
64
|
+
"@aztec/foundation": "0.84.0-nightly.20250412",
|
|
65
|
+
"@aztec/noir-acvm_js": "0.84.0-nightly.20250412",
|
|
66
|
+
"@aztec/noir-noirc_abi": "0.84.0-nightly.20250412",
|
|
67
|
+
"@aztec/noir-protocol-circuits-types": "0.84.0-nightly.20250412",
|
|
68
|
+
"@aztec/noir-types": "0.84.0-nightly.20250412",
|
|
69
|
+
"@aztec/protocol-contracts": "0.84.0-nightly.20250412",
|
|
70
|
+
"@aztec/stdlib": "0.84.0-nightly.20250412",
|
|
71
|
+
"@aztec/telemetry-client": "0.84.0-nightly.20250412",
|
|
72
|
+
"@aztec/world-state": "0.84.0-nightly.20250412",
|
|
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.84.0-nightly.
|
|
81
|
-
"@aztec/merkle-tree": "0.84.0-nightly.
|
|
82
|
-
"@aztec/noir-contracts.js": "0.84.0-nightly.
|
|
78
|
+
"@aztec/kv-store": "0.84.0-nightly.20250412",
|
|
79
|
+
"@aztec/merkle-tree": "0.84.0-nightly.20250412",
|
|
80
|
+
"@aztec/noir-contracts.js": "0.84.0-nightly.20250412",
|
|
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
|
@@ -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.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
|
|
1
2
|
import type { Fr, Point } from '@aztec/foundation/fields';
|
|
2
3
|
import type {
|
|
3
4
|
EventSelector,
|
|
@@ -14,8 +15,8 @@ import type { NoteStatus } from '@aztec/stdlib/note';
|
|
|
14
15
|
import { type MerkleTreeId, type NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
15
16
|
import type { BlockHeader, TxHash } from '@aztec/stdlib/tx';
|
|
16
17
|
|
|
17
|
-
import type { CommitmentsDBInterface } from '../common/db_interfaces.js';
|
|
18
18
|
import type { NoteData } from './acvm/index.js';
|
|
19
|
+
import type { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* Error thrown when a contract is not found in the database.
|
|
@@ -38,7 +39,7 @@ export class ContractClassNotFoundError extends Error {
|
|
|
38
39
|
/**
|
|
39
40
|
* The interface for the data layer required to perform private and utility execution.
|
|
40
41
|
*/
|
|
41
|
-
export interface ExecutionDataProvider
|
|
42
|
+
export interface ExecutionDataProvider {
|
|
42
43
|
/**
|
|
43
44
|
* Returns a contract instance associated with an address, if available.
|
|
44
45
|
* @param address - Address.
|
|
@@ -117,6 +118,40 @@ export interface ExecutionDataProvider extends CommitmentsDBInterface {
|
|
|
117
118
|
*/
|
|
118
119
|
getNullifierIndex(nullifier: Fr): Promise<bigint | undefined>;
|
|
119
120
|
|
|
121
|
+
/**
|
|
122
|
+
* Gets the index of a nullifier in the nullifier tree.
|
|
123
|
+
* @param nullifier - The nullifier.
|
|
124
|
+
* @returns - The index of the nullifier. Undefined if it does not exist in the tree.
|
|
125
|
+
*/
|
|
126
|
+
getNullifierIndex(nullifier: Fr): Promise<bigint | undefined>;
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Returns a nullifier membership witness for the given nullifier or undefined if not found.
|
|
130
|
+
* REFACTOR: Same as getL1ToL2MembershipWitness, can be combined with aztec-node method that does almost the same thing.
|
|
131
|
+
* @param nullifier - Nullifier we're looking for.
|
|
132
|
+
*/
|
|
133
|
+
getNullifierMembershipWitnessAtLatestBlock(nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Fetches a message from the db, given its key.
|
|
137
|
+
* @param contractAddress - Address of a contract by which the message was emitted.
|
|
138
|
+
* @param messageHash - Hash of the message.
|
|
139
|
+
* @param secret - Secret used to compute a nullifier.
|
|
140
|
+
* @dev Contract address and secret are only used to compute the nullifier to get non-nullified messages
|
|
141
|
+
* @returns The l1 to l2 membership witness (index of message in the tree and sibling path).
|
|
142
|
+
*/
|
|
143
|
+
getL1ToL2MembershipWitness(
|
|
144
|
+
contractAddress: AztecAddress,
|
|
145
|
+
messageHash: Fr,
|
|
146
|
+
secret: Fr,
|
|
147
|
+
): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* @param leafIndex the leaf to look up
|
|
151
|
+
* @returns The l1 to l2 leaf message hash or undefined if not found.
|
|
152
|
+
*/
|
|
153
|
+
getL1ToL2MessageHash(leafIndex: bigint): Promise<Fr | undefined>;
|
|
154
|
+
|
|
120
155
|
/**
|
|
121
156
|
* Retrieve the databases view of the Block Header object.
|
|
122
157
|
* This structure is fed into the circuits simulator and is used to prove against certain historical roots.
|
|
@@ -263,6 +298,13 @@ export interface ExecutionDataProvider extends CommitmentsDBInterface {
|
|
|
263
298
|
recipient: AztecAddress,
|
|
264
299
|
): Promise<void>;
|
|
265
300
|
|
|
301
|
+
/**
|
|
302
|
+
* Gets note hash in the note hash tree at the given leaf index.
|
|
303
|
+
* @param leafIndex - the leaf to look up.
|
|
304
|
+
* @returns - The note hash at that index. Undefined if leaf index is not found.
|
|
305
|
+
*/
|
|
306
|
+
getNoteHash(leafIndex: bigint): Promise<Fr | undefined>;
|
|
307
|
+
|
|
266
308
|
/**
|
|
267
309
|
* Searches for a log with the corresponding `tag` and returns it along with contextual transaction information.
|
|
268
310
|
* Returns null if no such log exists, and throws if more than one exists.
|
package/src/private/index.ts
CHANGED
|
@@ -13,3 +13,4 @@ export { extractCallStack } from './acvm/acvm.js';
|
|
|
13
13
|
export { type NoteData, TypedOracle } from './acvm/oracle/typed_oracle.js';
|
|
14
14
|
export { Oracle } from './acvm/oracle/oracle.js';
|
|
15
15
|
export { HashedValuesCache } from './hashed_values_cache.js';
|
|
16
|
+
export { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
@@ -44,7 +44,7 @@ export abstract class BaseAvmSimulationTester {
|
|
|
44
44
|
const leafSlot = await computePublicDataTreeLeafSlot(address, slot);
|
|
45
45
|
// get existing preimage
|
|
46
46
|
const publicDataWrite = new PublicDataWrite(leafSlot, value);
|
|
47
|
-
await this.merkleTrees.
|
|
47
|
+
await this.merkleTrees.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, [publicDataWrite.toBuffer()]);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
/**
|
|
@@ -98,6 +98,6 @@ export abstract class BaseAvmSimulationTester {
|
|
|
98
98
|
AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS),
|
|
99
99
|
contractAddress.toField(),
|
|
100
100
|
);
|
|
101
|
-
await this.merkleTrees.
|
|
101
|
+
await this.merkleTrees.sequentialInsert(MerkleTreeId.NULLIFIER_TREE, [contractAddressNullifier.toBuffer()]);
|
|
102
102
|
}
|
|
103
103
|
}
|
|
@@ -38,8 +38,8 @@ export function mockNoteHashExists(worldStateDB: PublicTreesDB, _leafIndex: Fr,
|
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
export function
|
|
42
|
-
(worldStateDB as jest.Mocked<PublicTreesDB>).
|
|
41
|
+
export function mockCheckNullifierExists(worldStateDB: PublicTreesDB, exists: boolean, _ignoredValue?: Fr) {
|
|
42
|
+
(worldStateDB as jest.Mocked<PublicTreesDB>).checkNullifierExists.mockResolvedValue(exists);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
export function mockL1ToL2MessageExists(
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import type { L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
|
|
2
1
|
import type { Fr } from '@aztec/foundation/fields';
|
|
3
2
|
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
4
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
4
|
import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
6
|
-
import type { NullifierMembershipWitness } from '@aztec/stdlib/trees';
|
|
7
|
-
|
|
8
|
-
import type { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
9
5
|
|
|
10
6
|
/**
|
|
11
7
|
* Database interface for providing access to public state.
|
|
@@ -62,47 +58,3 @@ export interface PublicContractsDBInterface {
|
|
|
62
58
|
*/
|
|
63
59
|
getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
64
60
|
}
|
|
65
|
-
|
|
66
|
-
/** Database interface for providing access to note hash tree, l1 to l2 message tree, and nullifier tree. */
|
|
67
|
-
export interface CommitmentsDBInterface {
|
|
68
|
-
/**
|
|
69
|
-
* Fetches a message from the db, given its key.
|
|
70
|
-
* @param contractAddress - Address of a contract by which the message was emitted.
|
|
71
|
-
* @param messageHash - Hash of the message.
|
|
72
|
-
* @param secret - Secret used to compute a nullifier.
|
|
73
|
-
* @dev Contract address and secret are only used to compute the nullifier to get non-nullified messages
|
|
74
|
-
* @returns The l1 to l2 membership witness (index of message in the tree and sibling path).
|
|
75
|
-
*/
|
|
76
|
-
getL1ToL2MembershipWitness(
|
|
77
|
-
contractAddress: AztecAddress,
|
|
78
|
-
messageHash: Fr,
|
|
79
|
-
secret: Fr,
|
|
80
|
-
): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* @param leafIndex the leaf to look up
|
|
84
|
-
* @returns The l1 to l2 leaf message hash or undefined if not found.
|
|
85
|
-
*/
|
|
86
|
-
getL1ToL2MessageHash(leafIndex: bigint): Promise<Fr | undefined>;
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Gets note hash in the note hash tree at the given leaf index.
|
|
90
|
-
* @param leafIndex - the leaf to look up.
|
|
91
|
-
* @returns - The note hash at that index. Undefined if leaf index is not found.
|
|
92
|
-
*/
|
|
93
|
-
getNoteHash(leafIndex: bigint): Promise<Fr | undefined>;
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Gets the index of a nullifier in the nullifier tree.
|
|
97
|
-
* @param nullifier - The nullifier.
|
|
98
|
-
* @returns - The index of the nullifier. Undefined if it does not exist in the tree.
|
|
99
|
-
*/
|
|
100
|
-
getNullifierIndex(nullifier: Fr): Promise<bigint | undefined>;
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Returns a nullifier membership witness for the given nullifier or undefined if not found.
|
|
104
|
-
* REFACTOR: Same as getL1ToL2MembershipWitness, can be combined with aztec-node method that does almost the same thing.
|
|
105
|
-
* @param nullifier - Nullifier we're looking for.
|
|
106
|
-
*/
|
|
107
|
-
getNullifierMembershipWitnessAtLatestBlock(nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
108
|
-
}
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
|
|
39
39
|
import { strict as assert } from 'assert';
|
|
40
40
|
|
|
41
|
-
import type { PublicContractsDBInterface } from '
|
|
41
|
+
import type { PublicContractsDBInterface } from './db_interfaces.js';
|
|
42
42
|
import { PublicTreesDB } from './public_db_sources.js';
|
|
43
43
|
|
|
44
44
|
/**
|
|
@@ -272,20 +272,11 @@ export class HintingPublicTreesDB extends PublicTreesDB {
|
|
|
272
272
|
// Use sequentialInsert for PublicDataTree and NullifierTree.
|
|
273
273
|
assert(treeId == MerkleTreeId.NOTE_HASH_TREE || treeId == MerkleTreeId.L1_TO_L2_MESSAGE_TREE);
|
|
274
274
|
|
|
275
|
-
|
|
276
|
-
|
|
275
|
+
// We need to process each leaf individually because we need the sibling path after insertion, to be able to constraint the insertion.
|
|
276
|
+
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/13380): This can be changed if the world state appendLeaves returns the sibling paths.
|
|
277
|
+
for (const leaf of leaves) {
|
|
278
|
+
await this.appendLeafInternal(treeId, leaf);
|
|
277
279
|
}
|
|
278
|
-
|
|
279
|
-
const beforeState = await this.getHintKey(treeId);
|
|
280
|
-
|
|
281
|
-
await super.appendLeaves<ID>(treeId, leaves);
|
|
282
|
-
|
|
283
|
-
const afterState = await this.getHintKey(treeId);
|
|
284
|
-
|
|
285
|
-
HintingPublicTreesDB.log.debug('[appendLeaves] Evolved tree state.');
|
|
286
|
-
HintingPublicTreesDB.logTreeChange(beforeState, afterState, treeId);
|
|
287
|
-
|
|
288
|
-
this.hints.appendLeavesHints.push(new AvmAppendLeavesHint(beforeState, afterState, treeId, leaves as Fr[]));
|
|
289
280
|
}
|
|
290
281
|
|
|
291
282
|
public override async createCheckpoint(): Promise<void> {
|
|
@@ -383,4 +374,25 @@ export class HintingPublicTreesDB extends PublicTreesDB {
|
|
|
383
374
|
`[${treeName}] Evolved tree state: ${beforeState.root}, ${beforeState.nextAvailableLeafIndex} -> ${afterState.root}, ${afterState.nextAvailableLeafIndex}.`,
|
|
384
375
|
);
|
|
385
376
|
}
|
|
377
|
+
|
|
378
|
+
private async appendLeafInternal<ID extends MerkleTreeId, N extends number>(
|
|
379
|
+
treeId: ID,
|
|
380
|
+
leaf: MerkleTreeLeafType<ID>,
|
|
381
|
+
): Promise<SiblingPath<N>> {
|
|
382
|
+
// Use sequentialInsert for PublicDataTree and NullifierTree.
|
|
383
|
+
assert(treeId == MerkleTreeId.NOTE_HASH_TREE || treeId == MerkleTreeId.L1_TO_L2_MESSAGE_TREE);
|
|
384
|
+
|
|
385
|
+
const beforeState = await this.getHintKey(treeId);
|
|
386
|
+
|
|
387
|
+
await super.appendLeaves<ID>(treeId, [leaf]);
|
|
388
|
+
|
|
389
|
+
const afterState = await this.getHintKey(treeId);
|
|
390
|
+
|
|
391
|
+
HintingPublicTreesDB.log.debug('[appendLeaves] Evolved tree state.');
|
|
392
|
+
HintingPublicTreesDB.logTreeChange(beforeState, afterState, treeId);
|
|
393
|
+
|
|
394
|
+
this.hints.appendLeavesHints.push(new AvmAppendLeavesHint(beforeState, afterState, treeId, [leaf as Fr]));
|
|
395
|
+
|
|
396
|
+
return await this.getSiblingPath<N>(treeId, BigInt(beforeState.nextAvailableLeafIndex));
|
|
397
|
+
}
|
|
386
398
|
}
|
package/src/public/index.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,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';
|
|
@@ -24,10 +25,10 @@ import type {
|
|
|
24
25
|
} from '@aztec/stdlib/interfaces/server';
|
|
25
26
|
import { ContractClassLog, PrivateLog } from '@aztec/stdlib/logs';
|
|
26
27
|
import type { PublicDBAccessStats } from '@aztec/stdlib/stats';
|
|
27
|
-
import { MerkleTreeId, type PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
|
|
28
|
+
import { MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf, type PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
|
|
28
29
|
import type { BlockHeader, StateReference, Tx } from '@aztec/stdlib/tx';
|
|
29
30
|
|
|
30
|
-
import type { PublicContractsDBInterface, PublicStateDBInterface } from '
|
|
31
|
+
import type { PublicContractsDBInterface, PublicStateDBInterface } from './db_interfaces.js';
|
|
31
32
|
import { TxContractCache } from './tx_contract_cache.js';
|
|
32
33
|
|
|
33
34
|
/**
|
|
@@ -462,7 +463,7 @@ export class PublicTreesDB extends ForwardMerkleTree implements PublicStateDBInt
|
|
|
462
463
|
return leafValue;
|
|
463
464
|
}
|
|
464
465
|
|
|
465
|
-
public async
|
|
466
|
+
public async checkNullifierExists(nullifier: Fr): Promise<boolean> {
|
|
466
467
|
const timer = new Timer();
|
|
467
468
|
const lowLeafResult = await this.getPreviousValueIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBigInt());
|
|
468
469
|
if (!lowLeafResult) {
|
|
@@ -472,13 +473,40 @@ export class PublicTreesDB extends ForwardMerkleTree implements PublicStateDBInt
|
|
|
472
473
|
await this.getSiblingPath(MerkleTreeId.NULLIFIER_TREE, lowLeafResult.index);
|
|
473
474
|
// TODO(fcarreiro): We need this for the hints. Might move it to the hinting layer.
|
|
474
475
|
await this.getLeafPreimage(MerkleTreeId.NULLIFIER_TREE, lowLeafResult.index);
|
|
475
|
-
const
|
|
476
|
+
const exists = lowLeafResult.alreadyPresent;
|
|
476
477
|
|
|
477
|
-
this.logger.debug(`[DB]
|
|
478
|
+
this.logger.debug(`[DB] Checked nullifier exists`, {
|
|
478
479
|
eventName: 'public-db-access',
|
|
479
480
|
duration: timer.ms(),
|
|
480
|
-
operation: '
|
|
481
|
+
operation: 'check-nullifier-exists',
|
|
481
482
|
} satisfies PublicDBAccessStats);
|
|
482
|
-
return
|
|
483
|
+
return exists;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
public async padTree(treeId: MerkleTreeId, leavesToInsert: number): Promise<void> {
|
|
487
|
+
switch (treeId) {
|
|
488
|
+
// Indexed trees.
|
|
489
|
+
case MerkleTreeId.NULLIFIER_TREE:
|
|
490
|
+
await this.batchInsert(
|
|
491
|
+
treeId,
|
|
492
|
+
Array(leavesToInsert).fill(NullifierLeaf.empty().toBuffer()),
|
|
493
|
+
NULLIFIER_SUBTREE_HEIGHT,
|
|
494
|
+
);
|
|
495
|
+
break;
|
|
496
|
+
case MerkleTreeId.PUBLIC_DATA_TREE:
|
|
497
|
+
await this.batchInsert(
|
|
498
|
+
treeId,
|
|
499
|
+
Array(leavesToInsert).fill(PublicDataTreeLeaf.empty().toBuffer()),
|
|
500
|
+
PUBLIC_DATA_SUBTREE_HEIGHT,
|
|
501
|
+
);
|
|
502
|
+
break;
|
|
503
|
+
// Non-indexed trees.
|
|
504
|
+
case MerkleTreeId.L1_TO_L2_MESSAGE_TREE:
|
|
505
|
+
case MerkleTreeId.NOTE_HASH_TREE:
|
|
506
|
+
await this.appendLeaves(treeId, Array(leavesToInsert).fill(Fr.ZERO));
|
|
507
|
+
break;
|
|
508
|
+
default:
|
|
509
|
+
throw new Error(`Padding not supported for tree ${treeId}`);
|
|
510
|
+
}
|
|
483
511
|
}
|
|
484
512
|
}
|
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
MAX_NOTE_HASHES_PER_TX,
|
|
5
5
|
MAX_NULLIFIERS_PER_TX,
|
|
6
6
|
MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
7
|
-
NULLIFIER_SUBTREE_HEIGHT,
|
|
8
7
|
} from '@aztec/constants';
|
|
9
8
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
10
9
|
import { Fr } from '@aztec/foundation/fields';
|
|
@@ -114,6 +113,13 @@ export class PublicTxContext {
|
|
|
114
113
|
const hints = new AvmExecutionHints(await AvmTxHint.fromTx(tx));
|
|
115
114
|
const hintingContractsDB = new HintingPublicContractsDB(contractsDB, hints);
|
|
116
115
|
const hintingTreesDB = new HintingPublicTreesDB(treesDB, hints);
|
|
116
|
+
const startStateReference = await treesDB.getStateReference();
|
|
117
|
+
hints.startingTreeRoots = new TreeSnapshots(
|
|
118
|
+
startStateReference.l1ToL2MessageTree,
|
|
119
|
+
startStateReference.partial.noteHashTree,
|
|
120
|
+
startStateReference.partial.nullifierTree,
|
|
121
|
+
startStateReference.partial.publicDataTree,
|
|
122
|
+
);
|
|
117
123
|
|
|
118
124
|
// Transaction level state manager that will be forked for revertible phases.
|
|
119
125
|
const txStateManager = PublicPersistableStateManager.create(
|
|
@@ -394,16 +400,10 @@ export class PublicTxContext {
|
|
|
394
400
|
);
|
|
395
401
|
const numNoteHashesToPad =
|
|
396
402
|
MAX_NOTE_HASHES_PER_TX - countAccumulatedItems(avmCircuitPublicInputs.accumulatedData.noteHashes);
|
|
397
|
-
await stateManager
|
|
398
|
-
.deprecatedGetTreesForPIGeneration()
|
|
399
|
-
.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, padArrayEnd([], Fr.ZERO, numNoteHashesToPad));
|
|
403
|
+
await stateManager.deprecatedGetTreesForPIGeneration().padTree(MerkleTreeId.NOTE_HASH_TREE, numNoteHashesToPad);
|
|
400
404
|
const numNullifiersToPad =
|
|
401
405
|
MAX_NULLIFIERS_PER_TX - countAccumulatedItems(avmCircuitPublicInputs.accumulatedData.nullifiers);
|
|
402
|
-
await stateManager.deprecatedGetTreesForPIGeneration().
|
|
403
|
-
MerkleTreeId.NULLIFIER_TREE,
|
|
404
|
-
padArrayEnd([], Fr.ZERO, numNullifiersToPad).map(nullifier => nullifier.toBuffer()),
|
|
405
|
-
NULLIFIER_SUBTREE_HEIGHT,
|
|
406
|
-
);
|
|
406
|
+
await stateManager.deprecatedGetTreesForPIGeneration().padTree(MerkleTreeId.NULLIFIER_TREE, numNullifiersToPad);
|
|
407
407
|
|
|
408
408
|
const paddedState = await stateManager.deprecatedGetTreesForPIGeneration().getStateReference();
|
|
409
409
|
avmCircuitPublicInputs.endTreeSnapshots = new TreeSnapshots(
|
|
@@ -64,8 +64,8 @@ export class NullifierManager {
|
|
|
64
64
|
// `${MerkleTreeId[MerkleTreeId.NULLIFIER_TREE]} low leaf index should always be found (even if target leaf does not exist)`,
|
|
65
65
|
//);
|
|
66
66
|
//existsInTree = leafOrLowLeafIndex.alreadyPresent;
|
|
67
|
-
const
|
|
68
|
-
existsInTree =
|
|
67
|
+
const exists = await this.hostNullifiers.checkNullifierExists(siloedNullifier);
|
|
68
|
+
existsInTree = exists;
|
|
69
69
|
}
|
|
70
70
|
const exists = cacheHit || existsInTree;
|
|
71
71
|
return Promise.resolve({ exists, cacheHit });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
3
|
|
|
4
|
-
import type { PublicStateDBInterface } from '
|
|
4
|
+
import type { PublicStateDBInterface } from '../db_interfaces.js';
|
|
5
5
|
|
|
6
6
|
type PublicStorageReadResult = {
|
|
7
7
|
value: Fr;
|
|
@@ -252,7 +252,7 @@ export class PublicPersistableStateManager {
|
|
|
252
252
|
const siloedNullifier = await siloNullifier(contractAddress, nullifier);
|
|
253
253
|
|
|
254
254
|
if (this.doMerkleOperations) {
|
|
255
|
-
const exists =
|
|
255
|
+
const exists = await this.treesDB.checkNullifierExists(siloedNullifier);
|
|
256
256
|
this.log.trace(`Checked siloed nullifier ${siloedNullifier} (exists=${exists})`);
|
|
257
257
|
return Promise.resolve(exists);
|
|
258
258
|
} else {
|
|
@@ -282,10 +282,10 @@ export class PublicPersistableStateManager {
|
|
|
282
282
|
this.log.trace(`Inserting siloed nullifier=${siloedNullifier}`);
|
|
283
283
|
|
|
284
284
|
if (this.doMerkleOperations) {
|
|
285
|
-
const
|
|
285
|
+
const exists = await this.treesDB.checkNullifierExists(siloedNullifier);
|
|
286
286
|
|
|
287
|
-
if (
|
|
288
|
-
this.log.verbose(`Siloed nullifier ${siloedNullifier} already present in tree
|
|
287
|
+
if (exists) {
|
|
288
|
+
this.log.verbose(`Siloed nullifier ${siloedNullifier} already present in tree!`);
|
|
289
289
|
throw new NullifierCollisionError(
|
|
290
290
|
`Siloed nullifier ${siloedNullifier} already exists in parent cache or host.`,
|
|
291
291
|
);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db_interfaces.d.ts","sourceRoot":"","sources":["../../src/common/db_interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAE3D;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAAC;IAElH;;;;OAIG;IACH,gBAAgB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAEhF;;;;OAIG;IACH,qBAAqB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAEpE;;;;;OAKG;IACH,oBAAoB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC9G;AAED,4GAA4G;AAC5G,MAAM,WAAW,sBAAsB;IACrC;;;;;;;OAOG;IACH,0BAA0B,CACxB,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,EAAE,EACf,MAAM,EAAE,EAAE,GACT,OAAO,CAAC,uBAAuB,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;IAErE;;;OAGG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAEjE;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAExD;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE9D;;;;OAIG;IACH,0CAA0C,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;CAC5G"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/** Database interface for providing access to note hash tree, l1 to l2 message tree, and nullifier tree. */ export { };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message_load_oracle_inputs.d.ts","sourceRoot":"","sources":["../../src/common/message_load_oracle_inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,qBAAa,uBAAuB,CAAC,CAAC,SAAS,MAAM;IAEjD,8DAA8D;IACvD,KAAK,EAAE,MAAM;IACpB,kDAAkD;IAC3C,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;;IAHlC,8DAA8D;IACvD,KAAK,EAAE,MAAM;IACpB,kDAAkD;IAC3C,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;IAGpC,QAAQ,IAAI,EAAE,EAAE;IAIhB;;OAEG;IACI,oBAAoB,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE;CAIrD"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|