@aztec/simulator 0.32.1 → 0.34.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/README.md +5 -3
- package/dest/acvm/acvm.js +2 -2
- package/dest/acvm/oracle/index.d.ts +0 -1
- package/dest/acvm/oracle/index.d.ts.map +1 -1
- package/dest/acvm/oracle/index.js +1 -2
- package/dest/acvm/oracle/oracle.d.ts +1 -1
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +4 -5
- package/dest/avm/avm_context.d.ts +4 -14
- package/dest/avm/avm_context.d.ts.map +1 -1
- package/dest/avm/avm_context.js +10 -22
- package/dest/avm/avm_execution_environment.d.ts +4 -3
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +8 -7
- package/dest/avm/avm_gas.d.ts +71 -0
- package/dest/avm/avm_gas.d.ts.map +1 -0
- package/dest/avm/avm_gas.js +161 -0
- package/dest/avm/avm_machine_state.d.ts +4 -2
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +8 -2
- package/dest/avm/avm_memory_types.d.ts +53 -1
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_memory_types.js +99 -6
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +15 -13
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +3 -3
- package/dest/avm/journal/journal.d.ts +14 -13
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +5 -5
- package/dest/avm/journal/trace.d.ts +8 -19
- package/dest/avm/journal/trace.d.ts.map +1 -1
- package/dest/avm/journal/trace.js +48 -116
- package/dest/avm/journal/trace_types.d.ts +23 -4
- package/dest/avm/journal/trace_types.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +45 -17
- package/dest/avm/opcodes/addressing_mode.d.ts +5 -3
- package/dest/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/avm/opcodes/addressing_mode.js +5 -1
- package/dest/avm/opcodes/arithmetic.d.ts +7 -3
- package/dest/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/avm/opcodes/arithmetic.js +27 -16
- package/dest/avm/opcodes/bitwise.d.ts +21 -20
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/avm/opcodes/bitwise.js +43 -65
- package/dest/avm/opcodes/comparators.d.ts +12 -9
- package/dest/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/avm/opcodes/comparators.js +22 -32
- package/dest/avm/opcodes/context_getters.d.ts +20 -0
- package/dest/avm/opcodes/context_getters.d.ts.map +1 -0
- package/dest/avm/opcodes/context_getters.js +26 -0
- package/dest/avm/opcodes/contract.d.ts +14 -0
- package/dest/avm/opcodes/contract.d.ts.map +1 -0
- package/dest/avm/opcodes/contract.js +49 -0
- package/dest/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/avm/opcodes/control_flow.js +12 -2
- package/dest/avm/opcodes/environment_getters.d.ts +30 -33
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +34 -43
- package/dest/avm/opcodes/external_calls.d.ts +13 -19
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +69 -72
- package/dest/avm/opcodes/hashing.d.ts +2 -1
- package/dest/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/avm/opcodes/hashing.js +37 -18
- package/dest/avm/opcodes/index.d.ts +1 -0
- package/dest/avm/opcodes/index.d.ts.map +1 -1
- package/dest/avm/opcodes/index.js +2 -1
- package/dest/avm/opcodes/instruction.d.ts +10 -15
- package/dest/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction.js +12 -22
- package/dest/avm/opcodes/instruction_impl.d.ts +14 -0
- package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction_impl.js +37 -16
- package/dest/avm/opcodes/memory.d.ts +4 -3
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +38 -19
- package/dest/avm/opcodes/storage.d.ts +5 -0
- package/dest/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/avm/opcodes/storage.js +21 -7
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +7 -5
- package/dest/avm/serialization/instruction_serialization.d.ts +12 -11
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +13 -12
- package/dest/client/client_execution_context.d.ts +2 -2
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +6 -6
- package/dest/client/private_execution.d.ts +1 -1
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +8 -4
- package/dest/client/unconstrained_execution.d.ts +1 -1
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +2 -2
- package/dest/client/view_data_oracle.d.ts +2 -2
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +2 -2
- package/dest/public/executor.d.ts +2 -8
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +101 -69
- package/dest/public/index.d.ts +1 -1
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/public_execution_context.d.ts +6 -6
- package/dest/public/public_execution_context.d.ts.map +1 -1
- package/dest/public/public_execution_context.js +8 -12
- package/dest/public/transitional_adaptors.d.ts +32 -0
- package/dest/public/transitional_adaptors.d.ts.map +1 -0
- package/dest/public/transitional_adaptors.js +161 -0
- package/package.json +15 -9
- package/src/acvm/acvm.ts +1 -1
- package/src/acvm/oracle/index.ts +0 -1
- package/src/acvm/oracle/oracle.ts +3 -4
- package/src/avm/avm_context.ts +11 -33
- package/src/avm/avm_execution_environment.ts +9 -17
- package/src/avm/{avm_gas_cost.ts → avm_gas.ts} +75 -21
- package/src/avm/avm_machine_state.ts +9 -2
- package/src/avm/avm_memory_types.ts +134 -6
- package/src/avm/avm_simulator.ts +14 -12
- package/src/avm/fixtures/index.ts +2 -1
- package/src/avm/journal/journal.ts +24 -17
- package/src/avm/journal/trace.ts +59 -121
- package/src/avm/journal/trace_types.ts +39 -39
- package/src/avm/opcodes/accrued_substate.ts +58 -23
- package/src/avm/opcodes/addressing_mode.ts +8 -3
- package/src/avm/opcodes/arithmetic.ts +32 -22
- package/src/avm/opcodes/bitwise.ts +49 -83
- package/src/avm/opcodes/comparators.ts +28 -43
- package/src/avm/opcodes/context_getters.ts +32 -0
- package/src/avm/opcodes/contract.ts +58 -0
- package/src/avm/opcodes/control_flow.ts +23 -5
- package/src/avm/opcodes/environment_getters.ts +35 -44
- package/src/avm/opcodes/external_calls.ts +90 -89
- package/src/avm/opcodes/hashing.ts +45 -22
- package/src/avm/opcodes/index.ts +1 -0
- package/src/avm/opcodes/instruction.ts +14 -26
- package/src/avm/opcodes/instruction_impl.ts +45 -15
- package/src/avm/opcodes/memory.ts +48 -28
- package/src/avm/opcodes/storage.ts +26 -12
- package/src/avm/serialization/bytecode_serialization.ts +6 -3
- package/src/avm/serialization/instruction_serialization.ts +1 -0
- package/src/client/client_execution_context.ts +5 -5
- package/src/client/private_execution.ts +10 -4
- package/src/client/unconstrained_execution.ts +1 -1
- package/src/client/view_data_oracle.ts +1 -1
- package/src/public/executor.ts +123 -75
- package/src/public/index.ts +2 -2
- package/src/public/public_execution_context.ts +14 -19
- package/src/public/transitional_adaptors.ts +240 -0
- package/dest/acvm/oracle/debug.d.ts +0 -19
- package/dest/acvm/oracle/debug.d.ts.map +0 -1
- package/dest/acvm/oracle/debug.js +0 -95
- package/dest/avm/avm_gas_cost.d.ts +0 -322
- package/dest/avm/avm_gas_cost.d.ts.map +0 -1
- package/dest/avm/avm_gas_cost.js +0 -118
- package/dest/avm/temporary_executor_migration.d.ts +0 -25
- package/dest/avm/temporary_executor_migration.d.ts.map +0 -1
- package/dest/avm/temporary_executor_migration.js +0 -83
- package/src/acvm/oracle/debug.ts +0 -109
- package/src/avm/temporary_executor_migration.ts +0 -122
|
@@ -34,39 +34,41 @@ export class AvmSimulator {
|
|
|
34
34
|
*/
|
|
35
35
|
async executeInstructions(instructions) {
|
|
36
36
|
assert(instructions.length > 0);
|
|
37
|
+
const { machineState } = this.context;
|
|
37
38
|
try {
|
|
38
39
|
// Execute instruction pointed to by the current program counter
|
|
39
40
|
// continuing until the machine state signifies a halt
|
|
40
|
-
while (!
|
|
41
|
-
const instruction = instructions[
|
|
41
|
+
while (!machineState.halted) {
|
|
42
|
+
const instruction = instructions[machineState.pc];
|
|
42
43
|
assert(!!instruction, 'AVM attempted to execute non-existent instruction. This should never happen (invalid bytecode or AVM simulator bug)!');
|
|
43
|
-
|
|
44
|
+
const gasLeft = `l1=${machineState.l1GasLeft} l2=${machineState.l2GasLeft} da=${machineState.daGasLeft}`;
|
|
45
|
+
this.log.debug(`@${machineState.pc} (${gasLeft}) ${instruction.toString()}`);
|
|
44
46
|
// Execute the instruction.
|
|
45
47
|
// Normal returns and reverts will return normally here.
|
|
46
48
|
// "Exceptional halts" will throw.
|
|
47
|
-
await instruction.
|
|
48
|
-
if (
|
|
49
|
-
this.log('Passed end of program
|
|
50
|
-
throw new InvalidProgramCounterError(
|
|
49
|
+
await instruction.execute(this.context);
|
|
50
|
+
if (machineState.pc >= instructions.length) {
|
|
51
|
+
this.log.warn('Passed end of program');
|
|
52
|
+
throw new InvalidProgramCounterError(machineState.pc, /*max=*/ instructions.length);
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
55
|
// Return results for processing by calling context
|
|
54
|
-
const results =
|
|
55
|
-
this.log(`Context execution results: ${results.toString()}`);
|
|
56
|
+
const results = machineState.getResults();
|
|
57
|
+
this.log.debug(`Context execution results: ${results.toString()}`);
|
|
56
58
|
return results;
|
|
57
59
|
}
|
|
58
60
|
catch (e) {
|
|
59
|
-
this.log('Exceptional halt');
|
|
61
|
+
this.log.verbose('Exceptional halt');
|
|
60
62
|
if (!(e instanceof AvmExecutionError)) {
|
|
61
|
-
this.log(`Unknown error thrown by avm: ${e}`);
|
|
63
|
+
this.log.verbose(`Unknown error thrown by avm: ${e}`);
|
|
62
64
|
throw e;
|
|
63
65
|
}
|
|
64
66
|
// Return results for processing by calling context
|
|
65
67
|
// Note: "exceptional halts" cannot return data
|
|
66
68
|
const results = new AvmContractCallResults(/*reverted=*/ true, /*output=*/ [], /*revertReason=*/ e);
|
|
67
|
-
this.log(`Context execution results: ${results.toString()}`);
|
|
69
|
+
this.log.debug(`Context execution results: ${results.toString()}`);
|
|
68
70
|
return results;
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLDBCQUEwQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRS9FLE1BQU0sT0FBTyxZQUFZO0lBR3ZCLFlBQW9CLE9BQW1CO1FBQW5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDckMsSUFBSSxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FDMUIsOEJBQThCLE9BQU8sQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FDMUYsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDO1FBQ3BFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FDdEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUNoQyxRQUFRLENBQ1QsQ0FBQztRQUVGLGtGQUFrRjtRQUNsRiw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/avm/fixtures/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/avm/fixtures/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAU,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AASvF,OAAO,EACL,KAAK,aAAa,EAClB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAoB,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE;IACtC,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAC9C,GAAG,CAAC,EAAE,uBAAuB,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,GAAG,UAAU,CAMb;AAED,qDAAqD;AACrD,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE;IAC1C,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,WAAW,CAMd;AAED,0DAA0D;AAC1D,wBAAgB,+BAA+B,IAAI,0BAA0B,CAE5E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,CAkB9G;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CASzF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAMtF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,GAAG,CAEhE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,CAAC,EAAE,MAAM,GACjB,uBAAuB,CAAC,OAAO,wBAAwB,CAAC,CAK1D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,mBAAmB,UAMlC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SiblingPath } from '@aztec/circuit-types';
|
|
2
|
-
import { GlobalVariables, L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/circuits.js';
|
|
2
|
+
import { GlobalVariables, Header, L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/circuits.js';
|
|
3
3
|
import { FunctionSelector } from '@aztec/foundation/abi';
|
|
4
4
|
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
5
5
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
@@ -30,7 +30,7 @@ export function initMockPersistableStateManager() {
|
|
|
30
30
|
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
31
31
|
*/
|
|
32
32
|
export function initExecutionEnvironment(overrides) {
|
|
33
|
-
return new AvmExecutionEnvironment(overrides?.address ?? AztecAddress.zero(), overrides?.storageAddress ?? AztecAddress.zero(), overrides?.origin ?? AztecAddress.zero(), overrides?.sender ?? AztecAddress.zero(), overrides?.portal ?? EthAddress.ZERO, overrides?.feePerL1Gas ?? Fr.zero(), overrides?.feePerL2Gas ?? Fr.zero(), overrides?.feePerDaGas ?? Fr.zero(), overrides?.contractCallDepth ?? Fr.zero(), overrides?.globals ?? GlobalVariables.empty(), overrides?.isStaticCall ?? false, overrides?.isDelegateCall ?? false, overrides?.calldata ?? [], overrides?.temporaryFunctionSelector ?? FunctionSelector.empty());
|
|
33
|
+
return new AvmExecutionEnvironment(overrides?.address ?? AztecAddress.zero(), overrides?.storageAddress ?? AztecAddress.zero(), overrides?.origin ?? AztecAddress.zero(), overrides?.sender ?? AztecAddress.zero(), overrides?.portal ?? EthAddress.ZERO, overrides?.feePerL1Gas ?? Fr.zero(), overrides?.feePerL2Gas ?? Fr.zero(), overrides?.feePerDaGas ?? Fr.zero(), overrides?.contractCallDepth ?? Fr.zero(), overrides?.header ?? Header.empty(), overrides?.globals ?? GlobalVariables.empty(), overrides?.isStaticCall ?? false, overrides?.isDelegateCall ?? false, overrides?.calldata ?? [], overrides?.temporaryFunctionSelector ?? FunctionSelector.empty());
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
@@ -74,4 +74,4 @@ export function anyAvmContextInputs() {
|
|
|
74
74
|
}
|
|
75
75
|
return tv;
|
|
76
76
|
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL2ZpeHR1cmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFFakMsT0FBTyxFQUVMLHVCQUF1QixHQUd4QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRW5FOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxTQUkzQjtJQUNDLE9BQU8sSUFBSSxVQUFVLENBQ25CLFNBQVMsRUFBRSxnQkFBZ0IsSUFBSSwrQkFBK0IsRUFBRSxFQUNoRSxTQUFTLEVBQUUsR0FBRyxJQUFJLHdCQUF3QixFQUFFLEVBQzVDLFNB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
|
|
@@ -2,24 +2,25 @@ import { UnencryptedL2Log } from '@aztec/circuit-types';
|
|
|
2
2
|
import { EthAddress, L2ToL1Message } from '@aztec/circuits.js';
|
|
3
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { type HostStorage } from './host_storage.js';
|
|
5
|
-
import {
|
|
5
|
+
import { Nullifiers } from './nullifiers.js';
|
|
6
|
+
import { PublicStorage } from './public_storage.js';
|
|
7
|
+
import { WorldStateAccessTrace } from './trace.js';
|
|
8
|
+
import { type TracedL1toL2MessageCheck, type TracedNoteHash, type TracedNoteHashCheck, type TracedNullifier, type TracedNullifierCheck, type TracedPublicStorageRead, type TracedPublicStorageWrite } from './trace_types.js';
|
|
6
9
|
/**
|
|
7
10
|
* Data held within the journal
|
|
8
11
|
*/
|
|
9
12
|
export type JournalData = {
|
|
13
|
+
storageWrites: TracedPublicStorageWrite[];
|
|
14
|
+
storageReads: TracedPublicStorageRead[];
|
|
10
15
|
noteHashChecks: TracedNoteHashCheck[];
|
|
11
|
-
newNoteHashes:
|
|
16
|
+
newNoteHashes: TracedNoteHash[];
|
|
12
17
|
nullifierChecks: TracedNullifierCheck[];
|
|
13
|
-
newNullifiers:
|
|
18
|
+
newNullifiers: TracedNullifier[];
|
|
14
19
|
l1ToL2MessageChecks: TracedL1toL2MessageCheck[];
|
|
15
20
|
newL1Messages: L2ToL1Message[];
|
|
16
21
|
newLogs: UnencryptedL2Log[];
|
|
17
22
|
/** contract address -\> key -\> value */
|
|
18
23
|
currentStorageValue: Map<bigint, Map<bigint, Fr>>;
|
|
19
|
-
/** contract address -\> key -\> value[] (stored in order of access) */
|
|
20
|
-
storageWrites: Map<bigint, Map<bigint, Fr[]>>;
|
|
21
|
-
/** contract address -\> key -\> value[] (stored in order of access) */
|
|
22
|
-
storageReads: Map<bigint, Map<bigint, Fr[]>>;
|
|
23
24
|
};
|
|
24
25
|
/**
|
|
25
26
|
* A class to manage persistable AVM state for contract calls.
|
|
@@ -35,14 +36,14 @@ export declare class AvmPersistableStateManager {
|
|
|
35
36
|
readonly hostStorage: HostStorage;
|
|
36
37
|
/** World State */
|
|
37
38
|
/** Public storage, including cached writes */
|
|
38
|
-
|
|
39
|
+
publicStorage: PublicStorage;
|
|
39
40
|
/** Nullifier set, including cached/recently-emitted nullifiers */
|
|
40
|
-
|
|
41
|
+
nullifiers: Nullifiers;
|
|
41
42
|
/** World State Access Trace */
|
|
42
|
-
|
|
43
|
+
trace: WorldStateAccessTrace;
|
|
43
44
|
/** Accrued Substate **/
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
newL1Messages: L2ToL1Message[];
|
|
46
|
+
newLogs: UnencryptedL2Log[];
|
|
46
47
|
constructor(hostStorage: HostStorage, parent?: AvmPersistableStateManager);
|
|
47
48
|
/**
|
|
48
49
|
* Create a new state manager forked from this one
|
|
@@ -77,7 +78,7 @@ export declare class AvmPersistableStateManager {
|
|
|
77
78
|
* Write a note hash, trace the write.
|
|
78
79
|
* @param noteHash - the unsiloed note hash to write
|
|
79
80
|
*/
|
|
80
|
-
writeNoteHash(noteHash: Fr): void;
|
|
81
|
+
writeNoteHash(storageAddress: Fr, noteHash: Fr): void;
|
|
81
82
|
/**
|
|
82
83
|
* Check if a nullifier exists, trace the check.
|
|
83
84
|
* @param storageAddress - address of the contract that the nullifier is associated with
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/journal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAgB,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/journal.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,9 +51,9 @@ export class AvmPersistableStateManager {
|
|
|
51
51
|
* @returns the latest value written to slot, or 0 if never written to before
|
|
52
52
|
*/
|
|
53
53
|
async readStorage(storageAddress, slot) {
|
|
54
|
-
const [
|
|
54
|
+
const [exists, value] = await this.publicStorage.read(storageAddress, slot);
|
|
55
55
|
// We want to keep track of all performed reads (even reverted ones)
|
|
56
|
-
this.trace.tracePublicStorageRead(storageAddress, slot, value);
|
|
56
|
+
this.trace.tracePublicStorageRead(storageAddress, slot, value, exists);
|
|
57
57
|
return Promise.resolve(value);
|
|
58
58
|
}
|
|
59
59
|
// TODO(4886): We currently don't silo note hashes.
|
|
@@ -75,8 +75,8 @@ export class AvmPersistableStateManager {
|
|
|
75
75
|
* Write a note hash, trace the write.
|
|
76
76
|
* @param noteHash - the unsiloed note hash to write
|
|
77
77
|
*/
|
|
78
|
-
writeNoteHash(noteHash) {
|
|
79
|
-
this.trace.traceNewNoteHash(
|
|
78
|
+
writeNoteHash(storageAddress, noteHash) {
|
|
79
|
+
this.trace.traceNewNoteHash(storageAddress, noteHash);
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
82
|
* Check if a nullifier exists, trace the check.
|
|
@@ -175,4 +175,4 @@ export class AvmPersistableStateManager {
|
|
|
175
175
|
};
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam91cm5hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vam91cm5hbC9qb3VybmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUErQm5EOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLDBCQUEwQjtJQWtCckMsWUFBWSxXQUF3QixFQUFFLE1BQW1DO1FBSnpFLHdCQUF3QjtRQUNqQixrQkFBYSxHQUFvQixFQUFFLENBQUM7UUFDcEMsWUFBTyxHQUF1QixFQUFFLENBQUM7UUFHdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSTtRQUNULE9BQU8s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
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import { type TracedL1toL2MessageCheck, type TracedNoteHashCheck, type TracedNullifierCheck } from './trace_types.js';
|
|
2
|
+
import { type TracedL1toL2MessageCheck, type TracedNoteHash, type TracedNoteHashCheck, type TracedNullifier, type TracedNullifierCheck, type TracedPublicStorageRead, type TracedPublicStorageWrite } from './trace_types.js';
|
|
3
3
|
export declare class WorldStateAccessTrace {
|
|
4
4
|
accessCounter: number;
|
|
5
|
-
publicStorageReads:
|
|
6
|
-
publicStorageWrites:
|
|
5
|
+
publicStorageReads: TracedPublicStorageRead[];
|
|
6
|
+
publicStorageWrites: TracedPublicStorageWrite[];
|
|
7
7
|
noteHashChecks: TracedNoteHashCheck[];
|
|
8
|
-
newNoteHashes:
|
|
8
|
+
newNoteHashes: TracedNoteHash[];
|
|
9
9
|
nullifierChecks: TracedNullifierCheck[];
|
|
10
|
-
newNullifiers:
|
|
10
|
+
newNullifiers: TracedNullifier[];
|
|
11
11
|
l1ToL2MessageChecks: TracedL1toL2MessageCheck[];
|
|
12
12
|
constructor(parentTrace?: WorldStateAccessTrace);
|
|
13
13
|
getAccessCounter(): number;
|
|
14
|
-
tracePublicStorageRead(storageAddress: Fr, slot: Fr, value: Fr): void;
|
|
14
|
+
tracePublicStorageRead(storageAddress: Fr, slot: Fr, value: Fr, exists: boolean): void;
|
|
15
15
|
tracePublicStorageWrite(storageAddress: Fr, slot: Fr, value: Fr): void;
|
|
16
16
|
traceNoteHashCheck(storageAddress: Fr, noteHash: Fr, exists: boolean, leafIndex: Fr): void;
|
|
17
|
-
traceNewNoteHash(
|
|
17
|
+
traceNewNoteHash(storageAddress: Fr, noteHash: Fr): void;
|
|
18
18
|
traceNullifierCheck(storageAddress: Fr, nullifier: Fr, exists: boolean, isPending: boolean, leafIndex: Fr): void;
|
|
19
|
-
traceNewNullifier(
|
|
19
|
+
traceNewNullifier(storageAddress: Fr, nullifier: Fr): void;
|
|
20
20
|
traceL1ToL2MessageCheck(msgHash: Fr, msgLeafIndex: Fr, exists: boolean): void;
|
|
21
21
|
private incrementAccessCounter;
|
|
22
22
|
/**
|
|
@@ -28,16 +28,5 @@ export declare class WorldStateAccessTrace {
|
|
|
28
28
|
* @param incomingTrace - the incoming trace to merge into this instance
|
|
29
29
|
*/
|
|
30
30
|
acceptAndMerge(incomingTrace: WorldStateAccessTrace): void;
|
|
31
|
-
/**
|
|
32
|
-
* We want to keep track of all performed reads in the journal
|
|
33
|
-
* This information is hinted to the avm circuit
|
|
34
|
-
|
|
35
|
-
* @param contractAddress -
|
|
36
|
-
* @param key -
|
|
37
|
-
* @param value -
|
|
38
|
-
*/
|
|
39
|
-
journalUpdate(map: Map<bigint, Map<bigint, Fr[]>>, contractAddress: Fr, key: Fr, value: Fr): void;
|
|
40
|
-
private journalRead;
|
|
41
|
-
private journalWrite;
|
|
42
31
|
}
|
|
43
32
|
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC9B,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,qBAAqB;IACzB,aAAa,EAAE,MAAM,CAAC;IAEtB,kBAAkB,EAAE,uBAAuB,EAAE,CAAM;IACnD,mBAAmB,EAAE,wBAAwB,EAAE,CAAM;IAErD,cAAc,EAAE,mBAAmB,EAAE,CAAM;IAC3C,aAAa,EAAE,cAAc,EAAE,CAAM;IACrC,eAAe,EAAE,oBAAoB,EAAE,CAAM;IAC7C,aAAa,EAAE,eAAe,EAAE,CAAM;IACtC,mBAAmB,EAAE,wBAAwB,EAAE,CAAM;gBAKhD,WAAW,CAAC,EAAE,qBAAqB;IAIxC,gBAAgB;IAIhB,sBAAsB,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO;IAgB/E,uBAAuB,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAe/D,kBAAkB,CAAC,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IAcnF,gBAAgB,CAAC,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;IAajD,mBAAmB,CAAC,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IAgBzG,iBAAiB,CAAC,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;IAanD,uBAAuB,CAAC,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO;IAa7E,OAAO,CAAC,sBAAsB;IAI9B;;;;;;;OAOG;IACI,cAAc,CAAC,aAAa,EAAE,qBAAqB;CAa3D"}
|
|
@@ -1,111 +1,99 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
export class WorldStateAccessTrace {
|
|
3
|
+
//public contractCalls: TracedContractCall[] = [];
|
|
3
4
|
//public archiveChecks: TracedArchiveLeafCheck[] = [];
|
|
4
5
|
constructor(parentTrace) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
this.publicStorageReads = new Map();
|
|
8
|
-
//public publicStorageWrites: Array<TracedPublicStorageWrite> = [];
|
|
9
|
-
this.publicStorageWrites = new Map();
|
|
6
|
+
this.publicStorageReads = [];
|
|
7
|
+
this.publicStorageWrites = [];
|
|
10
8
|
this.noteHashChecks = [];
|
|
11
|
-
//public newNoteHashes: TracedNoteHash[] = [];
|
|
12
9
|
this.newNoteHashes = [];
|
|
13
10
|
this.nullifierChecks = [];
|
|
14
|
-
//public newNullifiers: TracedNullifier[] = [];
|
|
15
11
|
this.newNullifiers = [];
|
|
16
12
|
this.l1ToL2MessageChecks = [];
|
|
17
|
-
// Create an instance of journalUpdate that appends to the read array
|
|
18
|
-
this.journalRead = this.journalUpdate.bind(this, this.publicStorageReads);
|
|
19
|
-
// Create an instance of journalUpdate that appends to the writes array
|
|
20
|
-
this.journalWrite = this.journalUpdate.bind(this, this.publicStorageWrites);
|
|
21
13
|
this.accessCounter = parentTrace ? parentTrace.accessCounter : 0;
|
|
22
14
|
}
|
|
23
15
|
getAccessCounter() {
|
|
24
16
|
return this.accessCounter;
|
|
25
17
|
}
|
|
26
|
-
tracePublicStorageRead(storageAddress, slot, value
|
|
18
|
+
tracePublicStorageRead(storageAddress, slot, value, exists) {
|
|
27
19
|
// TODO(4805): check if some threshold is reached for max storage reads
|
|
28
20
|
// (need access to parent length, or trace needs to be initialized with parent's contents)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
this.journalRead(storageAddress, slot, value);
|
|
21
|
+
const traced = {
|
|
22
|
+
// callPointer: Fr.ZERO,
|
|
23
|
+
storageAddress,
|
|
24
|
+
slot,
|
|
25
|
+
value,
|
|
26
|
+
exists,
|
|
27
|
+
counter: new Fr(this.accessCounter),
|
|
28
|
+
// endLifetime: Fr.ZERO,
|
|
29
|
+
};
|
|
30
|
+
this.publicStorageReads.push(traced);
|
|
40
31
|
this.incrementAccessCounter();
|
|
41
32
|
}
|
|
42
33
|
tracePublicStorageWrite(storageAddress, slot, value) {
|
|
43
34
|
// TODO(4805): check if some threshold is reached for max storage writes
|
|
44
35
|
// (need access to parent length, or trace needs to be initialized with parent's contents)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
this.journalWrite(storageAddress, slot, value);
|
|
36
|
+
const traced = {
|
|
37
|
+
// callPointer: Fr.ZERO,
|
|
38
|
+
storageAddress,
|
|
39
|
+
slot,
|
|
40
|
+
value,
|
|
41
|
+
counter: new Fr(this.accessCounter),
|
|
42
|
+
// endLifetime: Fr.ZERO,
|
|
43
|
+
};
|
|
44
|
+
this.publicStorageWrites.push(traced);
|
|
55
45
|
this.incrementAccessCounter();
|
|
56
46
|
}
|
|
57
47
|
traceNoteHashCheck(storageAddress, noteHash, exists, leafIndex) {
|
|
58
48
|
const traced = {
|
|
59
|
-
callPointer: Fr.ZERO,
|
|
49
|
+
// callPointer: Fr.ZERO,
|
|
60
50
|
storageAddress,
|
|
61
51
|
noteHash,
|
|
62
52
|
exists,
|
|
63
53
|
counter: new Fr(this.accessCounter),
|
|
64
|
-
endLifetime: Fr.ZERO,
|
|
54
|
+
// endLifetime: Fr.ZERO,
|
|
65
55
|
leafIndex,
|
|
66
56
|
};
|
|
67
57
|
this.noteHashChecks.push(traced);
|
|
68
58
|
this.incrementAccessCounter();
|
|
69
59
|
}
|
|
70
|
-
traceNewNoteHash(
|
|
60
|
+
traceNewNoteHash(storageAddress, noteHash) {
|
|
71
61
|
// TODO(4805): check if some threshold is reached for max new note hash
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
this.newNoteHashes.push(noteHash);
|
|
62
|
+
const traced = {
|
|
63
|
+
// callPointer: Fr.ZERO,
|
|
64
|
+
storageAddress,
|
|
65
|
+
noteHash,
|
|
66
|
+
counter: new Fr(this.accessCounter),
|
|
67
|
+
// endLifetime: Fr.ZERO,
|
|
68
|
+
};
|
|
69
|
+
this.newNoteHashes.push(traced);
|
|
81
70
|
this.incrementAccessCounter();
|
|
82
71
|
}
|
|
83
72
|
traceNullifierCheck(storageAddress, nullifier, exists, isPending, leafIndex) {
|
|
84
73
|
// TODO(4805): check if some threshold is reached for max new nullifier
|
|
85
74
|
const traced = {
|
|
86
|
-
callPointer: Fr.ZERO,
|
|
75
|
+
// callPointer: Fr.ZERO,
|
|
87
76
|
storageAddress,
|
|
88
77
|
nullifier,
|
|
89
78
|
exists,
|
|
90
79
|
counter: new Fr(this.accessCounter),
|
|
91
|
-
endLifetime: Fr.ZERO,
|
|
80
|
+
// endLifetime: Fr.ZERO,
|
|
92
81
|
isPending,
|
|
93
82
|
leafIndex,
|
|
94
83
|
};
|
|
95
84
|
this.nullifierChecks.push(traced);
|
|
96
85
|
this.incrementAccessCounter();
|
|
97
86
|
}
|
|
98
|
-
traceNewNullifier(
|
|
87
|
+
traceNewNullifier(storageAddress, nullifier) {
|
|
99
88
|
// TODO(4805): check if some threshold is reached for max new nullifier
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
this.newNullifiers.push(nullifier);
|
|
89
|
+
const tracedNullifier = {
|
|
90
|
+
// callPointer: Fr.ZERO,
|
|
91
|
+
storageAddress,
|
|
92
|
+
nullifier,
|
|
93
|
+
counter: new Fr(this.accessCounter),
|
|
94
|
+
// endLifetime: Fr.ZERO,
|
|
95
|
+
};
|
|
96
|
+
this.newNullifiers.push(tracedNullifier);
|
|
109
97
|
this.incrementAccessCounter();
|
|
110
98
|
}
|
|
111
99
|
traceL1ToL2MessageCheck(msgHash, msgLeafIndex, exists) {
|
|
@@ -133,8 +121,8 @@ export class WorldStateAccessTrace {
|
|
|
133
121
|
*/
|
|
134
122
|
acceptAndMerge(incomingTrace) {
|
|
135
123
|
// Merge storage read and write journals
|
|
136
|
-
|
|
137
|
-
|
|
124
|
+
this.publicStorageReads = this.publicStorageReads.concat(incomingTrace.publicStorageReads);
|
|
125
|
+
this.publicStorageWrites = this.publicStorageWrites.concat(incomingTrace.publicStorageWrites);
|
|
138
126
|
// Merge new note hashes and nullifiers
|
|
139
127
|
this.noteHashChecks = this.noteHashChecks.concat(incomingTrace.noteHashChecks);
|
|
140
128
|
this.newNoteHashes = this.newNoteHashes.concat(incomingTrace.newNoteHashes);
|
|
@@ -144,61 +132,5 @@ export class WorldStateAccessTrace {
|
|
|
144
132
|
// it is assumed that the incoming trace was initialized with this as parent, so accept counter
|
|
145
133
|
this.accessCounter = incomingTrace.accessCounter;
|
|
146
134
|
}
|
|
147
|
-
/**
|
|
148
|
-
* We want to keep track of all performed reads in the journal
|
|
149
|
-
* This information is hinted to the avm circuit
|
|
150
|
-
|
|
151
|
-
* @param contractAddress -
|
|
152
|
-
* @param key -
|
|
153
|
-
* @param value -
|
|
154
|
-
*/
|
|
155
|
-
journalUpdate(map, contractAddress, key, value) {
|
|
156
|
-
let contractMap = map.get(contractAddress.toBigInt());
|
|
157
|
-
if (!contractMap) {
|
|
158
|
-
contractMap = new Map();
|
|
159
|
-
map.set(contractAddress.toBigInt(), contractMap);
|
|
160
|
-
}
|
|
161
|
-
let accessArray = contractMap.get(key.toBigInt());
|
|
162
|
-
if (!accessArray) {
|
|
163
|
-
accessArray = new Array();
|
|
164
|
-
contractMap.set(key.toBigInt(), accessArray);
|
|
165
|
-
}
|
|
166
|
-
accessArray.push(value);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Merges two contract journalling maps together
|
|
171
|
-
* For read maps, we just append the childMap arrays into the host map arrays, as the order is important
|
|
172
|
-
*
|
|
173
|
-
* @param hostMap - The map to be merged into
|
|
174
|
-
* @param childMap - The map to be merged from
|
|
175
|
-
*/
|
|
176
|
-
function mergeContractJournalMaps(hostMap, childMap) {
|
|
177
|
-
for (const [key, value] of childMap) {
|
|
178
|
-
const map1Value = hostMap.get(key);
|
|
179
|
-
if (!map1Value) {
|
|
180
|
-
hostMap.set(key, value);
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
mergeStorageJournalMaps(map1Value, value);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Merge two storage journalling maps together (for a particular contract).
|
|
189
|
-
*
|
|
190
|
-
* @param hostMap - The map to be merge into
|
|
191
|
-
* @param childMap - The map to be merged from
|
|
192
|
-
*/
|
|
193
|
-
function mergeStorageJournalMaps(hostMap, childMap) {
|
|
194
|
-
for (const [key, value] of childMap) {
|
|
195
|
-
const readArr = hostMap.get(key);
|
|
196
|
-
if (!readArr) {
|
|
197
|
-
hostMap.set(key, value);
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
200
|
-
hostMap.set(key, readArr?.concat(...value));
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
135
|
}
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL2pvdXJuYWwvdHJhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBWTlDLE1BQU0sT0FBTyxxQkFBcUI7SUFZaEMsa0RBQWtEO0lBQ2xELHNEQUFzRDtJQUV0RCxZQUFZLFdBQW1DO1FBWnhDLHVCQUFrQixHQUE4QixFQUFFLENBQUM7UUFDbkQsd0JBQW1CLEdBQStCLEVBQUUsQ0FBQztRQUVyRCxtQkFBYyxHQUEwQixFQUFFLENBQUM7UUFDM0Msa0JBQWEsR0FBcUIsRUFBRSxDQUFDO1FBQ3JDLG9CQUFlLEdBQTJCLEVBQUUsQ0FBQztRQUM3QyxrQkFBYSxHQUFzQixFQUFFLENBQUM7UUFDdEMsd0JBQW1CLEdBQStCLEVBQUUsQ0FBQztRQU0xRCxJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxjQUFrQixFQUFFLElBQVEsRUFBRSxLQUFTLEVBQUUsTUFBZTtRQUNwRix1RUFBdUU7UUFDdkUsMEZBQTBGO1FBQzFGLE1BQU0sTUFBTSxHQUE0QjtZQUN0Qyx5QkFBeUI7WUFDekIsY0FBYztZQUNkLElBQUk7WUFDSixLQUFLO1lBQ0wsTUFBTTtZQUNOLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ25DLHlCQUF5QjtTQUMxQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFD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
|
|
@@ -1,23 +1,42 @@
|
|
|
1
1
|
import { type Fr } from '@aztec/foundation/fields';
|
|
2
|
+
export type TracedPublicStorageRead = {
|
|
3
|
+
storageAddress: Fr;
|
|
4
|
+
exists: boolean;
|
|
5
|
+
slot: Fr;
|
|
6
|
+
value: Fr;
|
|
7
|
+
counter: Fr;
|
|
8
|
+
};
|
|
9
|
+
export type TracedPublicStorageWrite = {
|
|
10
|
+
storageAddress: Fr;
|
|
11
|
+
slot: Fr;
|
|
12
|
+
value: Fr;
|
|
13
|
+
counter: Fr;
|
|
14
|
+
};
|
|
2
15
|
export type TracedNoteHashCheck = {
|
|
3
|
-
callPointer: Fr;
|
|
4
16
|
storageAddress: Fr;
|
|
5
17
|
leafIndex: Fr;
|
|
6
18
|
noteHash: Fr;
|
|
7
19
|
exists: boolean;
|
|
8
20
|
counter: Fr;
|
|
9
|
-
|
|
21
|
+
};
|
|
22
|
+
export type TracedNoteHash = {
|
|
23
|
+
storageAddress: Fr;
|
|
24
|
+
noteHash: Fr;
|
|
25
|
+
counter: Fr;
|
|
10
26
|
};
|
|
11
27
|
export type TracedNullifierCheck = {
|
|
12
|
-
callPointer: Fr;
|
|
13
28
|
storageAddress: Fr;
|
|
14
29
|
nullifier: Fr;
|
|
15
30
|
exists: boolean;
|
|
16
31
|
counter: Fr;
|
|
17
|
-
endLifetime: Fr;
|
|
18
32
|
isPending: boolean;
|
|
19
33
|
leafIndex: Fr;
|
|
20
34
|
};
|
|
35
|
+
export type TracedNullifier = {
|
|
36
|
+
storageAddress: Fr;
|
|
37
|
+
nullifier: Fr;
|
|
38
|
+
counter: Fr;
|
|
39
|
+
};
|
|
21
40
|
export type TracedL1toL2MessageCheck = {
|
|
22
41
|
leafIndex: Fr;
|
|
23
42
|
msgHash: Fr;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace_types.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/trace_types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"trace_types.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/trace_types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AASnD,MAAM,MAAM,uBAAuB,GAAG;IAEpC,cAAc,EAAE,EAAE,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,EAAE,CAAC;IACT,KAAK,EAAE,EAAE,CAAC;IACV,OAAO,EAAE,EAAE,CAAC;CAEb,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IAErC,cAAc,EAAE,EAAE,CAAC;IACnB,IAAI,EAAE,EAAE,CAAC;IACT,KAAK,EAAE,EAAE,CAAC;IACV,OAAO,EAAE,EAAE,CAAC;CAEb,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAEhC,cAAc,EAAE,EAAE,CAAC;IACnB,SAAS,EAAE,EAAE,CAAC;IACd,QAAQ,EAAE,EAAE,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,EAAE,CAAC;CAEb,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAE3B,cAAc,EAAE,EAAE,CAAC;IACnB,QAAQ,EAAE,EAAE,CAAC;IACb,OAAO,EAAE,EAAE,CAAC;CAEb,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAEjC,cAAc,EAAE,EAAE,CAAC;IACnB,SAAS,EAAE,EAAE,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,EAAE,CAAC;IAIZ,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAE5B,cAAc,EAAE,EAAE,CAAC;IACnB,SAAS,EAAE,EAAE,CAAC;IACd,OAAO,EAAE,EAAE,CAAC;CAEb,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IAErC,SAAS,EAAE,EAAE,CAAC;IACd,OAAO,EAAE,EAAE,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;CAEjB,CAAC"}
|