@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
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Convert an array of ACVMFields to a string.
|
|
3
|
-
*
|
|
4
|
-
* @param msg - array of ACVMFields where each represents a single ascii character
|
|
5
|
-
* @returns string representation of the message
|
|
6
|
-
*/
|
|
7
|
-
export function acvmFieldMessageToString(msg) {
|
|
8
|
-
let msgStr = '';
|
|
9
|
-
for (const msgChar of msg) {
|
|
10
|
-
const asciiCode = Number(msgChar);
|
|
11
|
-
const asciiChar = String.fromCharCode(asciiCode);
|
|
12
|
-
msgStr = msgStr.concat(asciiChar);
|
|
13
|
-
}
|
|
14
|
-
// cut off string in case of preemptive null termination
|
|
15
|
-
const nullCharIndex = msgStr.indexOf('\\0');
|
|
16
|
-
if (nullCharIndex >= 0) {
|
|
17
|
-
msgStr = msgStr.substring(0, nullCharIndex);
|
|
18
|
-
}
|
|
19
|
-
return msgStr.replaceAll('\\n', '\n').replaceAll('\\t', '\t');
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Format a debug string for Aztec.nr filling in `'{0}'` entries with their
|
|
23
|
-
* corresponding values from the args array.
|
|
24
|
-
*
|
|
25
|
-
* @param formatStr - str of form `'this is a string with some entries like {0} and {1}'`
|
|
26
|
-
* @param args - array of fields to fill in the string format entries with
|
|
27
|
-
* @returns formatted string
|
|
28
|
-
*/
|
|
29
|
-
function applyStringFormatting(formatStr, args) {
|
|
30
|
-
const matches = formatStr.match(/{\d+}/g);
|
|
31
|
-
if (matches == null) {
|
|
32
|
-
return formatStr;
|
|
33
|
-
}
|
|
34
|
-
// Get the numeric values within the curly braces, convert them to numbers,
|
|
35
|
-
// and find the maximum value.
|
|
36
|
-
const maxIndex = Math.max(...matches.map(match => Number(match.slice(1, -1))));
|
|
37
|
-
const argsPadded = args.concat(Array.from({ length: Math.max(0, maxIndex - args.length) }, () => '0xBAD'));
|
|
38
|
-
return formatStr.replace(/{(\d+)}/g, function (match, index) {
|
|
39
|
-
return typeof args[index] != 'undefined' ? argsPadded[index] : match;
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Convert an array of ACVMFields from ACVM to a formatted string.
|
|
44
|
-
*
|
|
45
|
-
* @param parameters - either one parameter representing a simple field or array, or two parameters when
|
|
46
|
-
* It's a message without args or three parameters when it's a message with arguments.
|
|
47
|
-
*
|
|
48
|
-
* @returns formatted string
|
|
49
|
-
*/
|
|
50
|
-
export function oracleDebugCallToFormattedStr(parameters) {
|
|
51
|
-
if (parameters.length === 1) {
|
|
52
|
-
return processFieldOrArray(parameters[0]);
|
|
53
|
-
}
|
|
54
|
-
let formatArgs = [];
|
|
55
|
-
if (parameters.length > 2) {
|
|
56
|
-
formatArgs = parameters[1];
|
|
57
|
-
}
|
|
58
|
-
const formattedMsg = applyStringFormatting(acvmFieldMessageToString(parameters[0]), formatArgs);
|
|
59
|
-
return formattedMsg;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Processes a field or an array and returns a string representation.
|
|
63
|
-
* @param fieldOrArray - The field or array to be processed.
|
|
64
|
-
* @returns Returns the processed string representation of the field or array.
|
|
65
|
-
*/
|
|
66
|
-
function processFieldOrArray(fieldOrArray) {
|
|
67
|
-
if (fieldOrArray.length === 1) {
|
|
68
|
-
return `${fieldOrArray[0]}`;
|
|
69
|
-
}
|
|
70
|
-
// Check if all the elements start with 63 zero bytes
|
|
71
|
-
// --> if yes, we have an array of bytes and we print as hex
|
|
72
|
-
if (onlyBytes(fieldOrArray)) {
|
|
73
|
-
const decimalArray = fieldOrArray.map(element => parseInt(element, 16));
|
|
74
|
-
return '0x' + Buffer.from(decimalArray).toString('hex');
|
|
75
|
-
}
|
|
76
|
-
return '[' + fieldOrArray.join(', ') + ']';
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Checks if all elements in the array are valid byte representations.
|
|
80
|
-
* @param array - The array to be checked.
|
|
81
|
-
* @returns Returns `true` if all elements are valid byte representations, `false` otherwise.
|
|
82
|
-
* @throws Throws an error if any element has an invalid length.
|
|
83
|
-
*/
|
|
84
|
-
function onlyBytes(array) {
|
|
85
|
-
for (const element of array) {
|
|
86
|
-
if (element.length != 66) {
|
|
87
|
-
throw new Error('Invalid element length. Expected 66 chars, got ' + element.length + ' chars.');
|
|
88
|
-
}
|
|
89
|
-
if (!element.startsWith('0x00000000000000000000000000000000000000000000000000000000000000')) {
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return true;
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN2bS9vcmFjbGUvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsR0FBZ0I7SUFDdkQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLEtBQUssTUFBTSxPQUFPLElBQUksR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELHdEQUF3RDtJQUN4RCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLElBQUksYUFBYSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxxQkFBcUIsQ0FBQyxTQUFpQixFQUFFLElBQWlCO0lBQ2pFLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7UUFDcEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELDJFQUEyRTtJQUMzRSw4QkFBOEI7SUFDOUIsTUFBTSxRQUFRLEdB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
|
|
@@ -1,322 +0,0 @@
|
|
|
1
|
-
import { TypeTag } from './avm_memory_types.js';
|
|
2
|
-
/** Gas cost in L1, L2, and DA for a given instruction. */
|
|
3
|
-
export type GasCost = {
|
|
4
|
-
l1Gas: number;
|
|
5
|
-
l2Gas: number;
|
|
6
|
-
daGas: number;
|
|
7
|
-
};
|
|
8
|
-
/** Creates a new instance with all values set to zero except the ones set. */
|
|
9
|
-
export declare function makeGasCost(gasCost: Partial<GasCost>): {
|
|
10
|
-
l1Gas: number;
|
|
11
|
-
l2Gas: number;
|
|
12
|
-
daGas: number;
|
|
13
|
-
};
|
|
14
|
-
/** Gas cost of zero across all gas dimensions. */
|
|
15
|
-
export declare const EmptyGasCost: {
|
|
16
|
-
l1Gas: number;
|
|
17
|
-
l2Gas: number;
|
|
18
|
-
daGas: number;
|
|
19
|
-
};
|
|
20
|
-
/** Dimensions of gas usage: L1, L2, and DA. */
|
|
21
|
-
export declare const GasDimensions: readonly ["l1Gas", "l2Gas", "daGas"];
|
|
22
|
-
/** Null object to represent a gas cost that's dynamic instead of fixed for a given instruction. */
|
|
23
|
-
export declare const DynamicGasCost: unique symbol;
|
|
24
|
-
/** Gas costs for each instruction. */
|
|
25
|
-
export declare const GasCosts: {
|
|
26
|
-
readonly 0: typeof DynamicGasCost;
|
|
27
|
-
readonly 1: typeof DynamicGasCost;
|
|
28
|
-
readonly 2: typeof DynamicGasCost;
|
|
29
|
-
readonly 3: typeof DynamicGasCost;
|
|
30
|
-
readonly 4: {
|
|
31
|
-
l1Gas: number;
|
|
32
|
-
l2Gas: number;
|
|
33
|
-
daGas: number;
|
|
34
|
-
};
|
|
35
|
-
readonly 5: {
|
|
36
|
-
l1Gas: number;
|
|
37
|
-
l2Gas: number;
|
|
38
|
-
daGas: number;
|
|
39
|
-
};
|
|
40
|
-
readonly 6: {
|
|
41
|
-
l1Gas: number;
|
|
42
|
-
l2Gas: number;
|
|
43
|
-
daGas: number;
|
|
44
|
-
};
|
|
45
|
-
readonly 7: {
|
|
46
|
-
l1Gas: number;
|
|
47
|
-
l2Gas: number;
|
|
48
|
-
daGas: number;
|
|
49
|
-
};
|
|
50
|
-
readonly 8: {
|
|
51
|
-
l1Gas: number;
|
|
52
|
-
l2Gas: number;
|
|
53
|
-
daGas: number;
|
|
54
|
-
};
|
|
55
|
-
readonly 9: {
|
|
56
|
-
l1Gas: number;
|
|
57
|
-
l2Gas: number;
|
|
58
|
-
daGas: number;
|
|
59
|
-
};
|
|
60
|
-
readonly 10: {
|
|
61
|
-
l1Gas: number;
|
|
62
|
-
l2Gas: number;
|
|
63
|
-
daGas: number;
|
|
64
|
-
};
|
|
65
|
-
readonly 11: {
|
|
66
|
-
l1Gas: number;
|
|
67
|
-
l2Gas: number;
|
|
68
|
-
daGas: number;
|
|
69
|
-
};
|
|
70
|
-
readonly 12: {
|
|
71
|
-
l1Gas: number;
|
|
72
|
-
l2Gas: number;
|
|
73
|
-
daGas: number;
|
|
74
|
-
};
|
|
75
|
-
readonly 13: {
|
|
76
|
-
l1Gas: number;
|
|
77
|
-
l2Gas: number;
|
|
78
|
-
daGas: number;
|
|
79
|
-
};
|
|
80
|
-
readonly 14: {
|
|
81
|
-
l1Gas: number;
|
|
82
|
-
l2Gas: number;
|
|
83
|
-
daGas: number;
|
|
84
|
-
};
|
|
85
|
-
readonly 15: {
|
|
86
|
-
l1Gas: number;
|
|
87
|
-
l2Gas: number;
|
|
88
|
-
daGas: number;
|
|
89
|
-
};
|
|
90
|
-
readonly 16: {
|
|
91
|
-
l1Gas: number;
|
|
92
|
-
l2Gas: number;
|
|
93
|
-
daGas: number;
|
|
94
|
-
};
|
|
95
|
-
readonly 17: {
|
|
96
|
-
l1Gas: number;
|
|
97
|
-
l2Gas: number;
|
|
98
|
-
daGas: number;
|
|
99
|
-
};
|
|
100
|
-
readonly 18: {
|
|
101
|
-
l1Gas: number;
|
|
102
|
-
l2Gas: number;
|
|
103
|
-
daGas: number;
|
|
104
|
-
};
|
|
105
|
-
readonly 19: {
|
|
106
|
-
l1Gas: number;
|
|
107
|
-
l2Gas: number;
|
|
108
|
-
daGas: number;
|
|
109
|
-
};
|
|
110
|
-
readonly 20: {
|
|
111
|
-
l1Gas: number;
|
|
112
|
-
l2Gas: number;
|
|
113
|
-
daGas: number;
|
|
114
|
-
};
|
|
115
|
-
readonly 21: {
|
|
116
|
-
l1Gas: number;
|
|
117
|
-
l2Gas: number;
|
|
118
|
-
daGas: number;
|
|
119
|
-
};
|
|
120
|
-
readonly 22: {
|
|
121
|
-
l1Gas: number;
|
|
122
|
-
l2Gas: number;
|
|
123
|
-
daGas: number;
|
|
124
|
-
};
|
|
125
|
-
readonly 23: {
|
|
126
|
-
l1Gas: number;
|
|
127
|
-
l2Gas: number;
|
|
128
|
-
daGas: number;
|
|
129
|
-
};
|
|
130
|
-
readonly 24: {
|
|
131
|
-
l1Gas: number;
|
|
132
|
-
l2Gas: number;
|
|
133
|
-
daGas: number;
|
|
134
|
-
};
|
|
135
|
-
readonly 25: {
|
|
136
|
-
l1Gas: number;
|
|
137
|
-
l2Gas: number;
|
|
138
|
-
daGas: number;
|
|
139
|
-
};
|
|
140
|
-
readonly 26: {
|
|
141
|
-
l1Gas: number;
|
|
142
|
-
l2Gas: number;
|
|
143
|
-
daGas: number;
|
|
144
|
-
};
|
|
145
|
-
readonly 27: {
|
|
146
|
-
l1Gas: number;
|
|
147
|
-
l2Gas: number;
|
|
148
|
-
daGas: number;
|
|
149
|
-
};
|
|
150
|
-
readonly 28: {
|
|
151
|
-
l1Gas: number;
|
|
152
|
-
l2Gas: number;
|
|
153
|
-
daGas: number;
|
|
154
|
-
};
|
|
155
|
-
readonly 29: {
|
|
156
|
-
l1Gas: number;
|
|
157
|
-
l2Gas: number;
|
|
158
|
-
daGas: number;
|
|
159
|
-
};
|
|
160
|
-
readonly 30: {
|
|
161
|
-
l1Gas: number;
|
|
162
|
-
l2Gas: number;
|
|
163
|
-
daGas: number;
|
|
164
|
-
};
|
|
165
|
-
readonly 31: {
|
|
166
|
-
l1Gas: number;
|
|
167
|
-
l2Gas: number;
|
|
168
|
-
daGas: number;
|
|
169
|
-
};
|
|
170
|
-
readonly 32: typeof DynamicGasCost;
|
|
171
|
-
readonly 33: {
|
|
172
|
-
l1Gas: number;
|
|
173
|
-
l2Gas: number;
|
|
174
|
-
daGas: number;
|
|
175
|
-
};
|
|
176
|
-
readonly 34: {
|
|
177
|
-
l1Gas: number;
|
|
178
|
-
l2Gas: number;
|
|
179
|
-
daGas: number;
|
|
180
|
-
};
|
|
181
|
-
readonly 35: {
|
|
182
|
-
l1Gas: number;
|
|
183
|
-
l2Gas: number;
|
|
184
|
-
daGas: number;
|
|
185
|
-
};
|
|
186
|
-
readonly 36: {
|
|
187
|
-
l1Gas: number;
|
|
188
|
-
l2Gas: number;
|
|
189
|
-
daGas: number;
|
|
190
|
-
};
|
|
191
|
-
readonly 37: {
|
|
192
|
-
l1Gas: number;
|
|
193
|
-
l2Gas: number;
|
|
194
|
-
daGas: number;
|
|
195
|
-
};
|
|
196
|
-
readonly 38: {
|
|
197
|
-
l1Gas: number;
|
|
198
|
-
l2Gas: number;
|
|
199
|
-
daGas: number;
|
|
200
|
-
};
|
|
201
|
-
readonly 39: {
|
|
202
|
-
l1Gas: number;
|
|
203
|
-
l2Gas: number;
|
|
204
|
-
daGas: number;
|
|
205
|
-
};
|
|
206
|
-
readonly 40: typeof DynamicGasCost;
|
|
207
|
-
readonly 41: {
|
|
208
|
-
l1Gas: number;
|
|
209
|
-
l2Gas: number;
|
|
210
|
-
daGas: number;
|
|
211
|
-
};
|
|
212
|
-
readonly 42: {
|
|
213
|
-
l1Gas: number;
|
|
214
|
-
l2Gas: number;
|
|
215
|
-
daGas: number;
|
|
216
|
-
};
|
|
217
|
-
readonly 43: {
|
|
218
|
-
l1Gas: number;
|
|
219
|
-
l2Gas: number;
|
|
220
|
-
daGas: number;
|
|
221
|
-
};
|
|
222
|
-
readonly 44: {
|
|
223
|
-
l1Gas: number;
|
|
224
|
-
l2Gas: number;
|
|
225
|
-
daGas: number;
|
|
226
|
-
};
|
|
227
|
-
readonly 45: {
|
|
228
|
-
l1Gas: number;
|
|
229
|
-
l2Gas: number;
|
|
230
|
-
daGas: number;
|
|
231
|
-
};
|
|
232
|
-
readonly 46: {
|
|
233
|
-
l1Gas: number;
|
|
234
|
-
l2Gas: number;
|
|
235
|
-
daGas: number;
|
|
236
|
-
};
|
|
237
|
-
readonly 47: {
|
|
238
|
-
l1Gas: number;
|
|
239
|
-
l2Gas: number;
|
|
240
|
-
daGas: number;
|
|
241
|
-
};
|
|
242
|
-
readonly 48: {
|
|
243
|
-
l1Gas: number;
|
|
244
|
-
l2Gas: number;
|
|
245
|
-
daGas: number;
|
|
246
|
-
};
|
|
247
|
-
readonly 49: {
|
|
248
|
-
l1Gas: number;
|
|
249
|
-
l2Gas: number;
|
|
250
|
-
daGas: number;
|
|
251
|
-
};
|
|
252
|
-
readonly 50: {
|
|
253
|
-
l1Gas: number;
|
|
254
|
-
l2Gas: number;
|
|
255
|
-
daGas: number;
|
|
256
|
-
};
|
|
257
|
-
readonly 51: {
|
|
258
|
-
l1Gas: number;
|
|
259
|
-
l2Gas: number;
|
|
260
|
-
daGas: number;
|
|
261
|
-
};
|
|
262
|
-
readonly 52: {
|
|
263
|
-
l1Gas: number;
|
|
264
|
-
l2Gas: number;
|
|
265
|
-
daGas: number;
|
|
266
|
-
};
|
|
267
|
-
readonly 53: {
|
|
268
|
-
l1Gas: number;
|
|
269
|
-
l2Gas: number;
|
|
270
|
-
daGas: number;
|
|
271
|
-
};
|
|
272
|
-
readonly 54: {
|
|
273
|
-
l1Gas: number;
|
|
274
|
-
l2Gas: number;
|
|
275
|
-
daGas: number;
|
|
276
|
-
};
|
|
277
|
-
readonly 55: {
|
|
278
|
-
l1Gas: number;
|
|
279
|
-
l2Gas: number;
|
|
280
|
-
daGas: number;
|
|
281
|
-
};
|
|
282
|
-
readonly 56: {
|
|
283
|
-
l1Gas: number;
|
|
284
|
-
l2Gas: number;
|
|
285
|
-
daGas: number;
|
|
286
|
-
};
|
|
287
|
-
readonly 57: {
|
|
288
|
-
l1Gas: number;
|
|
289
|
-
l2Gas: number;
|
|
290
|
-
daGas: number;
|
|
291
|
-
};
|
|
292
|
-
readonly 58: {
|
|
293
|
-
l1Gas: number;
|
|
294
|
-
l2Gas: number;
|
|
295
|
-
daGas: number;
|
|
296
|
-
};
|
|
297
|
-
readonly 59: {
|
|
298
|
-
l1Gas: number;
|
|
299
|
-
l2Gas: number;
|
|
300
|
-
daGas: number;
|
|
301
|
-
};
|
|
302
|
-
readonly 60: {
|
|
303
|
-
l1Gas: number;
|
|
304
|
-
l2Gas: number;
|
|
305
|
-
daGas: number;
|
|
306
|
-
};
|
|
307
|
-
readonly 61: {
|
|
308
|
-
l1Gas: number;
|
|
309
|
-
l2Gas: number;
|
|
310
|
-
daGas: number;
|
|
311
|
-
};
|
|
312
|
-
};
|
|
313
|
-
/** Constants used in base cost calculations. */
|
|
314
|
-
export declare const GasCostConstants: {
|
|
315
|
-
SET_COST_PER_BYTE: number;
|
|
316
|
-
CALLDATACOPY_COST_PER_BYTE: number;
|
|
317
|
-
ARITHMETIC_COST_PER_BYTE: number;
|
|
318
|
-
ARITHMETIC_COST_PER_INDIRECT_ACCESS: number;
|
|
319
|
-
};
|
|
320
|
-
/** Returns a multiplier based on the size of the type represented by the tag. Throws on uninitialized or invalid. */
|
|
321
|
-
export declare function getGasCostMultiplierFromTypeTag(tag: TypeTag): 2 | 1 | 16 | 4 | 32 | 8;
|
|
322
|
-
//# sourceMappingURL=avm_gas_cost.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"avm_gas_cost.d.ts","sourceRoot":"","sources":["../../src/avm/avm_gas_cost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGhD,0DAA0D;AAC1D,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;;;;EAEpD;AAED,kDAAkD;AAClD,eAAO,MAAM,YAAY;;;;CAIxB,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,aAAa,sCAAuC,CAAC;AAElE,mGAAmG;AACnG,eAAO,MAAM,cAAc,eAA2B,CAAC;AAKvD,sCAAsC;AACtC,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsEX,CAAC;AAEX,gDAAgD;AAChD,eAAO,MAAM,gBAAgB;;;;;CAK5B,CAAC;AAEF,qHAAqH;AACrH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,OAAO,2BAkB3D"}
|
package/dest/avm/avm_gas_cost.js
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { TypeTag } from './avm_memory_types.js';
|
|
2
|
-
import { Opcode } from './serialization/instruction_serialization.js';
|
|
3
|
-
/** Creates a new instance with all values set to zero except the ones set. */
|
|
4
|
-
export function makeGasCost(gasCost) {
|
|
5
|
-
return { ...EmptyGasCost, ...gasCost };
|
|
6
|
-
}
|
|
7
|
-
/** Gas cost of zero across all gas dimensions. */
|
|
8
|
-
export const EmptyGasCost = {
|
|
9
|
-
l1Gas: 0,
|
|
10
|
-
l2Gas: 0,
|
|
11
|
-
daGas: 0,
|
|
12
|
-
};
|
|
13
|
-
/** Dimensions of gas usage: L1, L2, and DA. */
|
|
14
|
-
export const GasDimensions = ['l1Gas', 'l2Gas', 'daGas'];
|
|
15
|
-
/** Null object to represent a gas cost that's dynamic instead of fixed for a given instruction. */
|
|
16
|
-
export const DynamicGasCost = Symbol('DynamicGasCost');
|
|
17
|
-
/** Temporary default gas cost. We should eventually remove all usage of this variable in favor of actual gas for each opcode. */
|
|
18
|
-
const TemporaryDefaultGasCost = { l1Gas: 0, l2Gas: 10, daGas: 0 };
|
|
19
|
-
/** Gas costs for each instruction. */
|
|
20
|
-
export const GasCosts = {
|
|
21
|
-
[Opcode.ADD]: DynamicGasCost,
|
|
22
|
-
[Opcode.SUB]: DynamicGasCost,
|
|
23
|
-
[Opcode.MUL]: DynamicGasCost,
|
|
24
|
-
[Opcode.DIV]: DynamicGasCost,
|
|
25
|
-
[Opcode.FDIV]: TemporaryDefaultGasCost,
|
|
26
|
-
[Opcode.EQ]: TemporaryDefaultGasCost,
|
|
27
|
-
[Opcode.LT]: TemporaryDefaultGasCost,
|
|
28
|
-
[Opcode.LTE]: TemporaryDefaultGasCost,
|
|
29
|
-
[Opcode.AND]: TemporaryDefaultGasCost,
|
|
30
|
-
[Opcode.OR]: TemporaryDefaultGasCost,
|
|
31
|
-
[Opcode.XOR]: TemporaryDefaultGasCost,
|
|
32
|
-
[Opcode.NOT]: TemporaryDefaultGasCost,
|
|
33
|
-
[Opcode.SHL]: TemporaryDefaultGasCost,
|
|
34
|
-
[Opcode.SHR]: TemporaryDefaultGasCost,
|
|
35
|
-
[Opcode.CAST]: TemporaryDefaultGasCost,
|
|
36
|
-
// Execution environment
|
|
37
|
-
[Opcode.ADDRESS]: TemporaryDefaultGasCost,
|
|
38
|
-
[Opcode.STORAGEADDRESS]: TemporaryDefaultGasCost,
|
|
39
|
-
[Opcode.ORIGIN]: TemporaryDefaultGasCost,
|
|
40
|
-
[Opcode.SENDER]: TemporaryDefaultGasCost,
|
|
41
|
-
[Opcode.PORTAL]: TemporaryDefaultGasCost,
|
|
42
|
-
[Opcode.FEEPERL1GAS]: TemporaryDefaultGasCost,
|
|
43
|
-
[Opcode.FEEPERL2GAS]: TemporaryDefaultGasCost,
|
|
44
|
-
[Opcode.FEEPERDAGAS]: TemporaryDefaultGasCost,
|
|
45
|
-
[Opcode.CONTRACTCALLDEPTH]: TemporaryDefaultGasCost,
|
|
46
|
-
[Opcode.CHAINID]: TemporaryDefaultGasCost,
|
|
47
|
-
[Opcode.VERSION]: TemporaryDefaultGasCost,
|
|
48
|
-
[Opcode.BLOCKNUMBER]: TemporaryDefaultGasCost,
|
|
49
|
-
[Opcode.TIMESTAMP]: TemporaryDefaultGasCost,
|
|
50
|
-
[Opcode.COINBASE]: TemporaryDefaultGasCost,
|
|
51
|
-
[Opcode.BLOCKL1GASLIMIT]: TemporaryDefaultGasCost,
|
|
52
|
-
[Opcode.BLOCKL2GASLIMIT]: TemporaryDefaultGasCost,
|
|
53
|
-
[Opcode.BLOCKDAGASLIMIT]: TemporaryDefaultGasCost,
|
|
54
|
-
[Opcode.CALLDATACOPY]: DynamicGasCost,
|
|
55
|
-
// Gas
|
|
56
|
-
[Opcode.L1GASLEFT]: TemporaryDefaultGasCost,
|
|
57
|
-
[Opcode.L2GASLEFT]: TemporaryDefaultGasCost,
|
|
58
|
-
[Opcode.DAGASLEFT]: TemporaryDefaultGasCost,
|
|
59
|
-
// Control flow
|
|
60
|
-
[Opcode.JUMP]: TemporaryDefaultGasCost,
|
|
61
|
-
[Opcode.JUMPI]: TemporaryDefaultGasCost,
|
|
62
|
-
[Opcode.INTERNALCALL]: TemporaryDefaultGasCost,
|
|
63
|
-
[Opcode.INTERNALRETURN]: TemporaryDefaultGasCost,
|
|
64
|
-
// Memory
|
|
65
|
-
[Opcode.SET]: DynamicGasCost,
|
|
66
|
-
[Opcode.MOV]: TemporaryDefaultGasCost,
|
|
67
|
-
[Opcode.CMOV]: TemporaryDefaultGasCost,
|
|
68
|
-
// World state
|
|
69
|
-
[Opcode.SLOAD]: TemporaryDefaultGasCost,
|
|
70
|
-
[Opcode.SSTORE]: TemporaryDefaultGasCost,
|
|
71
|
-
[Opcode.NOTEHASHEXISTS]: TemporaryDefaultGasCost,
|
|
72
|
-
[Opcode.EMITNOTEHASH]: TemporaryDefaultGasCost,
|
|
73
|
-
[Opcode.NULLIFIEREXISTS]: TemporaryDefaultGasCost,
|
|
74
|
-
[Opcode.EMITNULLIFIER]: TemporaryDefaultGasCost,
|
|
75
|
-
[Opcode.L1TOL2MSGEXISTS]: TemporaryDefaultGasCost,
|
|
76
|
-
[Opcode.HEADERMEMBER]: TemporaryDefaultGasCost,
|
|
77
|
-
[Opcode.EMITUNENCRYPTEDLOG]: TemporaryDefaultGasCost,
|
|
78
|
-
[Opcode.SENDL2TOL1MSG]: TemporaryDefaultGasCost,
|
|
79
|
-
// External calls
|
|
80
|
-
[Opcode.CALL]: TemporaryDefaultGasCost,
|
|
81
|
-
[Opcode.STATICCALL]: TemporaryDefaultGasCost,
|
|
82
|
-
[Opcode.DELEGATECALL]: TemporaryDefaultGasCost,
|
|
83
|
-
[Opcode.RETURN]: TemporaryDefaultGasCost,
|
|
84
|
-
[Opcode.REVERT]: TemporaryDefaultGasCost,
|
|
85
|
-
// Gadgets
|
|
86
|
-
[Opcode.KECCAK]: TemporaryDefaultGasCost,
|
|
87
|
-
[Opcode.POSEIDON]: TemporaryDefaultGasCost,
|
|
88
|
-
[Opcode.SHA256]: TemporaryDefaultGasCost, // temp - may be removed, but alot of contracts rely on i: TemporaryDefaultGasCost,
|
|
89
|
-
[Opcode.PEDERSEN]: TemporaryDefaultGasCost, // temp - may be removed, but alot of contracts rely on i: TemporaryDefaultGasCost,t
|
|
90
|
-
};
|
|
91
|
-
/** Constants used in base cost calculations. */
|
|
92
|
-
export const GasCostConstants = {
|
|
93
|
-
SET_COST_PER_BYTE: 100,
|
|
94
|
-
CALLDATACOPY_COST_PER_BYTE: 10,
|
|
95
|
-
ARITHMETIC_COST_PER_BYTE: 10,
|
|
96
|
-
ARITHMETIC_COST_PER_INDIRECT_ACCESS: 5,
|
|
97
|
-
};
|
|
98
|
-
/** Returns a multiplier based on the size of the type represented by the tag. Throws on uninitialized or invalid. */
|
|
99
|
-
export function getGasCostMultiplierFromTypeTag(tag) {
|
|
100
|
-
switch (tag) {
|
|
101
|
-
case TypeTag.UINT8:
|
|
102
|
-
return 1;
|
|
103
|
-
case TypeTag.UINT16:
|
|
104
|
-
return 2;
|
|
105
|
-
case TypeTag.UINT32:
|
|
106
|
-
return 4;
|
|
107
|
-
case TypeTag.UINT64:
|
|
108
|
-
return 8;
|
|
109
|
-
case TypeTag.UINT128:
|
|
110
|
-
return 16;
|
|
111
|
-
case TypeTag.FIELD:
|
|
112
|
-
return 32;
|
|
113
|
-
case TypeTag.INVALID:
|
|
114
|
-
case TypeTag.UNINITIALIZED:
|
|
115
|
-
throw new Error(`Invalid tag type for gas cost multiplier: ${TypeTag[tag]}`);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2dhc19jb3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F2bS9hdm1fZ2FzX2Nvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQVN0RSw4RUFBOEU7QUFDOUUsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUF5QjtJQUNuRCxPQUFPLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztBQUN6QyxDQUFDO0FBRUQsa0RBQWtEO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLENBQUM7Q0FDVCxDQUFDO0FBRUYsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFVLENBQUM7QUFFbEUsbUdBQW1HO0FBQ25HLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUV2RCxpSUFBaUk7QUFDakksTUFBTSx1QkFBdUIsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFFbEUsc0NBQXNDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxjQUFjO0lBQzVCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGNBQWM7SUFDNUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsY0FBYztJQUM1QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxjQUFjO0lBQzVC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
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { type GlobalVariables } from '@aztec/circuits.js';
|
|
2
|
-
import { type PublicExecution, type PublicExecutionResult } from '../public/execution.js';
|
|
3
|
-
import { AvmExecutionEnvironment } from './avm_execution_environment.js';
|
|
4
|
-
import { type AvmContractCallResults } from './avm_message_call_result.js';
|
|
5
|
-
import { type JournalData } from './journal/journal.js';
|
|
6
|
-
/** Temporary Method
|
|
7
|
-
*
|
|
8
|
-
* Convert a PublicExecution(Environment) object to an AvmExecutionEnvironment
|
|
9
|
-
*
|
|
10
|
-
* @param current
|
|
11
|
-
* @param globalVariables
|
|
12
|
-
* @returns
|
|
13
|
-
*/
|
|
14
|
-
export declare function temporaryCreateAvmExecutionEnvironment(current: PublicExecution, globalVariables: GlobalVariables): AvmExecutionEnvironment;
|
|
15
|
-
/** Temporary Method
|
|
16
|
-
*
|
|
17
|
-
* Convert the result of an AVM contract call to a PublicExecutionResult for the public kernel
|
|
18
|
-
*
|
|
19
|
-
* @param execution
|
|
20
|
-
* @param newWorldState
|
|
21
|
-
* @param result
|
|
22
|
-
* @returns
|
|
23
|
-
*/
|
|
24
|
-
export declare function temporaryConvertAvmResults(execution: PublicExecution, newWorldState: JournalData, result: AvmContractCallResults): PublicExecutionResult;
|
|
25
|
-
//# sourceMappingURL=temporary_executor_migration.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"temporary_executor_migration.d.ts","sourceRoot":"","sources":["../../src/avm/temporary_executor_migration.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,eAAe,EAKrB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,eAAe,GAC/B,uBAAuB,CAkBzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,eAAe,EAC1B,aAAa,EAAE,WAAW,EAC1B,MAAM,EAAE,sBAAsB,GAC7B,qBAAqB,CA0DvB"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
// All code in this file needs to die once the public executor is phased out.
|
|
2
|
-
import { UnencryptedFunctionL2Logs } from '@aztec/circuit-types';
|
|
3
|
-
import { ContractStorageRead, ContractStorageUpdateRequest, L2ToL1Message, SideEffect, } from '@aztec/circuits.js';
|
|
4
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
5
|
-
import { createSimulationError } from '../common/errors.js';
|
|
6
|
-
import { AvmExecutionEnvironment } from './avm_execution_environment.js';
|
|
7
|
-
/** Temporary Method
|
|
8
|
-
*
|
|
9
|
-
* Convert a PublicExecution(Environment) object to an AvmExecutionEnvironment
|
|
10
|
-
*
|
|
11
|
-
* @param current
|
|
12
|
-
* @param globalVariables
|
|
13
|
-
* @returns
|
|
14
|
-
*/
|
|
15
|
-
export function temporaryCreateAvmExecutionEnvironment(current, globalVariables) {
|
|
16
|
-
// Function selector is included temporarily until noir codegens public contract bytecode in a single blob
|
|
17
|
-
return new AvmExecutionEnvironment(current.contractAddress, current.callContext.storageContractAddress, current.callContext.msgSender, // TODO: origin is not available
|
|
18
|
-
current.callContext.msgSender, current.callContext.portalContractAddress,
|
|
19
|
-
/*feePerL1Gas=*/ Fr.zero(),
|
|
20
|
-
/*feePerL2Gas=*/ Fr.zero(),
|
|
21
|
-
/*feePerDaGas=*/ Fr.zero(),
|
|
22
|
-
/*contractCallDepth=*/ Fr.zero(), globalVariables, current.callContext.isStaticCall, current.callContext.isDelegateCall, current.args, current.functionData.selector);
|
|
23
|
-
}
|
|
24
|
-
/** Temporary Method
|
|
25
|
-
*
|
|
26
|
-
* Convert the result of an AVM contract call to a PublicExecutionResult for the public kernel
|
|
27
|
-
*
|
|
28
|
-
* @param execution
|
|
29
|
-
* @param newWorldState
|
|
30
|
-
* @param result
|
|
31
|
-
* @returns
|
|
32
|
-
*/
|
|
33
|
-
export function temporaryConvertAvmResults(execution, newWorldState, result) {
|
|
34
|
-
const newNoteHashes = newWorldState.newNoteHashes.map(noteHash => new SideEffect(noteHash, Fr.zero()));
|
|
35
|
-
const contractStorageReads = [];
|
|
36
|
-
const reduceStorageReadRequests = (contractAddress, storageReads) => {
|
|
37
|
-
return storageReads.forEach((innerArray, key) => {
|
|
38
|
-
innerArray.forEach(value => {
|
|
39
|
-
contractStorageReads.push(new ContractStorageRead(new Fr(key), new Fr(value), 0));
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
newWorldState.storageReads.forEach((storageMap, address) => reduceStorageReadRequests(address, storageMap));
|
|
44
|
-
const contractStorageUpdateRequests = [];
|
|
45
|
-
const reduceStorageUpdateRequests = (contractAddress, storageUpdateRequests) => {
|
|
46
|
-
return storageUpdateRequests.forEach((innerArray, key) => {
|
|
47
|
-
innerArray.forEach(value => {
|
|
48
|
-
contractStorageUpdateRequests.push(new ContractStorageUpdateRequest(new Fr(key), new Fr(value), 0));
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
newWorldState.storageWrites.forEach((storageMap, address) => reduceStorageUpdateRequests(address, storageMap));
|
|
53
|
-
const returnValues = result.output;
|
|
54
|
-
// TODO(follow up in pr tree): NOT SUPPORTED YET, make sure hashing and log resolution is done correctly
|
|
55
|
-
// Disabled.
|
|
56
|
-
const nestedExecutions = [];
|
|
57
|
-
const nullifierReadRequests = [];
|
|
58
|
-
const nullifierNonExistentReadRequests = [];
|
|
59
|
-
const newNullifiers = [];
|
|
60
|
-
const unencryptedLogs = UnencryptedFunctionL2Logs.empty();
|
|
61
|
-
const newL2ToL1Messages = newWorldState.newL1Messages.map(() => L2ToL1Message.empty());
|
|
62
|
-
// TODO keep track of side effect counters
|
|
63
|
-
const startSideEffectCounter = Fr.ZERO;
|
|
64
|
-
const endSideEffectCounter = Fr.ZERO;
|
|
65
|
-
return {
|
|
66
|
-
execution,
|
|
67
|
-
nullifierReadRequests,
|
|
68
|
-
nullifierNonExistentReadRequests,
|
|
69
|
-
newNoteHashes,
|
|
70
|
-
newL2ToL1Messages,
|
|
71
|
-
startSideEffectCounter,
|
|
72
|
-
endSideEffectCounter,
|
|
73
|
-
newNullifiers,
|
|
74
|
-
contractStorageReads,
|
|
75
|
-
contractStorageUpdateRequests,
|
|
76
|
-
returnValues,
|
|
77
|
-
nestedExecutions,
|
|
78
|
-
unencryptedLogs,
|
|
79
|
-
reverted: result.reverted,
|
|
80
|
-
revertReason: result.revertReason ? createSimulationError(result.revertReason) : undefined,
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG9yYXJ5X2V4ZWN1dG9yX21pZ3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vdGVtcG9yYXJ5X2V4ZWN1dG9yX21pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2RUFBNkU7QUFDN0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQiw0QkFBNEIsRUFFNUIsYUFBYSxFQUViLFVBQVUsR0FFWCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUl6RTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLHNDQUFzQyxDQUNwRCxPQUF3QixFQUN4QixlQUFnQztJQUVoQywwR0FBMEc7SUFDMUcsT0FBTyxJQUFJLHVCQUF1QixDQUNoQyxPQUFPLENBQUMsZUFBZSxFQUN2QixPQUFPLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUMxQyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxnQ0FBZ0M7SUFDL0QsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQzdCLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQXFCO0lBQ3pDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUU7SUFDMUIsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRTtJQUMxQixnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFO0lBQzFCLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFDaEMsZUFBZSxFQUNmLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUNoQyxPQUFPLENBQUMsV0FBVyxDQUFD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
|