@aztec/simulator 0.32.0 → 0.33.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.d.ts +5 -5
- package/dest/acvm/acvm.d.ts.map +1 -1
- package/dest/acvm/acvm_types.d.ts +1 -1
- package/dest/acvm/acvm_types.d.ts.map +1 -1
- package/dest/acvm/deserialize.d.ts +1 -1
- package/dest/acvm/deserialize.d.ts.map +1 -1
- package/dest/acvm/oracle/index.d.ts +1 -2
- 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 +2 -2
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +2 -3
- package/dest/acvm/oracle/typed_oracle.d.ts +6 -6
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/serialize.d.ts +4 -4
- package/dest/acvm/serialize.d.ts.map +1 -1
- package/dest/acvm/serialize.js +1 -1
- package/dest/avm/avm_context.d.ts +8 -18
- 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 -4
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +1 -1
- 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 +5 -3
- 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 +54 -2
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_memory_types.js +95 -2
- package/dest/avm/avm_message_call_result.d.ts +1 -1
- package/dest/avm/avm_message_call_result.d.ts.map +1 -1
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +10 -8
- package/dest/avm/errors.d.ts +1 -1
- package/dest/avm/errors.d.ts.map +1 -1
- package/dest/avm/fixtures/index.d.ts +1 -1
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +2 -2
- package/dest/avm/journal/host_storage.d.ts +1 -1
- package/dest/avm/journal/host_storage.d.ts.map +1 -1
- package/dest/avm/journal/journal.d.ts +2 -2
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/trace.d.ts +1 -1
- package/dest/avm/journal/trace.d.ts.map +1 -1
- package/dest/avm/journal/trace_types.d.ts +1 -1
- 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 +44 -16
- 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 +31 -34
- 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 +50 -68
- package/dest/avm/opcodes/hashing.d.ts +3 -2
- 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 +12 -17
- 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/avm/temporary_executor_migration.d.ts +6 -4
- package/dest/avm/temporary_executor_migration.d.ts.map +1 -1
- package/dest/avm/temporary_executor_migration.js +14 -3
- package/dest/client/client_execution_context.d.ts +11 -11
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +1 -1
- package/dest/client/db_oracle.d.ts +9 -9
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/db_oracle.js +1 -1
- package/dest/client/execution_note_cache.d.ts +2 -2
- package/dest/client/execution_note_cache.d.ts.map +1 -1
- package/dest/client/execution_result.d.ts +5 -5
- package/dest/client/execution_result.d.ts.map +1 -1
- package/dest/client/execution_result.js +1 -1
- package/dest/client/pick_notes.d.ts +1 -1
- package/dest/client/pick_notes.d.ts.map +1 -1
- package/dest/client/pick_notes.js +1 -1
- package/dest/client/private_execution.d.ts +5 -5
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +6 -2
- package/dest/client/simulator.d.ts +6 -6
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +1 -1
- package/dest/client/unconstrained_execution.d.ts +5 -5
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +1 -1
- package/dest/client/view_data_oracle.d.ts +6 -6
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +1 -1
- package/dest/common/errors.d.ts +1 -1
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/errors.js +1 -1
- package/dest/public/db.d.ts +6 -6
- package/dest/public/db.d.ts.map +1 -1
- package/dest/public/execution.d.ts +2 -2
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/executor.d.ts +13 -5
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +59 -20
- 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 +7 -7
- package/dest/public/public_execution_context.d.ts.map +1 -1
- package/dest/public/public_execution_context.js +3 -3
- package/dest/public/state_actions.d.ts +2 -2
- package/dest/public/state_actions.d.ts.map +1 -1
- package/dest/simulator/acvm_native.d.ts +3 -3
- package/dest/simulator/acvm_native.d.ts.map +1 -1
- package/dest/simulator/acvm_wasm.d.ts +3 -3
- package/dest/simulator/acvm_wasm.d.ts.map +1 -1
- package/dest/simulator/acvm_wasm.js +2 -2
- package/dest/simulator/simulation_provider.d.ts +2 -2
- package/dest/simulator/simulation_provider.d.ts.map +1 -1
- package/dest/test/utils.d.ts +1 -1
- package/dest/test/utils.d.ts.map +1 -1
- package/dest/test/utils.js +1 -1
- package/dest/utils.d.ts +1 -1
- package/dest/utils.d.ts.map +1 -1
- package/package.json +15 -9
- package/src/acvm/acvm.ts +8 -8
- package/src/acvm/acvm_types.ts +1 -1
- package/src/acvm/deserialize.ts +1 -1
- package/src/acvm/oracle/index.ts +1 -2
- package/src/acvm/oracle/oracle.ts +3 -4
- package/src/acvm/oracle/typed_oracle.ts +18 -18
- package/src/acvm/serialize.ts +4 -4
- package/src/avm/avm_context.ts +15 -37
- package/src/avm/avm_execution_environment.ts +4 -4
- package/src/avm/{avm_gas_cost.ts → avm_gas.ts} +75 -21
- package/src/avm/avm_machine_state.ts +10 -3
- package/src/avm/avm_memory_types.ts +131 -3
- package/src/avm/avm_message_call_result.ts +1 -1
- package/src/avm/avm_simulator.ts +10 -8
- package/src/avm/errors.ts +1 -1
- package/src/avm/fixtures/index.ts +6 -1
- package/src/avm/journal/host_storage.ts +1 -1
- package/src/avm/journal/journal.ts +2 -2
- package/src/avm/journal/trace.ts +1 -1
- package/src/avm/journal/trace_types.ts +1 -1
- package/src/avm/opcodes/accrued_substate.ts +57 -22
- package/src/avm/opcodes/addressing_mode.ts +8 -3
- package/src/avm/opcodes/arithmetic.ts +32 -22
- package/src/avm/opcodes/bitwise.ts +50 -84
- 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 +24 -6
- package/src/avm/opcodes/environment_getters.ts +36 -45
- package/src/avm/opcodes/external_calls.ts +65 -84
- package/src/avm/opcodes/hashing.ts +46 -23
- package/src/avm/opcodes/index.ts +1 -0
- package/src/avm/opcodes/instruction.ts +16 -28
- 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/avm/temporary_executor_migration.ts +20 -6
- package/src/client/client_execution_context.ts +15 -15
- package/src/client/db_oracle.ts +16 -10
- package/src/client/execution_note_cache.ts +2 -2
- package/src/client/execution_result.ts +9 -5
- package/src/client/pick_notes.ts +1 -1
- package/src/client/private_execution.ts +12 -6
- package/src/client/simulator.ts +8 -8
- package/src/client/unconstrained_execution.ts +5 -5
- package/src/client/view_data_oracle.ts +11 -11
- package/src/common/errors.ts +1 -1
- package/src/public/db.ts +6 -6
- package/src/public/execution.ts +10 -10
- package/src/public/executor.ts +78 -25
- package/src/public/index.ts +2 -2
- package/src/public/public_execution_context.ts +17 -7
- package/src/public/state_actions.ts +2 -2
- package/src/simulator/acvm_native.ts +3 -3
- package/src/simulator/acvm_wasm.ts +8 -4
- package/src/simulator/simulation_provider.ts +2 -2
- package/src/test/utils.ts +1 -1
- package/src/utils.ts +1 -1
- 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/src/acvm/oracle/debug.ts +0 -109
|
@@ -1,75 +1,72 @@
|
|
|
1
|
-
import { Fr } from '@aztec/circuits.js';
|
|
1
|
+
import { type Fr } from '@aztec/circuits.js';
|
|
2
2
|
import type { AvmContext } from '../avm_context.js';
|
|
3
3
|
import type { AvmExecutionEnvironment } from '../avm_execution_environment.js';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
protected
|
|
9
|
-
|
|
10
|
-
constructor(indirect: number, dstOffset: number);
|
|
11
|
-
execute(context: AvmContext): Promise<void>;
|
|
12
|
-
protected abstract getIt(env: AvmExecutionEnvironment): Fr | number | bigint;
|
|
4
|
+
import { type MemoryValue } from '../avm_memory_types.js';
|
|
5
|
+
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
6
|
+
import { GetterInstruction } from './instruction_impl.js';
|
|
7
|
+
declare abstract class EnvironmentGetterInstruction extends GetterInstruction {
|
|
8
|
+
protected getValue(context: AvmContext): MemoryValue;
|
|
9
|
+
protected abstract getEnvironmentValue(env: AvmExecutionEnvironment): Fr | number | bigint;
|
|
13
10
|
}
|
|
14
|
-
export declare class Address extends
|
|
11
|
+
export declare class Address extends EnvironmentGetterInstruction {
|
|
15
12
|
static type: string;
|
|
16
13
|
static readonly opcode: Opcode;
|
|
17
|
-
protected
|
|
14
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): import("@aztec/circuits.js").AztecAddress;
|
|
18
15
|
}
|
|
19
|
-
export declare class StorageAddress extends
|
|
16
|
+
export declare class StorageAddress extends EnvironmentGetterInstruction {
|
|
20
17
|
static type: string;
|
|
21
18
|
static readonly opcode: Opcode;
|
|
22
|
-
protected
|
|
19
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): import("@aztec/circuits.js").AztecAddress;
|
|
23
20
|
}
|
|
24
|
-
export declare class Sender extends
|
|
21
|
+
export declare class Sender extends EnvironmentGetterInstruction {
|
|
25
22
|
static type: string;
|
|
26
23
|
static readonly opcode: Opcode;
|
|
27
|
-
protected
|
|
24
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): import("@aztec/circuits.js").AztecAddress;
|
|
28
25
|
}
|
|
29
|
-
export declare class Origin extends
|
|
26
|
+
export declare class Origin extends EnvironmentGetterInstruction {
|
|
30
27
|
static type: string;
|
|
31
28
|
static readonly opcode: Opcode;
|
|
32
|
-
protected
|
|
29
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): import("@aztec/circuits.js").AztecAddress;
|
|
33
30
|
}
|
|
34
|
-
export declare class FeePerL1Gas extends
|
|
31
|
+
export declare class FeePerL1Gas extends EnvironmentGetterInstruction {
|
|
35
32
|
static type: string;
|
|
36
33
|
static readonly opcode: Opcode;
|
|
37
|
-
protected
|
|
34
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
|
|
38
35
|
}
|
|
39
|
-
export declare class FeePerL2Gas extends
|
|
36
|
+
export declare class FeePerL2Gas extends EnvironmentGetterInstruction {
|
|
40
37
|
static type: string;
|
|
41
38
|
static readonly opcode: Opcode;
|
|
42
|
-
protected
|
|
39
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
|
|
43
40
|
}
|
|
44
|
-
export declare class FeePerDAGas extends
|
|
41
|
+
export declare class FeePerDAGas extends EnvironmentGetterInstruction {
|
|
45
42
|
static type: string;
|
|
46
43
|
static readonly opcode: Opcode;
|
|
47
|
-
protected
|
|
44
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
|
|
48
45
|
}
|
|
49
|
-
export declare class Portal extends
|
|
46
|
+
export declare class Portal extends EnvironmentGetterInstruction {
|
|
50
47
|
static type: string;
|
|
51
48
|
static readonly opcode: Opcode;
|
|
52
|
-
protected
|
|
49
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
|
|
53
50
|
}
|
|
54
|
-
export declare class ChainId extends
|
|
51
|
+
export declare class ChainId extends EnvironmentGetterInstruction {
|
|
55
52
|
static type: string;
|
|
56
53
|
static readonly opcode: Opcode;
|
|
57
|
-
protected
|
|
54
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
|
|
58
55
|
}
|
|
59
|
-
export declare class Version extends
|
|
56
|
+
export declare class Version extends EnvironmentGetterInstruction {
|
|
60
57
|
static type: string;
|
|
61
58
|
static readonly opcode: Opcode;
|
|
62
|
-
protected
|
|
59
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
|
|
63
60
|
}
|
|
64
|
-
export declare class BlockNumber extends
|
|
61
|
+
export declare class BlockNumber extends EnvironmentGetterInstruction {
|
|
65
62
|
static type: string;
|
|
66
63
|
static readonly opcode: Opcode;
|
|
67
|
-
protected
|
|
64
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
|
|
68
65
|
}
|
|
69
|
-
export declare class Timestamp extends
|
|
66
|
+
export declare class Timestamp extends EnvironmentGetterInstruction {
|
|
70
67
|
static type: string;
|
|
71
68
|
static readonly opcode: Opcode;
|
|
72
|
-
protected
|
|
69
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Fr;
|
|
73
70
|
}
|
|
74
71
|
export {};
|
|
75
72
|
//# sourceMappingURL=environment_getters.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment_getters.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/environment_getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"environment_getters.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/environment_getters.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,105 +1,96 @@
|
|
|
1
1
|
import { Field } from '../avm_memory_types.js';
|
|
2
|
-
import { Opcode
|
|
3
|
-
import {
|
|
4
|
-
class
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
this.indirect = indirect;
|
|
8
|
-
this.dstOffset = dstOffset;
|
|
9
|
-
}
|
|
10
|
-
async execute(context) {
|
|
11
|
-
const res = new Field(this.getIt(context.environment));
|
|
12
|
-
context.machineState.memory.set(this.dstOffset, res);
|
|
13
|
-
context.machineState.incrementPc();
|
|
2
|
+
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
3
|
+
import { GetterInstruction } from './instruction_impl.js';
|
|
4
|
+
class EnvironmentGetterInstruction extends GetterInstruction {
|
|
5
|
+
getValue(context) {
|
|
6
|
+
return new Field(this.getEnvironmentValue(context.environment));
|
|
14
7
|
}
|
|
15
8
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export class Address extends GetterInstruction {
|
|
19
|
-
getIt(env) {
|
|
9
|
+
export class Address extends EnvironmentGetterInstruction {
|
|
10
|
+
getEnvironmentValue(env) {
|
|
20
11
|
return env.address;
|
|
21
12
|
}
|
|
22
13
|
}
|
|
23
14
|
Address.type = 'ADDRESS';
|
|
24
15
|
Address.opcode = Opcode.ADDRESS;
|
|
25
|
-
export class StorageAddress extends
|
|
26
|
-
|
|
16
|
+
export class StorageAddress extends EnvironmentGetterInstruction {
|
|
17
|
+
getEnvironmentValue(env) {
|
|
27
18
|
return env.storageAddress;
|
|
28
19
|
}
|
|
29
20
|
}
|
|
30
21
|
StorageAddress.type = 'STORAGEADDRESS';
|
|
31
22
|
StorageAddress.opcode = Opcode.STORAGEADDRESS;
|
|
32
|
-
export class Sender extends
|
|
33
|
-
|
|
23
|
+
export class Sender extends EnvironmentGetterInstruction {
|
|
24
|
+
getEnvironmentValue(env) {
|
|
34
25
|
return env.sender;
|
|
35
26
|
}
|
|
36
27
|
}
|
|
37
28
|
Sender.type = 'SENDER';
|
|
38
29
|
Sender.opcode = Opcode.SENDER;
|
|
39
|
-
export class Origin extends
|
|
40
|
-
|
|
30
|
+
export class Origin extends EnvironmentGetterInstruction {
|
|
31
|
+
getEnvironmentValue(env) {
|
|
41
32
|
return env.origin;
|
|
42
33
|
}
|
|
43
34
|
}
|
|
44
35
|
Origin.type = 'ORIGIN';
|
|
45
36
|
Origin.opcode = Opcode.ORIGIN;
|
|
46
|
-
export class FeePerL1Gas extends
|
|
47
|
-
|
|
37
|
+
export class FeePerL1Gas extends EnvironmentGetterInstruction {
|
|
38
|
+
getEnvironmentValue(env) {
|
|
48
39
|
return env.feePerL1Gas;
|
|
49
40
|
}
|
|
50
41
|
}
|
|
51
42
|
FeePerL1Gas.type = 'FEEPERL1GAS';
|
|
52
43
|
FeePerL1Gas.opcode = Opcode.FEEPERL1GAS;
|
|
53
|
-
export class FeePerL2Gas extends
|
|
54
|
-
|
|
44
|
+
export class FeePerL2Gas extends EnvironmentGetterInstruction {
|
|
45
|
+
getEnvironmentValue(env) {
|
|
55
46
|
return env.feePerL2Gas;
|
|
56
47
|
}
|
|
57
48
|
}
|
|
58
49
|
FeePerL2Gas.type = 'FEEPERL2GAS';
|
|
59
50
|
FeePerL2Gas.opcode = Opcode.FEEPERL2GAS;
|
|
60
|
-
export class FeePerDAGas extends
|
|
61
|
-
|
|
51
|
+
export class FeePerDAGas extends EnvironmentGetterInstruction {
|
|
52
|
+
getEnvironmentValue(env) {
|
|
62
53
|
return env.feePerDaGas;
|
|
63
54
|
}
|
|
64
55
|
}
|
|
65
56
|
FeePerDAGas.type = 'FEEPERDAGAS';
|
|
66
57
|
FeePerDAGas.opcode = Opcode.FEEPERDAGAS;
|
|
67
|
-
export class Portal extends
|
|
68
|
-
|
|
58
|
+
export class Portal extends EnvironmentGetterInstruction {
|
|
59
|
+
getEnvironmentValue(env) {
|
|
69
60
|
return env.portal.toField();
|
|
70
61
|
}
|
|
71
62
|
}
|
|
72
63
|
Portal.type = 'PORTAL';
|
|
73
64
|
Portal.opcode = Opcode.PORTAL;
|
|
74
|
-
export class ChainId extends
|
|
75
|
-
|
|
65
|
+
export class ChainId extends EnvironmentGetterInstruction {
|
|
66
|
+
getEnvironmentValue(env) {
|
|
76
67
|
return env.globals.chainId;
|
|
77
68
|
}
|
|
78
69
|
}
|
|
79
70
|
ChainId.type = 'CHAINID';
|
|
80
71
|
ChainId.opcode = Opcode.CHAINID;
|
|
81
|
-
export class Version extends
|
|
82
|
-
|
|
72
|
+
export class Version extends EnvironmentGetterInstruction {
|
|
73
|
+
getEnvironmentValue(env) {
|
|
83
74
|
return env.globals.version;
|
|
84
75
|
}
|
|
85
76
|
}
|
|
86
77
|
Version.type = 'VERSION';
|
|
87
78
|
Version.opcode = Opcode.VERSION;
|
|
88
|
-
export class BlockNumber extends
|
|
89
|
-
|
|
79
|
+
export class BlockNumber extends EnvironmentGetterInstruction {
|
|
80
|
+
getEnvironmentValue(env) {
|
|
90
81
|
return env.globals.blockNumber;
|
|
91
82
|
}
|
|
92
83
|
}
|
|
93
84
|
BlockNumber.type = 'BLOCKNUMBER';
|
|
94
85
|
BlockNumber.opcode = Opcode.BLOCKNUMBER;
|
|
95
|
-
export class Timestamp extends
|
|
96
|
-
|
|
86
|
+
export class Timestamp extends EnvironmentGetterInstruction {
|
|
87
|
+
getEnvironmentValue(env) {
|
|
97
88
|
return env.globals.timestamp;
|
|
98
89
|
}
|
|
99
90
|
}
|
|
100
91
|
Timestamp.type = 'TIMESTAMP';
|
|
101
92
|
Timestamp.opcode = Opcode.TIMESTAMP;
|
|
102
|
-
// export class Coinbase extends
|
|
93
|
+
// export class Coinbase extends EnvironmentGetterInstruction {
|
|
103
94
|
// static type: string = 'COINBASE';
|
|
104
95
|
// static numberOfOperands = 1;
|
|
105
96
|
// constructor(private destOffset: number) {
|
|
@@ -112,7 +103,7 @@ Timestamp.opcode = Opcode.TIMESTAMP;
|
|
|
112
103
|
// }
|
|
113
104
|
// }
|
|
114
105
|
// // TODO: are these even needed within the block? (both block gas limit variables - why does the execution env care?)
|
|
115
|
-
// export class BlockL1GasLimit extends
|
|
106
|
+
// export class BlockL1GasLimit extends EnvironmentGetterInstruction {
|
|
116
107
|
// static type: string = 'BLOCKL1GASLIMIT';
|
|
117
108
|
// static numberOfOperands = 1;
|
|
118
109
|
// constructor(private destOffset: number) {
|
|
@@ -124,7 +115,7 @@ Timestamp.opcode = Opcode.TIMESTAMP;
|
|
|
124
115
|
// this.incrementPc(machineState);
|
|
125
116
|
// }
|
|
126
117
|
// }
|
|
127
|
-
// export class BlockL2GasLimit extends
|
|
118
|
+
// export class BlockL2GasLimit extends EnvironmentGetterInstruction {
|
|
128
119
|
// static type: string = 'BLOCKL2GASLIMIT';
|
|
129
120
|
// static numberOfOperands = 1;
|
|
130
121
|
// constructor(private destOffset: number) {
|
|
@@ -136,7 +127,7 @@ Timestamp.opcode = Opcode.TIMESTAMP;
|
|
|
136
127
|
// this.incrementPc(machineState);
|
|
137
128
|
// }
|
|
138
129
|
// }
|
|
139
|
-
// export class BlockDAGasLimit extends
|
|
130
|
+
// export class BlockDAGasLimit extends EnvironmentGetterInstruction {
|
|
140
131
|
// static type: string = 'BLOCKDAGASLIMIT';
|
|
141
132
|
// static numberOfOperands = 1;
|
|
142
133
|
// constructor(private destOffset: number) {
|
|
@@ -148,4 +139,4 @@ Timestamp.opcode = Opcode.TIMESTAMP;
|
|
|
148
139
|
// this.incrementPc(machineState);
|
|
149
140
|
// }
|
|
150
141
|
// }
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRfZ2V0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9lbnZpcm9ubWVudF9nZXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxLQUFLLEVBQW9CLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE1BQWUsNEJBQTZCLFNBQVEsaUJBQWlCO0lBQ3pELFFBQVEsQ0FBQyxPQUFtQjtRQUNwQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBR0Y7QUFFRCxNQUFNLE9BQU8sT0FBUSxTQUFRLDRCQUE0QjtJQUk3QyxtQkFBbUIsQ0FBQyxHQUE0QjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDckIsQ0FBQzs7QUFMTSxZQUFJLEdBQVcsU0FBUyxDQUFDO0FBQ2hCLGNBQU0sR0FBVyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBT2xELE1BQU0sT0FBTyxjQUFlLFNBQVEsNEJBQTRCO0lBSXBELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQztJQUM1QixDQUFDOztBQUxNLG1CQUFJLEdBQVcsZ0JBQWdCLENBQUM7QUFDdkIscUJBQU0sR0FBVyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBT3pELE1BQU0sT0FBTyxNQUFPLFNBQVEsNEJBQTRCO0lBSTVDLG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNwQixDQUFDOztBQUxNLFdBQUksR0FBVyxRQUFRLENBQUM7QUFDZixhQUFNLEdBQVcsTUFBTSxDQUFDLE1B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
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { AvmContext } from '../avm_context.js';
|
|
2
2
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
3
3
|
import { Instruction } from './instruction.js';
|
|
4
|
-
|
|
4
|
+
declare abstract class ExternalCall extends Instruction {
|
|
5
5
|
private indirect;
|
|
6
|
-
private
|
|
6
|
+
private gasOffset;
|
|
7
7
|
private addrOffset;
|
|
8
8
|
private argsOffset;
|
|
9
9
|
private argsSize;
|
|
@@ -11,27 +11,20 @@ export declare class Call extends Instruction {
|
|
|
11
11
|
private retSize;
|
|
12
12
|
private successOffset;
|
|
13
13
|
private temporaryFunctionSelectorOffset;
|
|
14
|
-
static type: string;
|
|
15
|
-
static readonly opcode: Opcode;
|
|
16
14
|
static readonly wireFormat: OperandType[];
|
|
17
|
-
constructor(indirect: number,
|
|
15
|
+
constructor(indirect: number, gasOffset: number, addrOffset: number, argsOffset: number, argsSize: number, retOffset: number, retSize: number, successOffset: number, temporaryFunctionSelectorOffset: number);
|
|
18
16
|
execute(context: AvmContext): Promise<void>;
|
|
17
|
+
abstract get type(): 'CALL' | 'STATICCALL';
|
|
19
18
|
}
|
|
20
|
-
export declare class
|
|
21
|
-
|
|
22
|
-
private _gasOffset;
|
|
23
|
-
private addrOffset;
|
|
24
|
-
private argsOffset;
|
|
25
|
-
private argsSize;
|
|
26
|
-
private retOffset;
|
|
27
|
-
private retSize;
|
|
28
|
-
private successOffset;
|
|
29
|
-
private temporaryFunctionSelectorOffset;
|
|
30
|
-
static type: string;
|
|
19
|
+
export declare class Call extends ExternalCall {
|
|
20
|
+
static type: "CALL";
|
|
31
21
|
static readonly opcode: Opcode;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
22
|
+
get type(): "CALL";
|
|
23
|
+
}
|
|
24
|
+
export declare class StaticCall extends ExternalCall {
|
|
25
|
+
static type: "STATICCALL";
|
|
26
|
+
static readonly opcode: Opcode;
|
|
27
|
+
get type(): "STATICCALL";
|
|
35
28
|
}
|
|
36
29
|
export declare class Return extends Instruction {
|
|
37
30
|
private indirect;
|
|
@@ -53,4 +46,5 @@ export declare class Revert extends Instruction {
|
|
|
53
46
|
constructor(indirect: number, returnOffset: number, retSize: number);
|
|
54
47
|
execute(context: AvmContext): Promise<void>;
|
|
55
48
|
}
|
|
49
|
+
export {};
|
|
56
50
|
//# sourceMappingURL=external_calls.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external_calls.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/external_calls.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"external_calls.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/external_calls.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,uBAAe,YAAa,SAAQ,WAAW;IAiB3C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,+BAA+B;IA1BzC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAYvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EAIrB,+BAA+B,EAAE,MAAM;IAKpC,OAAO,CAAC,OAAO,EAAE,UAAU;IAyDxC,aAAoB,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC;CACnD;AAED,qBAAa,IAAK,SAAQ,YAAY;IACpC,MAAM,CAAC,IAAI,SAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAe;IAE7C,IAAW,IAAI,WAEd;CACF;AAED,qBAAa,UAAW,SAAQ,YAAY;IAC1C,MAAM,CAAC,IAAI,eAAyB;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAqB;IAEnD,IAAW,IAAI,iBAEd;CACF;AAED,qBAAa,MAAO,SAAQ,WAAW;IAWzB,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,YAAY;IAAU,OAAO,CAAC,QAAQ;IAVpF,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAE/C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAEkB,QAAQ,EAAE,MAAM,EAAU,YAAY,EAAE,MAAM,EAAU,QAAQ,EAAE,MAAM;IAI/E,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAYzD;AAED,qBAAa,MAAO,SAAQ,WAAW;IAWzB,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,YAAY;IAAU,OAAO,CAAC,OAAO;IAVnF,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAE/C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAEkB,QAAQ,EAAE,MAAM,EAAU,YAAY,EAAE,MAAM,EAAU,OAAO,EAAE,MAAM;IAI9E,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAYzD"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { FunctionSelector } from '@aztec/circuits.js';
|
|
2
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
|
+
import { gasLeftToGas, sumGas } from '../avm_gas.js';
|
|
2
4
|
import { Field, Uint8 } from '../avm_memory_types.js';
|
|
3
5
|
import { AvmSimulator } from '../avm_simulator.js';
|
|
4
6
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
5
7
|
import { Addressing } from './addressing_mode.js';
|
|
6
8
|
import { Instruction } from './instruction.js';
|
|
7
|
-
|
|
8
|
-
constructor(indirect,
|
|
9
|
+
class ExternalCall extends Instruction {
|
|
10
|
+
constructor(indirect, gasOffset /* Unused due to no formal gas implementation at this moment */, addrOffset, argsOffset, argsSize, retOffset, retSize, successOffset,
|
|
9
11
|
// Function selector is temporary since eventually public contract bytecode will be one blob
|
|
10
12
|
// containing all functions, and function selector will become an application-level mechanism
|
|
11
13
|
// (e.g. first few bytes of calldata + compiler-generated jump table)
|
|
12
14
|
temporaryFunctionSelectorOffset) {
|
|
13
15
|
super();
|
|
14
16
|
this.indirect = indirect;
|
|
15
|
-
this.
|
|
17
|
+
this.gasOffset = gasOffset;
|
|
16
18
|
this.addrOffset = addrOffset;
|
|
17
19
|
this.argsOffset = argsOffset;
|
|
18
20
|
this.argsSize = argsSize;
|
|
@@ -21,34 +23,44 @@ export class Call extends Instruction {
|
|
|
21
23
|
this.successOffset = successOffset;
|
|
22
24
|
this.temporaryFunctionSelectorOffset = temporaryFunctionSelectorOffset;
|
|
23
25
|
}
|
|
24
|
-
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/3992): there is no concept of remaining / available gas at this moment
|
|
25
26
|
async execute(context) {
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const
|
|
27
|
+
const memory = context.machineState.memory.track(this.type);
|
|
28
|
+
const [gasOffset, addrOffset, argsOffset, retOffset, successOffset] = Addressing.fromWire(this.indirect).resolve([this.gasOffset, this.addrOffset, this.argsOffset, this.retOffset, this.successOffset], memory);
|
|
29
|
+
const callAddress = memory.getAs(addrOffset);
|
|
30
|
+
const calldata = memory.getSlice(argsOffset, this.argsSize).map(f => f.toFr());
|
|
31
|
+
const l1Gas = memory.get(gasOffset).toNumber();
|
|
32
|
+
const l2Gas = memory.getAs(gasOffset + 1).toNumber();
|
|
33
|
+
const daGas = memory.getAs(gasOffset + 2).toNumber();
|
|
34
|
+
const functionSelector = memory.getAs(this.temporaryFunctionSelectorOffset).toFr();
|
|
35
|
+
const allocatedGas = { l1Gas, l2Gas, daGas };
|
|
36
|
+
const memoryOperations = { reads: this.argsSize + 5, writes: 1 + this.retSize, indirect: this.indirect };
|
|
37
|
+
const totalGas = sumGas(this.gasCost(memoryOperations), allocatedGas);
|
|
38
|
+
context.machineState.consumeGas(totalGas);
|
|
39
|
+
const nestedContext = context.createNestedContractCallContext(callAddress.toFr(), calldata, allocatedGas, this.type, FunctionSelector.fromField(functionSelector));
|
|
31
40
|
const nestedCallResults = await new AvmSimulator(nestedContext).execute();
|
|
32
41
|
const success = !nestedCallResults.reverted;
|
|
33
|
-
// We only take as much data as was specified in the return size
|
|
42
|
+
// We only take as much data as was specified in the return size and pad with zeroes if the return data is smaller
|
|
43
|
+
// than the specified size in order to prevent that memory to be left with garbage
|
|
34
44
|
const returnData = nestedCallResults.output.slice(0, this.retSize);
|
|
35
|
-
const convertedReturnData = returnData.map(f => new Field(f));
|
|
45
|
+
const convertedReturnData = padArrayEnd(returnData.map(f => new Field(f)), new Field(0), this.retSize);
|
|
36
46
|
// Write our return data into memory
|
|
37
|
-
|
|
38
|
-
|
|
47
|
+
memory.set(successOffset, new Uint8(success ? 1 : 0));
|
|
48
|
+
memory.setSlice(retOffset, convertedReturnData);
|
|
49
|
+
// Refund unused gas
|
|
50
|
+
context.machineState.refundGas(gasLeftToGas(nestedContext.machineState));
|
|
51
|
+
// TODO: Should we merge the changes from a nested call in the case of a STATIC call?
|
|
39
52
|
if (success) {
|
|
40
53
|
context.persistableState.acceptNestedCallState(nestedContext.persistableState);
|
|
41
54
|
}
|
|
42
55
|
else {
|
|
43
56
|
context.persistableState.rejectNestedCallState(nestedContext.persistableState);
|
|
44
57
|
}
|
|
58
|
+
memory.assert(memoryOperations);
|
|
45
59
|
context.machineState.incrementPc();
|
|
46
60
|
}
|
|
47
61
|
}
|
|
48
|
-
Call.type = 'CALL';
|
|
49
|
-
Call.opcode = Opcode.CALL;
|
|
50
62
|
// Informs (de)serialization. See Instruction.deserialize.
|
|
51
|
-
|
|
63
|
+
ExternalCall.wireFormat = [
|
|
52
64
|
OperandType.UINT8,
|
|
53
65
|
OperandType.UINT8,
|
|
54
66
|
OperandType.UINT32,
|
|
@@ -61,58 +73,20 @@ Call.wireFormat = [
|
|
|
61
73
|
/* temporary function selector */
|
|
62
74
|
OperandType.UINT32,
|
|
63
75
|
];
|
|
64
|
-
export class
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
this.indirect = indirect;
|
|
68
|
-
this._gasOffset = _gasOffset;
|
|
69
|
-
this.addrOffset = addrOffset;
|
|
70
|
-
this.argsOffset = argsOffset;
|
|
71
|
-
this.argsSize = argsSize;
|
|
72
|
-
this.retOffset = retOffset;
|
|
73
|
-
this.retSize = retSize;
|
|
74
|
-
this.successOffset = successOffset;
|
|
75
|
-
this.temporaryFunctionSelectorOffset = temporaryFunctionSelectorOffset;
|
|
76
|
+
export class Call extends ExternalCall {
|
|
77
|
+
get type() {
|
|
78
|
+
return Call.type;
|
|
76
79
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const nestedCallResults = await new AvmSimulator(nestedContext).execute();
|
|
84
|
-
const success = !nestedCallResults.reverted;
|
|
85
|
-
// We only take as much data as was specified in the return size -> TODO: should we be reverting here
|
|
86
|
-
const returnData = nestedCallResults.output.slice(0, this.retSize);
|
|
87
|
-
const convertedReturnData = returnData.map(f => new Field(f));
|
|
88
|
-
// Write our return data into memory
|
|
89
|
-
context.machineState.memory.set(successOffset, new Uint8(success ? 1 : 0));
|
|
90
|
-
context.machineState.memory.setSlice(retOffset, convertedReturnData);
|
|
91
|
-
if (success) {
|
|
92
|
-
context.persistableState.acceptNestedCallState(nestedContext.persistableState);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
context.persistableState.rejectNestedCallState(nestedContext.persistableState);
|
|
96
|
-
}
|
|
97
|
-
context.machineState.incrementPc();
|
|
80
|
+
}
|
|
81
|
+
Call.type = 'CALL';
|
|
82
|
+
Call.opcode = Opcode.CALL;
|
|
83
|
+
export class StaticCall extends ExternalCall {
|
|
84
|
+
get type() {
|
|
85
|
+
return StaticCall.type;
|
|
98
86
|
}
|
|
99
87
|
}
|
|
100
88
|
StaticCall.type = 'STATICCALL';
|
|
101
89
|
StaticCall.opcode = Opcode.STATICCALL;
|
|
102
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
103
|
-
StaticCall.wireFormat = [
|
|
104
|
-
OperandType.UINT8,
|
|
105
|
-
OperandType.UINT8,
|
|
106
|
-
OperandType.UINT32,
|
|
107
|
-
OperandType.UINT32,
|
|
108
|
-
OperandType.UINT32,
|
|
109
|
-
OperandType.UINT32,
|
|
110
|
-
OperandType.UINT32,
|
|
111
|
-
OperandType.UINT32,
|
|
112
|
-
OperandType.UINT32,
|
|
113
|
-
/* temporary function selector */
|
|
114
|
-
OperandType.UINT32,
|
|
115
|
-
];
|
|
116
90
|
export class Return extends Instruction {
|
|
117
91
|
constructor(indirect, returnOffset, copySize) {
|
|
118
92
|
super();
|
|
@@ -121,9 +95,13 @@ export class Return extends Instruction {
|
|
|
121
95
|
this.copySize = copySize;
|
|
122
96
|
}
|
|
123
97
|
async execute(context) {
|
|
124
|
-
const
|
|
125
|
-
const
|
|
98
|
+
const memoryOperations = { reads: this.copySize, indirect: this.indirect };
|
|
99
|
+
const memory = context.machineState.memory.track(this.type);
|
|
100
|
+
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
101
|
+
const [returnOffset] = Addressing.fromWire(this.indirect).resolve([this.returnOffset], memory);
|
|
102
|
+
const output = memory.getSlice(returnOffset, this.copySize).map(word => word.toFr());
|
|
126
103
|
context.machineState.return(output);
|
|
104
|
+
memory.assert(memoryOperations);
|
|
127
105
|
}
|
|
128
106
|
}
|
|
129
107
|
Return.type = 'RETURN';
|
|
@@ -143,9 +121,13 @@ export class Revert extends Instruction {
|
|
|
143
121
|
this.retSize = retSize;
|
|
144
122
|
}
|
|
145
123
|
async execute(context) {
|
|
146
|
-
const
|
|
147
|
-
const
|
|
124
|
+
const memoryOperations = { reads: this.retSize, indirect: this.indirect };
|
|
125
|
+
const memory = context.machineState.memory.track(this.type);
|
|
126
|
+
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
127
|
+
const [returnOffset] = Addressing.fromWire(this.indirect).resolve([this.returnOffset], memory);
|
|
128
|
+
const output = memory.getSlice(returnOffset, this.retSize).map(word => word.toFr());
|
|
148
129
|
context.machineState.revert(output);
|
|
130
|
+
memory.assert(memoryOperations);
|
|
149
131
|
}
|
|
150
132
|
}
|
|
151
133
|
Revert.type = 'REVERT';
|
|
@@ -157,4 +139,4 @@ Revert.wireFormat = [
|
|
|
157
139
|
OperandType.UINT32,
|
|
158
140
|
OperandType.UINT32,
|
|
159
141
|
];
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWxfY2FsbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvZXh0ZXJuYWxfY2FsbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxNQUFlLFlBQWEsU0FBUSxXQUFXO0lBZ0I3QyxZQUNVLFFBQWdCLEVBQ2hCLFNBQWlCLENBQUMsK0RBQStELEVBQ2pGLFVBQWtCLEVBQ2xCLFVBQWtCLEVBQ2xCLFFBQWdCLEVBQ2hCLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixhQUFxQjtJQUM3Qiw0RkFBNEY7SUFDNUYsNkZBQTZGO0lBQzdGLHFFQUFxRTtJQUM3RCwrQkFBdUM7UUFFL0MsS0FBSyxFQUFFLENBQUM7UUFiQSxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFR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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AvmContext } from '../avm_context.js';
|
|
1
|
+
import { type AvmContext } from '../avm_context.js';
|
|
2
2
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
3
3
|
import { Instruction } from './instruction.js';
|
|
4
4
|
export declare class Poseidon2 extends Instruction {
|
|
@@ -36,13 +36,14 @@ export declare class Sha256 extends Instruction {
|
|
|
36
36
|
}
|
|
37
37
|
export declare class Pedersen extends Instruction {
|
|
38
38
|
private indirect;
|
|
39
|
+
private genIndexOffset;
|
|
39
40
|
private dstOffset;
|
|
40
41
|
private messageOffset;
|
|
41
42
|
private messageSizeOffset;
|
|
42
43
|
static type: string;
|
|
43
44
|
static readonly opcode: Opcode;
|
|
44
45
|
static readonly wireFormat: OperandType[];
|
|
45
|
-
constructor(indirect: number, dstOffset: number, messageOffset: number, messageSizeOffset: number);
|
|
46
|
+
constructor(indirect: number, genIndexOffset: number, dstOffset: number, messageOffset: number, messageSizeOffset: number);
|
|
46
47
|
execute(context: AvmContext): Promise<void>;
|
|
47
48
|
}
|
|
48
49
|
//# sourceMappingURL=hashing.d.ts.map
|