@aztec/simulator 5.0.0-nightly.20260528 → 5.0.0-nightly.20260530
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/private/acvm_wasm.d.ts +1 -1
- package/dest/private/acvm_wasm.d.ts.map +1 -1
- package/dest/private/acvm_wasm.js +3 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +17 -2
- package/dest/public/fixtures/bulk_test.d.ts +1 -1
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
- package/dest/public/fixtures/bulk_test.js +1 -0
- package/dest/public/fixtures/utils.d.ts +1 -1
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +4 -2
- package/package.json +16 -15
- package/src/private/acvm_wasm.ts +4 -1
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +22 -2
- package/src/public/fixtures/bulk_test.ts +1 -0
- package/src/public/fixtures/utils.ts +3 -1
|
@@ -13,4 +13,4 @@ export declare class WASMSimulator implements CircuitSimulator {
|
|
|
13
13
|
executeProtocolCircuit(input: ACVMWitness, artifact: NoirCompiledCircuitWithName, callback: ForeignCallHandler): Promise<ACVMSuccess>;
|
|
14
14
|
executeUserCircuit(input: ACVMWitness, artifact: FunctionArtifactWithContractName, callback: ACIRCallback): Promise<ACIRExecutionResult>;
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN2bV93YXNtLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJpdmF0ZS9hY3ZtX3dhc20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFpQixNQUFNLHVCQUF1QixDQUFDO0FBRXhGLE9BQWlCLEVBQXVCLEtBQUssa0JBQWtCLEVBQWtCLE1BQU0scUJBQXFCLENBQUM7QUFFN0csT0FBTyxLQUFLLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBRSxLQUFLLG1CQUFtQixFQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQW1CLE1BQU0sd0JBQXdCLENBQUM7QUFJaEYscUJBQWEsYUFBYyxZQUFXLGdCQUFnQjtJQUNwRCxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUV0QixZQUFZLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxHQUFHLGNBQWMsRUFFckQ7SUFFSyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQVMxQjtJQUVLLHNCQUFzQixDQUMxQixLQUFLLEVBQUUsV0FBVyxFQUNsQixRQUFRLEVBQUUsMkJBQTJCLEVBQ3JDLFFBQVEsRUFBRSxrQkFBa0IsR0FDM0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQWdDdEI7SUFFSyxrQkFBa0IsQ0FDdEIsS0FBSyxFQUFFLFdBQVcsRUFDbEIsUUFBUSxFQUFFLGdDQUFnQyxFQUMxQyxRQUFRLEVBQUUsWUFBWSxHQUNyQixPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FHOUI7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acvm_wasm.d.ts","sourceRoot":"","sources":["../../src/private/acvm_wasm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAiB,MAAM,uBAAuB,CAAC;AAExF,OAAiB,EAAuB,KAAK,kBAAkB,EAAkB,MAAM,qBAAqB,CAAC;AAE7G,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAQ,MAAM,gBAAgB,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"acvm_wasm.d.ts","sourceRoot":"","sources":["../../src/private/acvm_wasm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAiB,MAAM,uBAAuB,CAAC;AAExF,OAAiB,EAAuB,KAAK,kBAAkB,EAAkB,MAAM,qBAAqB,CAAC;AAE7G,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAQ,MAAM,gBAAgB,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,wBAAwB,CAAC;AAIhF,qBAAa,aAAc,YAAW,gBAAgB;IACpD,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IAEtB,YAAY,gBAAgB,CAAC,EAAE,MAAM,GAAG,cAAc,EAErD;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAS1B;IAEK,sBAAsB,CAC1B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,2BAA2B,EACrC,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAgCtB;IAEK,kBAAkB,CACtB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,gCAAgC,EAC1C,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,mBAAmB,CAAC,CAG9B;CACF"}
|
|
@@ -4,6 +4,7 @@ import initACVM, { executeCircuit } from '@aztec/noir-acvm_js';
|
|
|
4
4
|
import initAbi from '@aztec/noir-noirc_abi';
|
|
5
5
|
import { acvm } from './acvm/acvm.js';
|
|
6
6
|
import { enrichNoirError } from './circuit_simulator.js';
|
|
7
|
+
let wasmInitPromise;
|
|
7
8
|
export class WASMSimulator {
|
|
8
9
|
log;
|
|
9
10
|
constructor(loggerOrBindings){
|
|
@@ -14,10 +15,11 @@ export class WASMSimulator {
|
|
|
14
15
|
// web environment. For the node environment, this
|
|
15
16
|
// is a no-op.
|
|
16
17
|
if (typeof initAbi === 'function') {
|
|
17
|
-
/** @ts-expect-error The node bundle doesn't include these default imports, so TS complains */
|
|
18
|
+
/** @ts-expect-error The node bundle doesn't include these default imports, so TS complains */ wasmInitPromise ??= Promise.all([
|
|
18
19
|
initAbi(),
|
|
19
20
|
initACVM()
|
|
20
21
|
]);
|
|
22
|
+
await wasmInitPromise;
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
25
|
async executeProtocolCircuit(input, artifact, callback) {
|
|
@@ -30,9 +30,10 @@ export declare abstract class BaseAvmSimulationTester {
|
|
|
30
30
|
registerAndDeployContract(constructorArgs: any[], deployer: AztecAddress, contractArtifact: ContractArtifact, skipNullifierInsertion?: boolean, seed?: number, contractClassSeed?: number, originalContractClassId?: Fr): Promise<ContractInstanceWithAddress>;
|
|
31
31
|
registerFeeJuiceContract(): Promise<ContractInstanceWithAddress>;
|
|
32
32
|
registerAuthContract(): Promise<ContractInstanceWithAddress>;
|
|
33
|
+
registerClassRegistryContract(): Promise<ContractInstanceWithAddress>;
|
|
33
34
|
registerInstanceRegistryContract(): Promise<ContractInstanceWithAddress>;
|
|
34
35
|
addContractInstance(contractInstance: ContractInstanceWithAddress, skipNullifierInsertion?: boolean): Promise<void>;
|
|
35
36
|
private insertContractAddressNullifier;
|
|
36
37
|
insertNullifier(contractThatEmitted: AztecAddress, nullifier: Fr): Promise<void>;
|
|
37
38
|
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9hdm1fc2ltdWxhdGlvbl90ZXN0ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2ZpeHR1cmVzL2Jhc2VfYXZtX3NpbXVsYXRpb25fdGVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9wRCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFFLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHakYsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUc5Rjs7Ozs7Ozs7OztHQVVHO0FBQ0gsOEJBQXNCLHVCQUF1QjtJQUlsQyxrQkFBa0IsRUFBRSx3QkFBd0I7SUFDNUMsV0FBVyxFQUFFLHlCQUF5QjtJQUM3QyxPQUFPLENBQUMsc0JBQXNCO0lBTHpCLE1BQU0seUNBQXlDO0lBRXRELFlBQ1Msa0JBQWtCLEVBQUUsd0JBQXdCLEVBQzVDLFdBQVcsRUFBRSx5QkFBeUIsRUFDckMsc0JBQXNCLEtBQW1CLEVBQy9DO0lBRUUsa0JBQWtCLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxPQUFPLEtBQThCLGlCQUlyRjtJQUVLLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxpQkFLaEU7SUFFRDs7O09BR0c7SUFDRyx5QkFBeUIsQ0FDN0IsZUFBZSxFQUFFLEdBQUcsRUFBRSxFQUN0QixRQUFRLEVBQUUsWUFBWSxFQUN0QixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsc0JBQXNCLFVBQVEsRUFDOUIsSUFBSSxTQUFJLEVBQ1IsaUJBQWlCLFNBQU8sRUFDeEIsdUJBQXVCLENBQUMsRUFBRSxFQUFFLEdBQzNCLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQWdCdEM7SUFFSyx3QkFBd0IsSUFBSSxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FTckU7SUFFSyxvQkFBb0IsSUFBSSxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FpQmpFO0lBRUssNkJBQTZCLElBQUksT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBYTFFO0lBRUssZ0NBQWdDLElBQUksT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBYTdFO0lBRUssbUJBQW1CLENBQUMsZ0JBQWdCLEVBQUUsMkJBQTJCLEVBQUUsc0JBQXNCLFVBQVEsaUJBS3RHO1lBRWEsOEJBQThCO0lBUXRDLGVBQWUsQ0FBQyxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEVBQUUsaUJBR3JFO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base_avm_simulation_tester.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/base_avm_simulation_tester.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"base_avm_simulation_tester.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/base_avm_simulation_tester.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAOpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAGjF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAG9F;;;;;;;;;;GAUG;AACH,8BAAsB,uBAAuB;IAIlC,kBAAkB,EAAE,wBAAwB;IAC5C,WAAW,EAAE,yBAAyB;IAC7C,OAAO,CAAC,sBAAsB;IALzB,MAAM,yCAAyC;IAEtD,YACS,kBAAkB,EAAE,wBAAwB,EAC5C,WAAW,EAAE,yBAAyB,EACrC,sBAAsB,KAAmB,EAC/C;IAEE,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,KAA8B,iBAIrF;IAEK,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,iBAKhE;IAED;;;OAGG;IACG,yBAAyB,CAC7B,eAAe,EAAE,GAAG,EAAE,EACtB,QAAQ,EAAE,YAAY,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,sBAAsB,UAAQ,EAC9B,IAAI,SAAI,EACR,iBAAiB,SAAO,EACxB,uBAAuB,CAAC,EAAE,EAAE,GAC3B,OAAO,CAAC,2BAA2B,CAAC,CAgBtC;IAEK,wBAAwB,IAAI,OAAO,CAAC,2BAA2B,CAAC,CASrE;IAEK,oBAAoB,IAAI,OAAO,CAAC,2BAA2B,CAAC,CAiBjE;IAEK,6BAA6B,IAAI,OAAO,CAAC,2BAA2B,CAAC,CAa1E;IAEK,gCAAgC,IAAI,OAAO,CAAC,2BAA2B,CAAC,CAa7E;IAEK,mBAAmB,CAAC,gBAAgB,EAAE,2BAA2B,EAAE,sBAAsB,UAAQ,iBAKtG;YAEa,8BAA8B;IAQtC,eAAe,CAAC,mBAAmB,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,iBAGrE;CACF"}
|
|
@@ -2,9 +2,10 @@ import { CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS } from '@aztec/constants';
|
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
5
|
-
import {
|
|
5
|
+
import { getCanonicalClassRegistry } from '@aztec/protocol-contracts/class-registry';
|
|
6
6
|
import { computeFeePayerBalanceStorageSlot, getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
7
7
|
import { getCanonicalInstanceRegistry } from '@aztec/protocol-contracts/instance-registry';
|
|
8
|
+
import { getStandardAuthRegistry } from '@aztec/standard-contracts/auth-registry';
|
|
8
9
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
9
10
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
10
11
|
import { computePublicDataTreeLeafSlot, siloNullifier } from '@aztec/stdlib/hash';
|
|
@@ -66,15 +67,29 @@ import { createContractClassAndInstance } from './utils.js';
|
|
|
66
67
|
return feeJuice.instance;
|
|
67
68
|
}
|
|
68
69
|
async registerAuthContract() {
|
|
69
|
-
const authRegistry = await
|
|
70
|
+
const authRegistry = await getStandardAuthRegistry();
|
|
70
71
|
const authRegistryContractClassPublic = {
|
|
71
72
|
...authRegistry.contractClass,
|
|
72
73
|
privateFunctions: [],
|
|
73
74
|
utilityFunctions: []
|
|
74
75
|
};
|
|
75
76
|
await this.contractDataSource.addNewContract(authRegistry.artifact, authRegistryContractClassPublic, authRegistry.instance);
|
|
77
|
+
// AuthRegistry is a standard contract (not a protocol contract), so the AVM enforces a
|
|
78
|
+
// deployment-nullifier check on every instance retrieval. Insert the nullifier here so
|
|
79
|
+
// calls to AuthRegistry don't EXCEPTIONAL_HALT during simulation.
|
|
80
|
+
await this.insertContractAddressNullifier(authRegistry.instance.address);
|
|
76
81
|
return authRegistry.instance;
|
|
77
82
|
}
|
|
83
|
+
async registerClassRegistryContract() {
|
|
84
|
+
const classRegistry = await getCanonicalClassRegistry();
|
|
85
|
+
const classRegistryContractClassPublic = {
|
|
86
|
+
...classRegistry.contractClass,
|
|
87
|
+
privateFunctions: [],
|
|
88
|
+
utilityFunctions: []
|
|
89
|
+
};
|
|
90
|
+
await this.contractDataSource.addNewContract(classRegistry.artifact, classRegistryContractClassPublic, classRegistry.instance);
|
|
91
|
+
return classRegistry.instance;
|
|
92
|
+
}
|
|
78
93
|
async registerInstanceRegistryContract() {
|
|
79
94
|
const instanceRegistry = await getCanonicalInstanceRegistry();
|
|
80
95
|
const instanceRegistryContractClassPublic = {
|
|
@@ -3,4 +3,4 @@ import type { ContractArtifact } from '@aztec/stdlib/abi';
|
|
|
3
3
|
import { PublicTxSimulationTester } from './public_tx_simulation_tester.js';
|
|
4
4
|
export declare function bulkTest(tester: PublicTxSimulationTester, logger: Logger, avmTestContractArtifact: ContractArtifact): Promise<import("@aztec/stdlib/avm").PublicTxResult>;
|
|
5
5
|
export declare function megaBulkTest(tester: PublicTxSimulationTester, logger: Logger, avmTestContractArtifact: ContractArtifact): Promise<import("@aztec/stdlib/avm").PublicTxResult>;
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsa190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL2ZpeHR1cmVzL2J1bGtfdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTVFLHdCQUFzQixRQUFRLENBQzVCLE1BQU0sRUFBRSx3QkFBd0IsRUFDaEMsTUFBTSxFQUFFLE1BQU0sRUFDZCx1QkFBdUIsRUFBRSxnQkFBZ0IsdURBZ0cxQztBQUVELHdCQUFzQixZQUFZLENBQ2hDLE1BQU0sRUFBRSx3QkFBd0IsRUFDaEMsTUFBTSxFQUFFLE1BQU0sRUFDZCx1QkFBdUIsRUFBRSxnQkFBZ0IsdURBaUYxQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk_test.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/bulk_test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,wBAAwB,EAChC,MAAM,EAAE,MAAM,EACd,uBAAuB,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"bulk_test.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/bulk_test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,wBAAwB,EAChC,MAAM,EAAE,MAAM,EACd,uBAAuB,EAAE,gBAAgB,uDAgG1C;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,wBAAwB,EAChC,MAAM,EAAE,MAAM,EACd,uBAAuB,EAAE,gBAAgB,uDAiF1C"}
|
|
@@ -10,6 +10,7 @@ export async function bulkTest(tester, logger, avmTestContractArtifact) {
|
|
|
10
10
|
// Register multiple different protocol contracts (to ensure we don't dedup bytecode hashing events):
|
|
11
11
|
await tester.registerAuthContract();
|
|
12
12
|
await tester.registerInstanceRegistryContract();
|
|
13
|
+
await tester.registerClassRegistryContract();
|
|
13
14
|
// Get a deployed contract instance to pass to the contract
|
|
14
15
|
// for it to use as "expected" values when testing contract instance retrieval.
|
|
15
16
|
const expectContractInstance = avmTestContract;
|
|
@@ -23,4 +23,4 @@ export declare function createTxForPublicCalls(privateInsertions: TestPrivateIns
|
|
|
23
23
|
export declare function createTxForPrivateOnly(feePayer?: AztecAddress, gasUsedByPrivate?: Gas): Promise<Tx>;
|
|
24
24
|
export declare function addNewContractClassToTx(tx: Tx, contractClass: ContractClassPublic, skipNullifierInsertion?: boolean): Promise<void>;
|
|
25
25
|
export declare function addNewContractInstanceToTx(tx: Tx, contractInstance: ContractInstanceWithAddress, skipNullifierInsertion?: boolean): Promise<void>;
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZml4dHVyZXMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFHTCxHQUFHLEVBR0osTUFBTSxtQkFBbUIsQ0FBQztBQVUzQixPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5FLE9BQU8sRUFFTCxlQUFlLEVBRWYsNkJBQTZCLEVBQzdCLEVBQUUsRUFHSCxNQUFNLGtCQUFrQixDQUFDO0FBSTFCLE1BQU0sTUFBTSxxQkFBcUIsR0FBRztJQUNsQyxVQUFVLENBQUMsRUFBRTtRQUNYLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLENBQUM7S0FDcEMsQ0FBQztJQUNGLGFBQWEsQ0FBQyxFQUFFO1FBQ2QsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDbEIsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDbEIsVUFBVSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztLQUNwQyxDQUFDO0NBQ0gsQ0FBQztBQUVGOztHQUVHO0FBQ0gsd0JBQXNCLHNCQUFzQixDQUMxQyxpQkFBaUIsRUFBRSxxQkFBcUIsRUFDeEMsaUJBQWlCLEVBQUUsNkJBQTZCLEVBQUUsRUFDbEQsZUFBZSxFQUFFLDZCQUE2QixFQUFFLEVBQ2hELG1CQUFtQixDQUFDLEVBQUUsNkJBQTZCLEVBQ25ELFFBQVEsZUFBc0IsRUFDOUIsZ0JBQWdCLEdBQUUsR0FBaUIsRUFDbkMsT0FBTyxHQUFFLGVBQXlDLEVBQ2xELFNBQVMsQ0FBQyxFQUFFLEdBQUcsR0FDZCxPQUFPLENBQUMsRUFBRSxDQUFDLENBOEZiO0FBRUQsd0JBQXNCLHNCQUFzQixDQUMxQyxRQUFRLGVBQXNCLEVBQzlCLGdCQUFnQixHQUFFLEdBQXFCLEdBQ3RDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0EwQmI7QUFFRCx3QkFBc0IsdUJBQXVCLENBQzNDLEVBQUUsRUFBRSxFQUFFLEVBQ04sYUFBYSxFQUFFLG1CQUFtQixFQUNsQyxzQkFBc0IsVUFBUSxpQkE2Qi9CO0FBRUQsd0JBQXNCLDBCQUEwQixDQUM5QyxFQUFFLEVBQUUsRUFBRSxFQUNOLGdCQUFnQixFQUFFLDJCQUEyQixFQUM3QyxzQkFBc0IsVUFBUSxpQkF5Qy9CIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/utils.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAGL,GAAG,EAGJ,MAAM,mBAAmB,CAAC;AAU3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAEL,eAAe,EAEf,6BAA6B,EAC7B,EAAE,EAGH,MAAM,kBAAkB,CAAC;AAI1B,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;IACF,aAAa,CAAC,EAAE;QACd,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,iBAAiB,EAAE,qBAAqB,EACxC,iBAAiB,EAAE,6BAA6B,EAAE,EAClD,eAAe,EAAE,6BAA6B,EAAE,EAChD,mBAAmB,CAAC,EAAE,6BAA6B,EACnD,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAiB,EACnC,OAAO,GAAE,eAAyC,EAClD,SAAS,CAAC,EAAE,GAAG,GACd,OAAO,CAAC,EAAE,CAAC,CA8Fb;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAqB,GACtC,OAAO,CAAC,EAAE,CAAC,CA0Bb;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,aAAa,EAAE,mBAAmB,EAClC,sBAAsB,UAAQ,iBA6B/B;AAED,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,gBAAgB,EAAE,2BAA2B,EAC7C,sBAAsB,UAAQ,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/utils.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAGL,GAAG,EAGJ,MAAM,mBAAmB,CAAC;AAU3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAEL,eAAe,EAEf,6BAA6B,EAC7B,EAAE,EAGH,MAAM,kBAAkB,CAAC;AAI1B,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;IACF,aAAa,CAAC,EAAE;QACd,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,iBAAiB,EAAE,qBAAqB,EACxC,iBAAiB,EAAE,6BAA6B,EAAE,EAClD,eAAe,EAAE,6BAA6B,EAAE,EAChD,mBAAmB,CAAC,EAAE,6BAA6B,EACnD,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAiB,EACnC,OAAO,GAAE,eAAyC,EAClD,SAAS,CAAC,EAAE,GAAG,GACd,OAAO,CAAC,EAAE,CAAC,CA8Fb;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAqB,GACtC,OAAO,CAAC,EAAE,CAAC,CA0Bb;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,aAAa,EAAE,mBAAmB,EAClC,sBAAsB,UAAQ,iBA6B/B;AAED,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,gBAAgB,EAAE,2BAA2B,EAC7C,sBAAsB,UAAQ,iBAyC/B"}
|
|
@@ -135,13 +135,15 @@ export async function addNewContractClassToTx(tx, contractClass, skipNullifierIn
|
|
|
135
135
|
tx.contractClassLogFields.push(logFields);
|
|
136
136
|
}
|
|
137
137
|
export async function addNewContractInstanceToTx(tx, contractInstance, skipNullifierInsertion = false) {
|
|
138
|
-
// Only ivpk_m is broadcast as a point (x, y); the other
|
|
138
|
+
// Only ivpk_m is broadcast as a point (x, y); the other five keys are hashes.
|
|
139
139
|
const publicKeysAsFields = [
|
|
140
140
|
contractInstance.publicKeys.npkMHash,
|
|
141
141
|
contractInstance.publicKeys.ivpkM.x,
|
|
142
142
|
contractInstance.publicKeys.ivpkM.y,
|
|
143
143
|
contractInstance.publicKeys.ovpkMHash,
|
|
144
|
-
contractInstance.publicKeys.tpkMHash
|
|
144
|
+
contractInstance.publicKeys.tpkMHash,
|
|
145
|
+
contractInstance.publicKeys.mspkMHash,
|
|
146
|
+
contractInstance.publicKeys.fbpkMHash
|
|
145
147
|
];
|
|
146
148
|
const logFields = [
|
|
147
149
|
CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/simulator",
|
|
3
|
-
"version": "5.0.0-nightly.
|
|
3
|
+
"version": "5.0.0-nightly.20260530",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": "./dest/server.js",
|
|
@@ -64,25 +64,26 @@
|
|
|
64
64
|
]
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@aztec/constants": "5.0.0-nightly.
|
|
68
|
-
"@aztec/foundation": "5.0.0-nightly.
|
|
69
|
-
"@aztec/native": "5.0.0-nightly.
|
|
70
|
-
"@aztec/noir-acvm_js": "5.0.0-nightly.
|
|
71
|
-
"@aztec/noir-noirc_abi": "5.0.0-nightly.
|
|
72
|
-
"@aztec/noir-protocol-circuits-types": "5.0.0-nightly.
|
|
73
|
-
"@aztec/noir-types": "5.0.0-nightly.
|
|
74
|
-
"@aztec/protocol-contracts": "5.0.0-nightly.
|
|
75
|
-
"@aztec/
|
|
76
|
-
"@aztec/
|
|
77
|
-
"@aztec/
|
|
67
|
+
"@aztec/constants": "5.0.0-nightly.20260530",
|
|
68
|
+
"@aztec/foundation": "5.0.0-nightly.20260530",
|
|
69
|
+
"@aztec/native": "5.0.0-nightly.20260530",
|
|
70
|
+
"@aztec/noir-acvm_js": "5.0.0-nightly.20260530",
|
|
71
|
+
"@aztec/noir-noirc_abi": "5.0.0-nightly.20260530",
|
|
72
|
+
"@aztec/noir-protocol-circuits-types": "5.0.0-nightly.20260530",
|
|
73
|
+
"@aztec/noir-types": "5.0.0-nightly.20260530",
|
|
74
|
+
"@aztec/protocol-contracts": "5.0.0-nightly.20260530",
|
|
75
|
+
"@aztec/standard-contracts": "5.0.0-nightly.20260530",
|
|
76
|
+
"@aztec/stdlib": "5.0.0-nightly.20260530",
|
|
77
|
+
"@aztec/telemetry-client": "5.0.0-nightly.20260530",
|
|
78
|
+
"@aztec/world-state": "5.0.0-nightly.20260530",
|
|
78
79
|
"lodash.clonedeep": "^4.5.0",
|
|
79
80
|
"lodash.merge": "^4.6.2",
|
|
80
81
|
"tslib": "^2.4.0"
|
|
81
82
|
},
|
|
82
83
|
"devDependencies": {
|
|
83
|
-
"@aztec/kv-store": "5.0.0-nightly.
|
|
84
|
-
"@aztec/noir-contracts.js": "5.0.0-nightly.
|
|
85
|
-
"@aztec/noir-test-contracts.js": "5.0.0-nightly.
|
|
84
|
+
"@aztec/kv-store": "5.0.0-nightly.20260530",
|
|
85
|
+
"@aztec/noir-contracts.js": "5.0.0-nightly.20260530",
|
|
86
|
+
"@aztec/noir-test-contracts.js": "5.0.0-nightly.20260530",
|
|
86
87
|
"@jest/globals": "^30.0.0",
|
|
87
88
|
"@types/jest": "^30.0.0",
|
|
88
89
|
"@types/lodash.clonedeep": "^4.5.7",
|
package/src/private/acvm_wasm.ts
CHANGED
|
@@ -10,6 +10,8 @@ import type { ACVMWitness } from './acvm/acvm_types.js';
|
|
|
10
10
|
import type { ACVMSuccess } from './acvm_native.js';
|
|
11
11
|
import { type CircuitSimulator, enrichNoirError } from './circuit_simulator.js';
|
|
12
12
|
|
|
13
|
+
let wasmInitPromise: Promise<unknown> | undefined;
|
|
14
|
+
|
|
13
15
|
export class WASMSimulator implements CircuitSimulator {
|
|
14
16
|
protected log: Logger;
|
|
15
17
|
|
|
@@ -23,7 +25,8 @@ export class WASMSimulator implements CircuitSimulator {
|
|
|
23
25
|
// is a no-op.
|
|
24
26
|
if (typeof initAbi === 'function') {
|
|
25
27
|
/** @ts-expect-error The node bundle doesn't include these default imports, so TS complains */
|
|
26
|
-
|
|
28
|
+
wasmInitPromise ??= Promise.all([initAbi(), initACVM()]);
|
|
29
|
+
await wasmInitPromise;
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
32
|
|
|
@@ -2,9 +2,10 @@ import { CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS } from '@aztec/constants';
|
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
5
|
-
import {
|
|
5
|
+
import { getCanonicalClassRegistry } from '@aztec/protocol-contracts/class-registry';
|
|
6
6
|
import { computeFeePayerBalanceStorageSlot, getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
7
7
|
import { getCanonicalInstanceRegistry } from '@aztec/protocol-contracts/instance-registry';
|
|
8
|
+
import { getStandardAuthRegistry } from '@aztec/standard-contracts/auth-registry';
|
|
8
9
|
import type { ContractArtifact } from '@aztec/stdlib/abi';
|
|
9
10
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
10
11
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
@@ -91,7 +92,7 @@ export abstract class BaseAvmSimulationTester {
|
|
|
91
92
|
}
|
|
92
93
|
|
|
93
94
|
async registerAuthContract(): Promise<ContractInstanceWithAddress> {
|
|
94
|
-
const authRegistry = await
|
|
95
|
+
const authRegistry = await getStandardAuthRegistry();
|
|
95
96
|
const authRegistryContractClassPublic = {
|
|
96
97
|
...authRegistry.contractClass,
|
|
97
98
|
privateFunctions: [],
|
|
@@ -102,9 +103,28 @@ export abstract class BaseAvmSimulationTester {
|
|
|
102
103
|
authRegistryContractClassPublic,
|
|
103
104
|
authRegistry.instance,
|
|
104
105
|
);
|
|
106
|
+
// AuthRegistry is a standard contract (not a protocol contract), so the AVM enforces a
|
|
107
|
+
// deployment-nullifier check on every instance retrieval. Insert the nullifier here so
|
|
108
|
+
// calls to AuthRegistry don't EXCEPTIONAL_HALT during simulation.
|
|
109
|
+
await this.insertContractAddressNullifier(authRegistry.instance.address);
|
|
105
110
|
return authRegistry.instance;
|
|
106
111
|
}
|
|
107
112
|
|
|
113
|
+
async registerClassRegistryContract(): Promise<ContractInstanceWithAddress> {
|
|
114
|
+
const classRegistry = await getCanonicalClassRegistry();
|
|
115
|
+
const classRegistryContractClassPublic = {
|
|
116
|
+
...classRegistry.contractClass,
|
|
117
|
+
privateFunctions: [],
|
|
118
|
+
utilityFunctions: [],
|
|
119
|
+
};
|
|
120
|
+
await this.contractDataSource.addNewContract(
|
|
121
|
+
classRegistry.artifact,
|
|
122
|
+
classRegistryContractClassPublic,
|
|
123
|
+
classRegistry.instance,
|
|
124
|
+
);
|
|
125
|
+
return classRegistry.instance;
|
|
126
|
+
}
|
|
127
|
+
|
|
108
128
|
async registerInstanceRegistryContract(): Promise<ContractInstanceWithAddress> {
|
|
109
129
|
const instanceRegistry = await getCanonicalInstanceRegistry();
|
|
110
130
|
const instanceRegistryContractClassPublic = {
|
|
@@ -25,6 +25,7 @@ export async function bulkTest(
|
|
|
25
25
|
// Register multiple different protocol contracts (to ensure we don't dedup bytecode hashing events):
|
|
26
26
|
await tester.registerAuthContract();
|
|
27
27
|
await tester.registerInstanceRegistryContract();
|
|
28
|
+
await tester.registerClassRegistryContract();
|
|
28
29
|
|
|
29
30
|
// Get a deployed contract instance to pass to the contract
|
|
30
31
|
// for it to use as "expected" values when testing contract instance retrieval.
|
|
@@ -233,13 +233,15 @@ export async function addNewContractInstanceToTx(
|
|
|
233
233
|
contractInstance: ContractInstanceWithAddress,
|
|
234
234
|
skipNullifierInsertion = false,
|
|
235
235
|
) {
|
|
236
|
-
// Only ivpk_m is broadcast as a point (x, y); the other
|
|
236
|
+
// Only ivpk_m is broadcast as a point (x, y); the other five keys are hashes.
|
|
237
237
|
const publicKeysAsFields = [
|
|
238
238
|
contractInstance.publicKeys.npkMHash,
|
|
239
239
|
contractInstance.publicKeys.ivpkM.x,
|
|
240
240
|
contractInstance.publicKeys.ivpkM.y,
|
|
241
241
|
contractInstance.publicKeys.ovpkMHash,
|
|
242
242
|
contractInstance.publicKeys.tpkMHash,
|
|
243
|
+
contractInstance.publicKeys.mspkMHash,
|
|
244
|
+
contractInstance.publicKeys.fbpkMHash,
|
|
243
245
|
];
|
|
244
246
|
const logFields = [
|
|
245
247
|
CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG,
|