@aztec/simulator 0.55.1 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/avm/avm_execution_environment.d.ts +0 -8
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +1 -19
- package/dest/avm/avm_gas.d.ts +2 -2
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +31 -115
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +6 -6
- package/dest/avm/avm_memory_types.d.ts +35 -7
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_memory_types.js +25 -11
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +5 -6
- package/dest/avm/bytecode_utils.d.ts +1 -2
- package/dest/avm/bytecode_utils.d.ts.map +1 -1
- package/dest/avm/bytecode_utils.js +3 -17
- package/dest/avm/fixtures/index.d.ts +4 -16
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +9 -25
- package/dest/avm/journal/index.d.ts +0 -1
- package/dest/avm/journal/index.d.ts.map +1 -1
- package/dest/avm/journal/index.js +1 -2
- package/dest/avm/journal/journal.d.ts +4 -4
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +14 -13
- package/dest/avm/opcodes/bitwise.d.ts +10 -4
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/avm/opcodes/bitwise.js +17 -11
- package/dest/avm/opcodes/commitment.js +2 -2
- package/dest/avm/opcodes/comparators.js +2 -2
- package/dest/avm/opcodes/conversion.d.ts +3 -2
- package/dest/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/avm/opcodes/conversion.js +18 -11
- package/dest/avm/opcodes/environment_getters.d.ts +27 -63
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +75 -80
- package/dest/avm/opcodes/hashing.d.ts +7 -5
- package/dest/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/avm/opcodes/hashing.js +40 -24
- package/dest/avm/opcodes/index.d.ts +3 -0
- package/dest/avm/opcodes/index.d.ts.map +1 -1
- package/dest/avm/opcodes/index.js +4 -1
- package/dest/avm/opcodes/instruction_impl.d.ts +0 -26
- package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction_impl.js +1 -51
- package/dest/avm/opcodes/memory.d.ts +7 -2
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +23 -6
- package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +1 -1
- package/dest/avm/opcodes/multi_scalar_mul.js +7 -6
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +5 -24
- package/dest/avm/serialization/instruction_serialization.d.ts +48 -60
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +50 -63
- package/dest/avm/test_utils.d.ts +8 -8
- package/dest/avm/test_utils.d.ts.map +1 -1
- package/dest/avm/test_utils.js +15 -15
- package/dest/client/simulator.d.ts +1 -1
- package/dest/client/test_utils.d.ts.map +1 -1
- package/dest/client/test_utils.js +12 -6
- package/dest/client/unconstrained_execution.d.ts +2 -2
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +3 -3
- package/dest/public/enqueued_call_simulator.d.ts +43 -0
- package/dest/public/enqueued_call_simulator.d.ts.map +1 -0
- package/dest/public/enqueued_call_simulator.js +155 -0
- package/dest/public/enqueued_calls_processor.d.ts +44 -0
- package/dest/public/enqueued_calls_processor.d.ts.map +1 -0
- package/dest/public/enqueued_calls_processor.js +218 -0
- package/dest/public/execution.d.ts +4 -9
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +5 -10
- package/dest/public/executor.d.ts +3 -5
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +5 -9
- package/dest/public/hints_builder.d.ts +4 -3
- package/dest/public/hints_builder.d.ts.map +1 -1
- package/dest/public/hints_builder.js +4 -4
- package/dest/public/index.d.ts +3 -2
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +3 -3
- package/dest/public/public_db_sources.d.ts +17 -24
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +58 -65
- package/dest/public/public_kernel.d.ts +3 -9
- package/dest/public/public_kernel.d.ts.map +1 -1
- package/dest/public/public_kernel.js +13 -40
- package/dest/public/public_kernel_circuit_simulator.d.ts +5 -11
- package/dest/public/public_kernel_circuit_simulator.d.ts.map +1 -1
- package/dest/public/public_kernel_tail_simulator.d.ts +19 -0
- package/dest/public/public_kernel_tail_simulator.d.ts.map +1 -0
- package/dest/public/public_kernel_tail_simulator.js +45 -0
- package/dest/public/public_processor.d.ts +8 -5
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +31 -48
- package/dest/public/public_processor_metrics.d.ts +3 -3
- package/dest/public/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor_metrics.js +1 -1
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +4 -8
- package/package.json +9 -9
- package/src/avm/avm_execution_environment.ts +1 -21
- package/src/avm/avm_gas.ts +30 -114
- package/src/avm/avm_machine_state.ts +5 -5
- package/src/avm/avm_memory_types.ts +31 -9
- package/src/avm/avm_simulator.ts +4 -5
- package/src/avm/bytecode_utils.ts +2 -17
- package/src/avm/fixtures/index.ts +12 -44
- package/src/avm/journal/index.ts +0 -1
- package/src/avm/journal/journal.ts +13 -18
- package/src/avm/opcodes/bitwise.ts +14 -10
- package/src/avm/opcodes/commitment.ts +1 -1
- package/src/avm/opcodes/comparators.ts +2 -2
- package/src/avm/opcodes/conversion.ts +19 -10
- package/src/avm/opcodes/environment_getters.ts +72 -99
- package/src/avm/opcodes/hashing.ts +47 -22
- package/src/avm/opcodes/index.ts +3 -0
- package/src/avm/opcodes/instruction_impl.ts +0 -62
- package/src/avm/opcodes/memory.ts +20 -6
- package/src/avm/opcodes/multi_scalar_mul.ts +6 -6
- package/src/avm/serialization/bytecode_serialization.ts +11 -33
- package/src/avm/serialization/instruction_serialization.ts +5 -18
- package/src/avm/test_utils.ts +20 -16
- package/src/client/test_utils.ts +36 -9
- package/src/client/unconstrained_execution.ts +3 -8
- package/src/public/enqueued_call_simulator.ts +336 -0
- package/src/public/enqueued_calls_processor.ts +388 -0
- package/src/public/execution.ts +5 -12
- package/src/public/executor.ts +4 -12
- package/src/public/hints_builder.ts +14 -12
- package/src/public/index.ts +3 -2
- package/src/public/public_db_sources.ts +62 -67
- package/src/public/public_kernel.ts +15 -49
- package/src/public/public_kernel_circuit_simulator.ts +6 -10
- package/src/public/public_kernel_tail_simulator.ts +106 -0
- package/src/public/public_processor.ts +61 -86
- package/src/public/public_processor_metrics.ts +3 -3
- package/src/public/side_effect_trace.ts +5 -12
- package/dest/avm/journal/host_storage.d.ts +0 -13
- package/dest/avm/journal/host_storage.d.ts.map +0 -1
- package/dest/avm/journal/host_storage.js +0 -13
- package/dest/avm/opcodes/context_getters.d.ts +0 -15
- package/dest/avm/opcodes/context_getters.d.ts.map +0 -1
- package/dest/avm/opcodes/context_getters.js +0 -19
- package/dest/public/abstract_phase_manager.d.ts +0 -93
- package/dest/public/abstract_phase_manager.d.ts.map +0 -1
- package/dest/public/abstract_phase_manager.js +0 -285
- package/dest/public/app_logic_phase_manager.d.ts +0 -25
- package/dest/public/app_logic_phase_manager.d.ts.map +0 -1
- package/dest/public/app_logic_phase_manager.js +0 -52
- package/dest/public/phase_manager_factory.d.ts +0 -18
- package/dest/public/phase_manager_factory.d.ts.map +0 -1
- package/dest/public/phase_manager_factory.js +0 -56
- package/dest/public/setup_phase_manager.d.ts +0 -25
- package/dest/public/setup_phase_manager.d.ts.map +0 -1
- package/dest/public/setup_phase_manager.js +0 -39
- package/dest/public/tail_phase_manager.d.ts +0 -23
- package/dest/public/tail_phase_manager.d.ts.map +0 -1
- package/dest/public/tail_phase_manager.js +0 -50
- package/dest/public/teardown_phase_manager.d.ts +0 -27
- package/dest/public/teardown_phase_manager.d.ts.map +0 -1
- package/dest/public/teardown_phase_manager.js +0 -56
- package/src/avm/journal/host_storage.ts +0 -14
- package/src/avm/opcodes/context_getters.ts +0 -23
- package/src/public/abstract_phase_manager.ts +0 -522
- package/src/public/app_logic_phase_manager.ts +0 -81
- package/src/public/phase_manager_factory.ts +0 -126
- package/src/public/setup_phase_manager.ts +0 -61
- package/src/public/tail_phase_manager.ts +0 -127
- package/src/public/teardown_phase_manager.ts +0 -86
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../../src/avm/test_utils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../../src/avm/test_utils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAK1E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAE/F,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,QAE3E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,8BAA8B,EAAE,WAAW,CAAC,EAAE,8BAA8B,QAIhH;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,QAEpE;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,QAIhG;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QASxF;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,QAEzF;AAED,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,EAAE,EACb,KAAK,EAAE,EAAE,EACT,mBAAmB,CAAC,EAAE,EAAE,QAWzB;AAED,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,2BAA2B,QAEhH"}
|
package/dest/avm/test_utils.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { Fr } from '@aztec/circuits.js';
|
|
2
2
|
import { mock } from 'jest-mock-extended';
|
|
3
|
-
export function mockGetBytecode(
|
|
4
|
-
|
|
3
|
+
export function mockGetBytecode(worldStateDB, bytecode) {
|
|
4
|
+
worldStateDB.getBytecode.mockResolvedValue(bytecode);
|
|
5
5
|
}
|
|
6
6
|
export function mockTraceFork(trace, nestedTrace) {
|
|
7
7
|
trace.fork.mockReturnValue(nestedTrace ?? mock());
|
|
8
8
|
}
|
|
9
|
-
export function mockStorageRead(
|
|
10
|
-
|
|
9
|
+
export function mockStorageRead(worldStateDB, value) {
|
|
10
|
+
worldStateDB.storageRead.mockResolvedValue(value);
|
|
11
11
|
}
|
|
12
|
-
export function mockStorageReadWithMap(
|
|
13
|
-
|
|
12
|
+
export function mockStorageReadWithMap(worldStateDB, mockedStorage) {
|
|
13
|
+
worldStateDB.storageRead.mockImplementation((_address, slot) => Promise.resolve(mockedStorage.get(slot.toBigInt()) ?? Fr.ZERO));
|
|
14
14
|
}
|
|
15
|
-
export function mockNoteHashExists(
|
|
16
|
-
|
|
15
|
+
export function mockNoteHashExists(worldStateDB, _leafIndex, value) {
|
|
16
|
+
worldStateDB.getCommitmentValue.mockImplementation((index) => {
|
|
17
17
|
if (index == _leafIndex.toBigInt()) {
|
|
18
18
|
return Promise.resolve(value);
|
|
19
19
|
}
|
|
@@ -23,11 +23,11 @@ export function mockNoteHashExists(hs, _leafIndex, value) {
|
|
|
23
23
|
}
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
-
export function mockNullifierExists(
|
|
27
|
-
|
|
26
|
+
export function mockNullifierExists(worldStateDB, leafIndex, _value) {
|
|
27
|
+
worldStateDB.getNullifierIndex.mockResolvedValue(leafIndex.toBigInt());
|
|
28
28
|
}
|
|
29
|
-
export function mockL1ToL2MessageExists(
|
|
30
|
-
|
|
29
|
+
export function mockL1ToL2MessageExists(worldStateDB, leafIndex, value, valueAtOtherIndices) {
|
|
30
|
+
worldStateDB.getL1ToL2LeafValue.mockImplementation((index) => {
|
|
31
31
|
if (index == leafIndex.toBigInt()) {
|
|
32
32
|
return Promise.resolve(value);
|
|
33
33
|
}
|
|
@@ -38,7 +38,7 @@ export function mockL1ToL2MessageExists(hs, leafIndex, value, valueAtOtherIndice
|
|
|
38
38
|
}
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
|
-
export function mockGetContractInstance(
|
|
42
|
-
|
|
41
|
+
export function mockGetContractInstance(worldStateDB, contractInstance) {
|
|
42
|
+
worldStateDB.getContractInstance.mockResolvedValue(contractInstance);
|
|
43
43
|
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vdGVzdF91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJeEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSzFDLE1BQU0sVUFBVSxlQUFlLENBQUMsWUFBMEIsRUFBRSxRQUFnQjtJQUN6RSxZQUEwQyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0RixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFxQyxFQUFFLFdBQTRDO0lBQzlHLEtBQXFELENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FDekUsV0FBVyxJQUFJLElBQUksRUFBa0MsQ0FDdEQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFlBQTBCLEVBQUUsS0FBUztJQUNsRSxZQUEwQyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFlBQTBCLEVBQUUsYUFBOEI7SUFDOUYsWUFBMEMsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDNUYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDL0QsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsWUFBMEIsRUFBRSxVQUFjLEVBQUUsS0FBVTtJQUN0RixZQUEwQyxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7UUFDbEcsSUFBSSxLQUFLLElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDbkMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sNERBQTREO1lBQzVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFlBQTBCLEVBQUUsU0FBYSxFQUFFLE1BQVc7SUFDdkYsWUFBMEMsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUN4RyxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxZQUEwQixFQUMxQixTQUFhLEVBQ2IsS0FBUyxFQUNULG1CQUF3QjtJQUV2QixZQUEwQyxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7UUFDbEcsSUFBSSxLQUFLLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDbEMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sdUVBQXVFO1lBQ3ZFLDREQUE0RDtZQUM1RCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW9CLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLFlBQTBCLEVBQUUsZ0JBQTZDO0lBQzlHLFlBQTBDLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN0RyxDQUFDIn0=
|
|
@@ -29,7 +29,7 @@ export declare class AcirSimulator {
|
|
|
29
29
|
* @param contractAddress - The address of the contract.
|
|
30
30
|
* @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
|
|
31
31
|
*/
|
|
32
|
-
runUnconstrained(request: FunctionCall, entryPointArtifact: FunctionArtifact, contractAddress: AztecAddress, scopes?: AztecAddress[]): Promise<import("@aztec/foundation/abi").
|
|
32
|
+
runUnconstrained(request: FunctionCall, entryPointArtifact: FunctionArtifact, contractAddress: AztecAddress, scopes?: AztecAddress[]): Promise<import("@aztec/foundation/abi").AbiDecoded>;
|
|
33
33
|
/**
|
|
34
34
|
* Computes the inner nullifier of a note.
|
|
35
35
|
* @param contractAddress - The address of the contract.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../../src/client/test_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../../src/client/test_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,EAAE,EAAS,MAAM,oBAAoB,CAAC;AAsCnD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,EAAE,CAYtE"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import { Fq, Fr,
|
|
1
|
+
import { Fq, Fr, Point } from '@aztec/circuits.js';
|
|
2
2
|
import { Grumpkin } from '@aztec/circuits.js/barretenberg';
|
|
3
|
-
import { pedersenCommit } from '@aztec/foundation/crypto';
|
|
4
3
|
// Copied over from `noir-projects/aztec-nr/aztec/src/generators.nr`
|
|
4
|
+
const GENERATORS = [
|
|
5
|
+
new Point(new Fr(0x30426e64aee30e998c13c8ceecda3a77807dbead52bc2f3bf0eae851b4b710c1n), new Fr(0x113156a068f603023240c96b4da5474667db3b8711c521c748212a15bc034ea6n), false),
|
|
6
|
+
new Point(new Fr(0x2825c79cc6a5cbbeef7d6a8f1b6a12b312aa338440aefeb4396148c89147c049n), new Fr(0x129bfd1da54b7062d6b544e7e36b90736350f6fba01228c41c72099509f5701en), false),
|
|
7
|
+
new Point(new Fr(0x0edb1e293c3ce91bfc04e3ceaa50d2c541fa9d091c72eb403efb1cfa2cb3357fn), new Fr(0x1341d675fa030ece3113ad53ca34fd13b19b6e9762046734f414824c4d6ade35n), false),
|
|
8
|
+
new Point(new Fr(0x0e0dad2250583f2a9f0acb04ededf1701b85b0393cae753fe7e14b88af81cb52n), new Fr(0x0973b02c5caac339ee4ad5dab51329920f7bf1b6a07e1dabe5df67040b300962n), false),
|
|
9
|
+
new Point(new Fr(0x2f3342e900e8c488a28931aae68970738fdc68afde2910de7b320c00c902087dn), new Fr(0x1bf958dc63cb09d59230603a0269ae86d6f92494da244910351f1132df20fc08n), false),
|
|
10
|
+
];
|
|
5
11
|
const G_SLOT = new Point(new Fr(0x041223147b680850dc82e8a55a952d4df20256fe0593d949a9541ca00f0abf15n), new Fr(0x0a8c72e60d0e60f5d804549d48f3044d06140b98ed717a9b532af630c1530791n), false);
|
|
6
12
|
/**
|
|
7
13
|
* Computes a note hiding point as is done by the default implementation injected by macros.
|
|
@@ -10,12 +16,12 @@ const G_SLOT = new Point(new Fr(0x041223147b680850dc82e8a55a952d4df20256fe0593d9
|
|
|
10
16
|
* @returns A note hash.
|
|
11
17
|
*/
|
|
12
18
|
export function computeNoteHash(storageSlot, noteContent) {
|
|
13
|
-
// TODO(#7771): update this to do only 1 MSM call
|
|
14
|
-
const c = pedersenCommit(noteContent.map(f => f.toBuffer()), GeneratorIndex.NOTE_HIDING_POINT);
|
|
15
|
-
const noteHidingPointBeforeSlotting = new Point(new Fr(c[0]), new Fr(c[1]), false);
|
|
16
19
|
const grumpkin = new Grumpkin();
|
|
20
|
+
const noteHidingPointBeforeSlotting = noteContent
|
|
21
|
+
.slice(1)
|
|
22
|
+
.reduce((acc, item, i) => grumpkin.add(acc, grumpkin.mul(GENERATORS[i + 1], new Fq(item.toBigInt()))), grumpkin.mul(GENERATORS[0], new Fq(noteContent[0].toBigInt())));
|
|
17
23
|
const slotPoint = grumpkin.mul(G_SLOT, new Fq(storageSlot.toBigInt()));
|
|
18
24
|
const noteHidingPoint = grumpkin.add(noteHidingPointBeforeSlotting, slotPoint);
|
|
19
25
|
return noteHidingPoint.x;
|
|
20
26
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvdGVzdF91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFM0Qsb0VBQW9FO0FBQ3BFLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLElBQUksS0FBSyxDQUNQLElBQUksRUFBRSxDQUFDLG1FQUFtRSxDQUFDLEVBQzNFLElBQUksRUFBRSxDQUFDLG1FQUFtRSxDQUFDLEVBQzNFLEtBQUssQ0FDTjtJQUNELElBQUksS0FBSyxDQUNQLElBQUksRUFBRSxDQUFDLG1FQUFtRSxDQUFDLEVBQzNFLElBQUksRUFBRSxDQUFDLG1FQUFtRSxDQUFDLEVBQzNFLEtBQUssQ0FDTjtJQUNELElBQUksS0FBSyxDQUNQLElBQUksRUFBRSxDQUFDLG1FQUFtRSxDQUFDLEVBQzNFLElBQUksRUFBRSxDQUFDLG1FQUFtRSxDQUFDLEVBQzNFLEtBQUssQ0FDTjtJQUNELElBQUksS0FBSyxDQUNQLElBQUksRUFBRSxDQUFDLG1FQUFtRSxDQUFDLEVBQzNFLElBQUksRUFBRSxDQUFDLG1FQUFtRSxDQUFDLEVBQzNFLEtBQUssQ0FDTjtJQUNELElBQUksS0FBSyxDQUNQLElBQUksRUFBRSxDQUFDLG1FQUFtRSxDQUFDLEVBQzNFLElBQUksRUFBRSxDQUFDLG1FQUFtRSxDQUFDLEVBQzNFLEtBQUssQ0FDTjtDQUNGLENBQUM7QUFFRixNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FDdEIsSUFBSSxFQUFFLENBQUMsbUVBQW1FLENBQUMsRUFDM0UsSUFBSSxFQUFFLENBQUMsbUVBQW1FLENBQUMsRUFDM0UsS0FBSyxDQUNOLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsV0FBZSxFQUFFLFdBQWlCO0lBQ2hFLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7SUFDaEMsTUFBTSw2QkFBNkIsR0FBRyxXQUFXO1NBQzlDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDUixNQUFNLENBQ0wsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDN0YsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FDL0QsQ0FBQztJQUVKLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkUsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvRSxPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQyJ9
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type AbiDecoded, type FunctionArtifact, type FunctionSelector } from '@aztec/foundation/abi';
|
|
2
2
|
import { type AztecAddress } from '@aztec/foundation/aztec-address';
|
|
3
3
|
import { type Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { type ViewDataOracle } from './view_data_oracle.js';
|
|
5
5
|
/**
|
|
6
6
|
* Execute an unconstrained function and return the decoded values.
|
|
7
7
|
*/
|
|
8
|
-
export declare function executeUnconstrainedFunction(oracle: ViewDataOracle, artifact: FunctionArtifact, contractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], log?: import("@aztec/foundation/log").Logger): Promise<
|
|
8
|
+
export declare function executeUnconstrainedFunction(oracle: ViewDataOracle, artifact: FunctionArtifact, contractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], log?: import("@aztec/foundation/log").Logger): Promise<AbiDecoded>;
|
|
9
9
|
//# sourceMappingURL=unconstrained_execution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unconstrained_execution.d.ts","sourceRoot":"","sources":["../../src/client/unconstrained_execution.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"unconstrained_execution.d.ts","sourceRoot":"","sources":["../../src/client/unconstrained_execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAiB,MAAM,uBAAuB,CAAC;AACrH,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAMnD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,gBAAgB,EAC1B,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,EAAE,EAAE,EACV,GAAG,yCAA+D,GACjE,OAAO,CAAC,UAAU,CAAC,CAmBrB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { decodeFromAbi } from '@aztec/foundation/abi';
|
|
2
2
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { witnessMapToFields } from '../acvm/deserialize.js';
|
|
4
4
|
import { Oracle, acvm, extractCallStack, toACVMWitness } from '../acvm/index.js';
|
|
@@ -18,7 +18,7 @@ export async function executeUnconstrainedFunction(oracle, artifact, contractAdd
|
|
|
18
18
|
}, extractCallStack(err, artifact.debug), { cause: err });
|
|
19
19
|
});
|
|
20
20
|
const returnWitness = witnessMapToFields(acirExecutionResult.returnWitness);
|
|
21
|
-
return
|
|
21
|
+
return decodeFromAbi(artifact.returnTypes, returnWitness);
|
|
22
22
|
}
|
|
23
23
|
// docs:end:execute_unconstrained_function
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5jb25zdHJhaW5lZF9leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L3VuY29uc3RyYWluZWRfZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHckgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3JELDRDQUE0QztBQUM1Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsNEJBQTRCLENBQ2hELE1BQXNCLEVBQ3RCLFFBQTBCLEVBQzFCLGVBQTZCLEVBQzdCLGdCQUFrQyxFQUNsQyxJQUFVLEVBQ1YsR0FBRyxHQUFHLGlCQUFpQixDQUFDLHlDQUF5QyxDQUFDO0lBRWxFLEdBQUcsQ0FBQyxPQUFPLENBQUMsb0NBQW9DLGVBQWUsSUFBSSxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUV6RyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQy9CLE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBVSxFQUFFLEVBQUU7UUFDcEcsTUFBTSxJQUFJLGNBQWMsQ0FDdEIsR0FBRyxDQUFDLE9BQU8sRUFDWDtZQUNFLGVBQWU7WUFDZixnQkFBZ0I7U0FDakIsRUFDRCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUNyQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FDZixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1RSxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFDRCwwQ0FBMEMifQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { NestedProcessReturnValues, type PublicExecutionRequest, PublicKernelPhase, type PublicProvingRequest, type SimulationError, type Tx, UnencryptedFunctionL2Logs } from '@aztec/circuit-types';
|
|
2
|
+
import { Fr, Gas, type GlobalVariables, type Header, type PublicCallRequest, type PublicKernelCircuitPublicInputs, VMCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
|
+
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
4
|
+
import { type PublicExecutor } from './executor.js';
|
|
5
|
+
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
6
|
+
export type EnqueuedCallResult = {
|
|
7
|
+
/** Inputs to be used for proving */
|
|
8
|
+
provingRequests: PublicProvingRequest[];
|
|
9
|
+
/** The public kernel output at the end of the enqueued call */
|
|
10
|
+
kernelOutput: VMCircuitPublicInputs;
|
|
11
|
+
/** Unencrypted logs generated during the execution of this enqueued call */
|
|
12
|
+
newUnencryptedLogs: UnencryptedFunctionL2Logs;
|
|
13
|
+
/** Return values of simulating complete callstack */
|
|
14
|
+
returnValues: NestedProcessReturnValues;
|
|
15
|
+
/** Gas used during the execution this enqueued call */
|
|
16
|
+
gasUsed: Gas;
|
|
17
|
+
/** Revert reason, if any */
|
|
18
|
+
revertReason?: SimulationError;
|
|
19
|
+
};
|
|
20
|
+
export declare class EnqueuedCallSimulator {
|
|
21
|
+
private db;
|
|
22
|
+
private publicExecutor;
|
|
23
|
+
private publicKernelSimulator;
|
|
24
|
+
private globalVariables;
|
|
25
|
+
private historicalHeader;
|
|
26
|
+
private log;
|
|
27
|
+
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernelSimulator: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header);
|
|
28
|
+
simulate(callRequest: PublicCallRequest, executionRequest: PublicExecutionRequest, tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs, availableGas: Gas, transactionFee: Fr, phase: PublicKernelPhase): Promise<EnqueuedCallResult>;
|
|
29
|
+
private combineNestedExecutionResults;
|
|
30
|
+
/** Returns all pending private and public nullifiers. */
|
|
31
|
+
private getSiloedPendingNullifiers;
|
|
32
|
+
private runKernelCircuit;
|
|
33
|
+
/**
|
|
34
|
+
* Calculates the PublicCircuitOutput for this execution result along with its proof,
|
|
35
|
+
* and assembles a PublicCallData object from it.
|
|
36
|
+
* @param result - The execution result.
|
|
37
|
+
* @returns A corresponding PublicCallData object.
|
|
38
|
+
*/
|
|
39
|
+
private getPublicCallData;
|
|
40
|
+
private getPublicCallStackItem;
|
|
41
|
+
private getBytecodeHash;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=enqueued_call_simulator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enqueued_call_simulator.d.ts","sourceRoot":"","sources":["../../src/public/enqueued_call_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,yBAAyB,EAEzB,KAAK,sBAAsB,EAC3B,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,EAAE,EACP,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAIL,EAAE,EAEF,GAAG,EACH,KAAK,eAAe,EACpB,KAAK,MAAM,EAqBX,KAAK,iBAAiB,EAItB,KAAK,+BAA+B,EAQpC,qBAAqB,EAGtB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI/D,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAmBzF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oCAAoC;IACpC,eAAe,EAAE,oBAAoB,EAAE,CAAC;IACxC,+DAA+D;IAC/D,YAAY,EAAE,qBAAqB,CAAC;IACpC,4EAA4E;IAC5E,kBAAkB,EAAE,yBAAyB,CAAC;IAC9C,qDAAqD;IACrD,YAAY,EAAE,yBAAyB,CAAC;IACxC,uDAAuD;IACvD,OAAO,EAAE,GAAG,CAAC;IACb,4BAA4B;IAC5B,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,CAAC;AAEF,qBAAa,qBAAqB;IAG9B,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;IAN1B,OAAO,CAAC,GAAG,CAAc;gBAEf,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,4BAA4B,EACnD,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM;IAK5B,QAAQ,CACZ,WAAW,EAAE,iBAAiB,EAC9B,gBAAgB,EAAE,sBAAsB,EACxC,EAAE,EAAE,EAAE,EACN,0BAA0B,EAAE,+BAA+B,EAC3D,YAAY,EAAE,GAAG,EACjB,cAAc,EAAE,EAAE,EAClB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,kBAAkB,CAAC;YAyChB,6BAA6B;IAuE3C,yDAAyD;IACzD,OAAO,CAAC,0BAA0B;YAIpB,gBAAgB;IAY9B;;;;;OAKG;YACW,iBAAiB;YAMjB,sBAAsB;IAkEpC,OAAO,CAAC,eAAe;CAMxB"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { AVM_REQUEST, MerkleTreeId, NestedProcessReturnValues, ProvingRequestType, PublicKernelPhase, UnencryptedFunctionL2Logs, } from '@aztec/circuit-types';
|
|
2
|
+
import { AztecAddress, ContractStorageRead, ContractStorageUpdateRequest, Fr, FunctionData, Gas, L2ToL1Message, LogHash, MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NOTE_HASHES_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL, NESTED_RECURSIVE_PROOF_LENGTH, NoteHash, Nullifier, PublicAccumulatedData, PublicAccumulatedDataArrayLengths, PublicCallData, PublicCallStackItem, PublicCircuitPublicInputs, PublicInnerCallRequest, PublicKernelInnerCircuitPrivateInputs, PublicKernelInnerData, PublicValidationRequestArrayLengths, PublicValidationRequests, ReadRequest, RevertCode, TreeLeafReadRequest, VMCircuitPublicInputs, makeEmptyProof, makeEmptyRecursiveProof, } from '@aztec/circuits.js';
|
|
3
|
+
import { computeVarArgsHash } from '@aztec/circuits.js/hash';
|
|
4
|
+
import { makeTuple } from '@aztec/foundation/array';
|
|
5
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
6
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
7
|
+
import { ProtocolCircuitVks } from '@aztec/noir-protocol-circuits-types';
|
|
8
|
+
import { accumulateReturnValues } from '../common/index.js';
|
|
9
|
+
import { collectExecutionResults } from './execution.js';
|
|
10
|
+
function makeAvmProvingRequest(inputs, result) {
|
|
11
|
+
return {
|
|
12
|
+
type: AVM_REQUEST,
|
|
13
|
+
functionName: result.functionName,
|
|
14
|
+
calldata: result.calldata,
|
|
15
|
+
bytecode: result.bytecode,
|
|
16
|
+
avmHints: result.avmCircuitHints,
|
|
17
|
+
kernelRequest: {
|
|
18
|
+
type: ProvingRequestType.PUBLIC_KERNEL_INNER,
|
|
19
|
+
inputs,
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export class EnqueuedCallSimulator {
|
|
24
|
+
constructor(db, publicExecutor, publicKernelSimulator, globalVariables, historicalHeader) {
|
|
25
|
+
this.db = db;
|
|
26
|
+
this.publicExecutor = publicExecutor;
|
|
27
|
+
this.publicKernelSimulator = publicKernelSimulator;
|
|
28
|
+
this.globalVariables = globalVariables;
|
|
29
|
+
this.historicalHeader = historicalHeader;
|
|
30
|
+
this.log = createDebugLogger(`aztec:sequencer`);
|
|
31
|
+
}
|
|
32
|
+
async simulate(callRequest, executionRequest, tx, previousPublicKernelOutput, availableGas, transactionFee, phase) {
|
|
33
|
+
const pendingNullifiers = this.getSiloedPendingNullifiers(previousPublicKernelOutput);
|
|
34
|
+
const startSideEffectCounter = previousPublicKernelOutput.endSideEffectCounter + 1;
|
|
35
|
+
const result = await this.publicExecutor.simulate(executionRequest, this.globalVariables, availableGas, tx.data.constants.txContext, pendingNullifiers, transactionFee, startSideEffectCounter);
|
|
36
|
+
const callStack = makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, PublicInnerCallRequest.empty);
|
|
37
|
+
callStack[0].item.contractAddress = callRequest.contractAddress;
|
|
38
|
+
callStack[0].item.callContext = callRequest.callContext;
|
|
39
|
+
callStack[0].item.argsHash = callRequest.argsHash;
|
|
40
|
+
const prevAccumulatedData = phase === PublicKernelPhase.SETUP
|
|
41
|
+
? previousPublicKernelOutput.endNonRevertibleData
|
|
42
|
+
: previousPublicKernelOutput.end;
|
|
43
|
+
const accumulatedData = PublicAccumulatedData.empty();
|
|
44
|
+
accumulatedData.publicCallStack[0] = callRequest;
|
|
45
|
+
const startVMCircuitOutput = new VMCircuitPublicInputs(previousPublicKernelOutput.constants, callRequest, callStack, PublicValidationRequestArrayLengths.new(previousPublicKernelOutput.validationRequests), PublicValidationRequests.empty(), PublicAccumulatedDataArrayLengths.new(prevAccumulatedData), accumulatedData, startSideEffectCounter, startSideEffectCounter, availableGas, result.transactionFee, result.reverted);
|
|
46
|
+
return await this.combineNestedExecutionResults(result, startVMCircuitOutput);
|
|
47
|
+
}
|
|
48
|
+
async combineNestedExecutionResults(topResult, startVMCircuitOutput) {
|
|
49
|
+
const executionResults = collectExecutionResults(topResult);
|
|
50
|
+
const provingRequests = [];
|
|
51
|
+
let gasUsed = Gas.empty();
|
|
52
|
+
let revertReason;
|
|
53
|
+
let kernelOutput = startVMCircuitOutput;
|
|
54
|
+
for (const result of executionResults) {
|
|
55
|
+
// Accumulate gas used in this enqueued call.
|
|
56
|
+
gasUsed = gasUsed.add(Gas.from(result.startGasLeft).sub(Gas.from(result.endGasLeft)));
|
|
57
|
+
// Sanity check for a current upstream assumption.
|
|
58
|
+
// Consumers of the result seem to expect "reverted <=> revertReason !== undefined".
|
|
59
|
+
const functionSelector = result.executionRequest.callContext.functionSelector.toString();
|
|
60
|
+
if (result.reverted && !result.revertReason) {
|
|
61
|
+
throw new Error(`Simulation of ${result.executionRequest.contractAddress.toString()}:${functionSelector}(${result.functionName}) reverted with no reason.`);
|
|
62
|
+
}
|
|
63
|
+
// Simulate the public kernel circuit.
|
|
64
|
+
this.log.debug(`Running public kernel inner circuit for ${result.executionRequest.contractAddress.toString()}:${functionSelector}(${result.functionName})`);
|
|
65
|
+
const callData = await this.getPublicCallData(result);
|
|
66
|
+
const { inputs, output } = await this.runKernelCircuit(kernelOutput, callData);
|
|
67
|
+
kernelOutput = output;
|
|
68
|
+
// Capture the inputs for later proving in the AVM and kernel.
|
|
69
|
+
provingRequests.push(makeAvmProvingRequest(inputs, result));
|
|
70
|
+
// Safely return the revert reason and the kernel output (which has had its revertible side effects dropped)
|
|
71
|
+
// TODO(@leila) we shouldn't drop everything when it reverts. The tail kernel needs the data to prove that it's reverted for the correct reason.
|
|
72
|
+
if (result.reverted) {
|
|
73
|
+
this.log.debug(`Reverting on ${result.executionRequest.contractAddress.toString()}:${functionSelector}(${result.functionName}) with reason: ${result.revertReason}`);
|
|
74
|
+
// TODO(@spalladino): Check gasUsed is correct. The AVM should take care of setting gasLeft to zero upon a revert.
|
|
75
|
+
return {
|
|
76
|
+
provingRequests,
|
|
77
|
+
kernelOutput,
|
|
78
|
+
newUnencryptedLogs: UnencryptedFunctionL2Logs.empty(),
|
|
79
|
+
returnValues: NestedProcessReturnValues.empty(),
|
|
80
|
+
gasUsed,
|
|
81
|
+
revertReason: result.revertReason,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
provingRequests,
|
|
87
|
+
kernelOutput,
|
|
88
|
+
newUnencryptedLogs: topResult.allUnencryptedLogs,
|
|
89
|
+
returnValues: accumulateReturnValues(topResult),
|
|
90
|
+
gasUsed,
|
|
91
|
+
revertReason,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/** Returns all pending private and public nullifiers. */
|
|
95
|
+
getSiloedPendingNullifiers(ko) {
|
|
96
|
+
return [...ko.end.nullifiers, ...ko.endNonRevertibleData.nullifiers].filter(n => !n.isEmpty());
|
|
97
|
+
}
|
|
98
|
+
async runKernelCircuit(previousOutput, callData) {
|
|
99
|
+
// The proof is not used in simulation
|
|
100
|
+
const proof = makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH);
|
|
101
|
+
const vk = ProtocolCircuitVks.PublicKernelInnerArtifact;
|
|
102
|
+
const previousKernel = new PublicKernelInnerData(previousOutput, proof, vk);
|
|
103
|
+
const inputs = new PublicKernelInnerCircuitPrivateInputs(previousKernel, callData);
|
|
104
|
+
return { inputs, output: await this.publicKernelSimulator.publicKernelCircuitInner(inputs) };
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Calculates the PublicCircuitOutput for this execution result along with its proof,
|
|
108
|
+
* and assembles a PublicCallData object from it.
|
|
109
|
+
* @param result - The execution result.
|
|
110
|
+
* @returns A corresponding PublicCallData object.
|
|
111
|
+
*/
|
|
112
|
+
async getPublicCallData(result) {
|
|
113
|
+
const bytecodeHash = await this.getBytecodeHash(result);
|
|
114
|
+
const callStackItem = await this.getPublicCallStackItem(result);
|
|
115
|
+
return new PublicCallData(callStackItem, makeEmptyProof(), bytecodeHash);
|
|
116
|
+
}
|
|
117
|
+
async getPublicCallStackItem(result) {
|
|
118
|
+
const publicDataTreeInfo = await this.db.getTreeInfo(MerkleTreeId.PUBLIC_DATA_TREE);
|
|
119
|
+
this.historicalHeader.state.partial.publicDataTree.root = Fr.fromBuffer(publicDataTreeInfo.root);
|
|
120
|
+
const publicCircuitPublicInputs = PublicCircuitPublicInputs.from({
|
|
121
|
+
callContext: result.executionRequest.callContext,
|
|
122
|
+
proverAddress: AztecAddress.ZERO,
|
|
123
|
+
argsHash: computeVarArgsHash(result.executionRequest.args),
|
|
124
|
+
noteHashes: padArrayEnd(result.noteHashes, NoteHash.empty(), MAX_NOTE_HASHES_PER_CALL),
|
|
125
|
+
nullifiers: padArrayEnd(result.nullifiers, Nullifier.empty(), MAX_NULLIFIERS_PER_CALL),
|
|
126
|
+
l2ToL1Msgs: padArrayEnd(result.l2ToL1Messages, L2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_CALL),
|
|
127
|
+
startSideEffectCounter: result.startSideEffectCounter,
|
|
128
|
+
endSideEffectCounter: result.endSideEffectCounter,
|
|
129
|
+
returnsHash: computeVarArgsHash(result.returnValues),
|
|
130
|
+
noteHashReadRequests: padArrayEnd(result.noteHashReadRequests, TreeLeafReadRequest.empty(), MAX_NOTE_HASH_READ_REQUESTS_PER_CALL),
|
|
131
|
+
nullifierReadRequests: padArrayEnd(result.nullifierReadRequests, ReadRequest.empty(), MAX_NULLIFIER_READ_REQUESTS_PER_CALL),
|
|
132
|
+
nullifierNonExistentReadRequests: padArrayEnd(result.nullifierNonExistentReadRequests, ReadRequest.empty(), MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL),
|
|
133
|
+
l1ToL2MsgReadRequests: padArrayEnd(result.l1ToL2MsgReadRequests, TreeLeafReadRequest.empty(), MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL),
|
|
134
|
+
contractStorageReads: padArrayEnd(result.contractStorageReads, ContractStorageRead.empty(), MAX_PUBLIC_DATA_READS_PER_CALL),
|
|
135
|
+
contractStorageUpdateRequests: padArrayEnd(result.contractStorageUpdateRequests, ContractStorageUpdateRequest.empty(), MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL),
|
|
136
|
+
publicCallRequests: padArrayEnd(result.publicCallRequests, PublicInnerCallRequest.empty(), MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL),
|
|
137
|
+
unencryptedLogsHashes: padArrayEnd(result.unencryptedLogsHashes, LogHash.empty(), MAX_UNENCRYPTED_LOGS_PER_CALL),
|
|
138
|
+
historicalHeader: this.historicalHeader,
|
|
139
|
+
globalVariables: this.globalVariables,
|
|
140
|
+
startGasLeft: Gas.from(result.startGasLeft),
|
|
141
|
+
endGasLeft: Gas.from(result.endGasLeft),
|
|
142
|
+
transactionFee: result.transactionFee,
|
|
143
|
+
// TODO(@just-mitch): need better mapping from simulator to revert code.
|
|
144
|
+
revertCode: result.reverted ? RevertCode.APP_LOGIC_REVERTED : RevertCode.OK,
|
|
145
|
+
});
|
|
146
|
+
return new PublicCallStackItem(result.executionRequest.contractAddress, new FunctionData(result.executionRequest.callContext.functionSelector, false), publicCircuitPublicInputs);
|
|
147
|
+
}
|
|
148
|
+
getBytecodeHash(_result) {
|
|
149
|
+
// TODO: Determine how to calculate bytecode hash. Circuits just check it isn't zero for now.
|
|
150
|
+
// See https://github.com/AztecProtocol/aztec3-packages/issues/378
|
|
151
|
+
const bytecodeHash = new Fr(1n);
|
|
152
|
+
return Promise.resolve(bytecodeHash);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5xdWV1ZWRfY2FsbF9zaW11bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2VucXVldWVkX2NhbGxfc2ltdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBRVgsWUFBWSxFQUNaLHlCQUF5QixFQUN6QixrQkFBa0IsRUFFbEIsaUJBQWlCLEVBSWpCLHlCQUF5QixHQUMxQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLDRCQUE0QixFQUM1QixFQUFFLEVBQ0YsWUFBWSxFQUNaLEdBQUcsRUFHSCxhQUFhLEVBQ2IsT0FBTyxFQUNQLHVDQUF1QyxFQUN2QywwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLG9DQUFvQyxFQUNwQyx1QkFBdUIsRUFDdkIsaURBQWlELEVBQ2pELG9DQUFvQyxFQUNwQyxxQ0FBcUMsRUFDckMsbUNBQW1DLEVBQ25DLDhCQUE4QixFQUM5Qix3Q0FBd0MsRUFDeEMsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3QixRQUFRLEVBQ1IsU0FBUyxFQUNULHFCQUFxQixFQUNyQixpQ0FBaUMsRUFDakMsY0FBYyxFQUVkLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsc0JBQXNCLEVBRXRCLHFDQUFxQyxFQUNyQyxxQkFBcUIsRUFDckIsbUNBQW1DLEVBQ25DLHdCQUF3QixFQUN4QixXQUFXLEVBQ1gsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsY0FBYyxFQUNkLHVCQUF1QixHQUN4QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFv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
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type MerkleTreeOperations, type NestedProcessReturnValues, type ProcessedTx, type PublicExecutionRequest, PublicKernelPhase, type PublicProvingRequest, type SimulationError, type Tx } from '@aztec/circuit-types';
|
|
2
|
+
import { type GlobalVariables, type Header, type KernelCircuitPublicInputs, type PublicCallRequest } from '@aztec/circuits.js';
|
|
3
|
+
import { EnqueuedCallSimulator } from './enqueued_call_simulator.js';
|
|
4
|
+
import { type PublicExecutor } from './executor.js';
|
|
5
|
+
import { type WorldStateDB } from './public_db_sources.js';
|
|
6
|
+
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
7
|
+
import { PublicKernelTailSimulator } from './public_kernel_tail_simulator.js';
|
|
8
|
+
export type ProcessedPhase = {
|
|
9
|
+
phase: PublicKernelPhase;
|
|
10
|
+
durationMs: number;
|
|
11
|
+
revertReason?: SimulationError;
|
|
12
|
+
};
|
|
13
|
+
export type TxPublicCallsResult = {
|
|
14
|
+
/** The collection of public proving requests */
|
|
15
|
+
provingRequests: PublicProvingRequest[];
|
|
16
|
+
/** The output of the public kernel tail circuit simulation for this tx */
|
|
17
|
+
tailKernelOutput: KernelCircuitPublicInputs;
|
|
18
|
+
/** Return values of simulating complete callstack */
|
|
19
|
+
returnValues: NestedProcessReturnValues[];
|
|
20
|
+
/** Gas used during the execution this tx */
|
|
21
|
+
gasUsed: ProcessedTx['gasUsed'];
|
|
22
|
+
/** Revert reason, if any */
|
|
23
|
+
revertReason?: SimulationError;
|
|
24
|
+
processedPhases: ProcessedPhase[];
|
|
25
|
+
};
|
|
26
|
+
export declare class EnqueuedCallsProcessor {
|
|
27
|
+
private publicKernelSimulator;
|
|
28
|
+
private globalVariables;
|
|
29
|
+
private worldStateDB;
|
|
30
|
+
private enqueuedCallSimulator;
|
|
31
|
+
private publicKernelTailSimulator;
|
|
32
|
+
private log;
|
|
33
|
+
constructor(publicKernelSimulator: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, worldStateDB: WorldStateDB, enqueuedCallSimulator: EnqueuedCallSimulator, publicKernelTailSimulator: PublicKernelTailSimulator);
|
|
34
|
+
static create(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernelSimulator: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, worldStateDB: WorldStateDB): EnqueuedCallsProcessor;
|
|
35
|
+
static getExecutionRequestsByPhase(tx: Tx, phase: PublicKernelPhase): PublicExecutionRequest[];
|
|
36
|
+
static getCallRequestsByPhase(tx: Tx, phase: PublicKernelPhase): PublicCallRequest[];
|
|
37
|
+
process(tx: Tx): Promise<TxPublicCallsResult>;
|
|
38
|
+
private processPhase;
|
|
39
|
+
private getAvailableGas;
|
|
40
|
+
private getTransactionFee;
|
|
41
|
+
private runMergeKernelCircuit;
|
|
42
|
+
private getPreviousKernelData;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=enqueued_calls_processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enqueued_calls_processor.d.ts","sourceRoot":"","sources":["../../src/public/enqueued_calls_processor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,WAAW,EAEhB,KAAK,sBAAsB,EAE3B,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,EAAE,EACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,yBAAyB,EAE9B,KAAK,iBAAiB,EAOvB,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAuB9E,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,gDAAgD;IAChD,eAAe,EAAE,oBAAoB,EAAE,CAAC;IACxC,0EAA0E;IAC1E,gBAAgB,EAAE,yBAAyB,CAAC;IAC5C,qDAAqD;IACrD,YAAY,EAAE,yBAAyB,EAAE,CAAC;IAC1C,4CAA4C;IAC5C,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,4BAA4B;IAC5B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC,CAAC;AAEF,qBAAa,sBAAsB;IAI/B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,yBAAyB;IAPnC,OAAO,CAAC,GAAG,CAAc;gBAGf,qBAAqB,EAAE,4BAA4B,EACnD,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,qBAAqB,EAC5C,yBAAyB,EAAE,yBAAyB;IAK9D,MAAM,CAAC,MAAM,CACX,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,4BAA4B,EACnD,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,YAAY;IAqB5B,MAAM,CAAC,2BAA2B,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,GAAG,sBAAsB,EAAE;IAe9F,MAAM,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,EAAE;IAe9E,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAyErC,YAAY;IA0F1B,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,iBAAiB;YAoBX,qBAAqB;IAuBnC,OAAO,CAAC,qBAAqB;CAe9B"}
|