@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,22 +1,25 @@
|
|
|
1
1
|
import type { AvmContext } from '../avm_context.js';
|
|
2
|
+
import { type MemoryValue } from '../avm_memory_types.js';
|
|
2
3
|
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
3
4
|
import { ThreeOperandInstruction } from './instruction_impl.js';
|
|
4
|
-
|
|
5
|
+
declare abstract class ComparatorInstruction extends ThreeOperandInstruction {
|
|
6
|
+
execute(context: AvmContext): Promise<void>;
|
|
7
|
+
protected abstract compare(a: MemoryValue, b: MemoryValue): boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class Eq extends ComparatorInstruction {
|
|
5
10
|
static readonly type: string;
|
|
6
11
|
static readonly opcode = Opcode.EQ;
|
|
7
|
-
|
|
8
|
-
execute(context: AvmContext): Promise<void>;
|
|
12
|
+
protected compare(a: MemoryValue, b: MemoryValue): boolean;
|
|
9
13
|
}
|
|
10
|
-
export declare class Lt extends
|
|
14
|
+
export declare class Lt extends ComparatorInstruction {
|
|
11
15
|
static readonly type: string;
|
|
12
16
|
static readonly opcode = Opcode.LT;
|
|
13
|
-
|
|
14
|
-
execute(context: AvmContext): Promise<void>;
|
|
17
|
+
protected compare(a: MemoryValue, b: MemoryValue): boolean;
|
|
15
18
|
}
|
|
16
|
-
export declare class Lte extends
|
|
19
|
+
export declare class Lte extends ComparatorInstruction {
|
|
17
20
|
static readonly type: string;
|
|
18
21
|
static readonly opcode = Opcode.LTE;
|
|
19
|
-
|
|
20
|
-
execute(context: AvmContext): Promise<void>;
|
|
22
|
+
protected compare(a: MemoryValue, b: MemoryValue): boolean;
|
|
21
23
|
}
|
|
24
|
+
export {};
|
|
22
25
|
//# sourceMappingURL=comparators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comparators.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/comparators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"comparators.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/comparators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,uBAAe,qBAAsB,SAAQ,uBAAuB;IACrD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO;CACpE;AAED,qBAAa,EAAG,SAAQ,qBAAqB;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAQ;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,aAAa;IAEnC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO;CAG3D;AAED,qBAAa,EAAG,SAAQ,qBAAqB;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAQ;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,aAAa;IAEnC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO;CAG3D;AAED,qBAAa,GAAI,SAAQ,qBAAqB;IAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc;IAEpC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO;CAG3D"}
|
|
@@ -1,49 +1,39 @@
|
|
|
1
1
|
import { Uint8 } from '../avm_memory_types.js';
|
|
2
2
|
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
3
3
|
import { ThreeOperandInstruction } from './instruction_impl.js';
|
|
4
|
-
|
|
5
|
-
constructor(indirect, inTag, aOffset, bOffset, dstOffset) {
|
|
6
|
-
super(indirect, inTag, aOffset, bOffset, dstOffset);
|
|
7
|
-
}
|
|
4
|
+
class ComparatorInstruction extends ThreeOperandInstruction {
|
|
8
5
|
async execute(context) {
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
const memoryOperations = { reads: 2, writes: 1, indirect: this.indirect };
|
|
7
|
+
const memory = context.machineState.memory.track(this.type);
|
|
8
|
+
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
9
|
+
memory.checkTags(this.inTag, this.aOffset, this.bOffset);
|
|
10
|
+
const a = memory.get(this.aOffset);
|
|
11
|
+
const b = memory.get(this.bOffset);
|
|
12
|
+
const dest = new Uint8(this.compare(a, b) ? 1 : 0);
|
|
13
|
+
memory.set(this.dstOffset, dest);
|
|
14
|
+
memory.assert(memoryOperations);
|
|
14
15
|
context.machineState.incrementPc();
|
|
15
16
|
}
|
|
16
17
|
}
|
|
18
|
+
export class Eq extends ComparatorInstruction {
|
|
19
|
+
compare(a, b) {
|
|
20
|
+
return a.equals(b);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
17
23
|
Eq.type = 'EQ';
|
|
18
24
|
Eq.opcode = Opcode.EQ;
|
|
19
|
-
export class Lt extends
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
async execute(context) {
|
|
24
|
-
context.machineState.memory.checkTags(this.inTag, this.aOffset, this.bOffset);
|
|
25
|
-
const a = context.machineState.memory.get(this.aOffset);
|
|
26
|
-
const b = context.machineState.memory.get(this.bOffset);
|
|
27
|
-
const dest = new Uint8(a.lt(b) ? 1 : 0);
|
|
28
|
-
context.machineState.memory.set(this.dstOffset, dest);
|
|
29
|
-
context.machineState.incrementPc();
|
|
25
|
+
export class Lt extends ComparatorInstruction {
|
|
26
|
+
compare(a, b) {
|
|
27
|
+
return a.lt(b);
|
|
30
28
|
}
|
|
31
29
|
}
|
|
32
30
|
Lt.type = 'LT';
|
|
33
31
|
Lt.opcode = Opcode.LT;
|
|
34
|
-
export class Lte extends
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
async execute(context) {
|
|
39
|
-
context.machineState.memory.checkTags(this.inTag, this.aOffset, this.bOffset);
|
|
40
|
-
const a = context.machineState.memory.get(this.aOffset);
|
|
41
|
-
const b = context.machineState.memory.get(this.bOffset);
|
|
42
|
-
const dest = new Uint8(a.lt(b) || a.equals(b) ? 1 : 0);
|
|
43
|
-
context.machineState.memory.set(this.dstOffset, dest);
|
|
44
|
-
context.machineState.incrementPc();
|
|
32
|
+
export class Lte extends ComparatorInstruction {
|
|
33
|
+
compare(a, b) {
|
|
34
|
+
return a.lt(b) || a.equals(b);
|
|
45
35
|
}
|
|
46
36
|
}
|
|
47
37
|
Lte.type = 'LTE';
|
|
48
38
|
Lte.opcode = Opcode.LTE;
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvY29tcGFyYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFvQixLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFaEUsTUFBZSxxQkFBc0IsU0FBUSx1QkFBdUI7SUFDM0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFtQjtRQUN0QyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUVoRSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWpDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNoQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7Q0FHRjtBQUVELE1BQU0sT0FBTyxFQUFHLFNBQVEscUJBQXFCO0lBSWpDLE9BQU8sQ0FBQyxDQUFjLEVBQUUsQ0FBYztRQUM5QyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckIsQ0FBQzs7QUFMZSxPQUFJLEdBQVcsSUFBSSxDQUFDO0FBQ3BCLFNBQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBT3JDLE1BQU0sT0FBTyxFQUFHLFNBQVEscUJBQXFCO0lBSWpDLE9BQU8sQ0FBQyxDQUFjLEVBQUUsQ0FBYztRQUM5QyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQzs7QUFMZSxPQUFJLEdBQVcsSUFBSSxDQUFDO0FBQ3BCLFNBQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBT3JDLE1BQU0sT0FBTyxHQUFJLFNBQVEscUJBQXFCO0lBSWxDLE9BQU8sQ0FBQyxDQUFjLEVBQUUsQ0FBYztRQUM5QyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDOztBQUxlLFFBQUksR0FBVyxLQUFLLENBQUM7QUFDckIsVUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMifQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AvmContext } from '../avm_context.js';
|
|
2
|
+
import { type MemoryValue } from '../avm_memory_types.js';
|
|
3
|
+
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
4
|
+
import { GetterInstruction } from './instruction_impl.js';
|
|
5
|
+
export declare class L2GasLeft extends GetterInstruction {
|
|
6
|
+
static type: string;
|
|
7
|
+
static readonly opcode: Opcode;
|
|
8
|
+
protected getValue(context: AvmContext): MemoryValue;
|
|
9
|
+
}
|
|
10
|
+
export declare class L1GasLeft extends GetterInstruction {
|
|
11
|
+
static type: string;
|
|
12
|
+
static readonly opcode: Opcode;
|
|
13
|
+
protected getValue(context: AvmContext): MemoryValue;
|
|
14
|
+
}
|
|
15
|
+
export declare class DAGasLeft extends GetterInstruction {
|
|
16
|
+
static type: string;
|
|
17
|
+
static readonly opcode: Opcode;
|
|
18
|
+
protected getValue(context: AvmContext): MemoryValue;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=context_getters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context_getters.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/context_getters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAS,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,qBAAa,SAAU,SAAQ,iBAAiB;IAC9C,MAAM,CAAC,IAAI,EAAE,MAAM,CAAe;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAoB;IAGlD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW;CAGrD;AAED,qBAAa,SAAU,SAAQ,iBAAiB;IAC9C,MAAM,CAAC,IAAI,EAAE,MAAM,CAAe;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAoB;IAElD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW;CAGrD;AAED,qBAAa,SAAU,SAAQ,iBAAiB;IAC9C,MAAM,CAAC,IAAI,EAAE,MAAM,CAAe;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAoB;IAElD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW;CAGrD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Field } from '../avm_memory_types.js';
|
|
2
|
+
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
3
|
+
import { GetterInstruction } from './instruction_impl.js';
|
|
4
|
+
export class L2GasLeft extends GetterInstruction {
|
|
5
|
+
// TODO(@spalladino) Yellow paper specifies that the value should be an Uint32, not a Field.
|
|
6
|
+
getValue(context) {
|
|
7
|
+
return new Field(context.machineState.l2GasLeft);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
L2GasLeft.type = 'L2GASLEFT';
|
|
11
|
+
L2GasLeft.opcode = Opcode.L2GASLEFT;
|
|
12
|
+
export class L1GasLeft extends GetterInstruction {
|
|
13
|
+
getValue(context) {
|
|
14
|
+
return new Field(context.machineState.l1GasLeft);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
L1GasLeft.type = 'L1GASLEFT';
|
|
18
|
+
L1GasLeft.opcode = Opcode.L1GASLEFT;
|
|
19
|
+
export class DAGasLeft extends GetterInstruction {
|
|
20
|
+
getValue(context) {
|
|
21
|
+
return new Field(context.machineState.daGasLeft);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
DAGasLeft.type = 'DAGASLEFT';
|
|
25
|
+
DAGasLeft.opcode = Opcode.DAGASLEFT;
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dF9nZXR0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F2bS9vcGNvZGVzL2NvbnRleHRfZ2V0dGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxNQUFNLE9BQU8sU0FBVSxTQUFRLGlCQUFpQjtJQUk5Qyw0RkFBNEY7SUFDbEYsUUFBUSxDQUFDLE9BQW1CO1FBQ3BDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRCxDQUFDOztBQU5NLGNBQUksR0FBVyxXQUFXLENBQUM7QUFDbEIsZ0JBQU0sR0FBVyxNQUFNLENBQUMsU0FBUyxDQUFDO0FBUXBELE1BQU0sT0FBTyxTQUFVLFNBQVEsaUJBQWlCO0lBSXBDLFFBQVEsQ0FBQyxPQUFtQjtRQUNwQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7QUFMTSxjQUFJLEdBQVcsV0FBVyxDQUFDO0FBQ2xCLGdCQUFNLEdBQVcsTUFBTSxDQUFDLFNBQVMsQ0FBQztBQU9wRCxNQUFNLE9BQU8sU0FBVSxTQUFRLGlCQUFpQjtJQUlwQyxRQUFRLENBQUMsT0FBbUI7UUFDcEMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7O0FBTE0sY0FBSSxHQUFXLFdBQVcsQ0FBQztBQUNsQixnQkFBTSxHQUFXLE1BQU0sQ0FBQyxTQUFTLENBQUMifQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AvmContext } from '../avm_context.js';
|
|
2
|
+
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
3
|
+
import { Instruction } from './instruction.js';
|
|
4
|
+
export declare class GetContractInstance extends Instruction {
|
|
5
|
+
private indirect;
|
|
6
|
+
private addressOffset;
|
|
7
|
+
private dstOffset;
|
|
8
|
+
static readonly type: string;
|
|
9
|
+
static readonly opcode: Opcode;
|
|
10
|
+
static readonly wireFormat: OperandType[];
|
|
11
|
+
constructor(indirect: number, addressOffset: number, dstOffset: number);
|
|
12
|
+
execute(context: AvmContext): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/contract.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,mBAAoB,SAAQ,WAAW;IAWtC,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,aAAa;IAAU,OAAO,CAAC,SAAS;IAVtF,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAyB;IACrD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAA8B;IAE5D,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAEkB,QAAQ,EAAE,MAAM,EAAU,aAAa,EAAE,MAAM,EAAU,SAAS,EAAE,MAAM;IAIxF,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAkClD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { AztecAddress, Fr } from '@aztec/circuits.js';
|
|
2
|
+
import { Field } from '../avm_memory_types.js';
|
|
3
|
+
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
4
|
+
import { Addressing } from './addressing_mode.js';
|
|
5
|
+
import { Instruction } from './instruction.js';
|
|
6
|
+
export class GetContractInstance extends Instruction {
|
|
7
|
+
constructor(indirect, addressOffset, dstOffset) {
|
|
8
|
+
super();
|
|
9
|
+
this.indirect = indirect;
|
|
10
|
+
this.addressOffset = addressOffset;
|
|
11
|
+
this.dstOffset = dstOffset;
|
|
12
|
+
}
|
|
13
|
+
async execute(context) {
|
|
14
|
+
const [addressOffset, dstOffset] = Addressing.fromWire(this.indirect).resolve([this.addressOffset, this.dstOffset], context.machineState.memory);
|
|
15
|
+
const address = AztecAddress.fromField(context.machineState.memory.get(addressOffset).toFr());
|
|
16
|
+
const instance = await context.persistableState.hostStorage.contractsDb.getContractInstance(address);
|
|
17
|
+
const data = instance === undefined
|
|
18
|
+
? [
|
|
19
|
+
new Field(0), // not found
|
|
20
|
+
new Field(0),
|
|
21
|
+
new Field(0),
|
|
22
|
+
new Field(0),
|
|
23
|
+
new Field(0),
|
|
24
|
+
new Field(0),
|
|
25
|
+
new Field(0),
|
|
26
|
+
]
|
|
27
|
+
: [
|
|
28
|
+
new Fr(1), // found
|
|
29
|
+
instance.salt,
|
|
30
|
+
instance.deployer.toField(),
|
|
31
|
+
instance.contractClassId,
|
|
32
|
+
instance.initializationHash,
|
|
33
|
+
instance.portalContractAddress.toField(),
|
|
34
|
+
instance.publicKeysHash,
|
|
35
|
+
].map(f => new Field(f));
|
|
36
|
+
context.machineState.memory.setSlice(dstOffset, data);
|
|
37
|
+
context.machineState.incrementPc();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
GetContractInstance.type = 'GETCONTRACTINSTANCE';
|
|
41
|
+
GetContractInstance.opcode = Opcode.GETCONTRACTINSTANCE;
|
|
42
|
+
// Informs (de)serialization. See Instruction.deserialize.
|
|
43
|
+
GetContractInstance.wireFormat = [
|
|
44
|
+
OperandType.UINT8,
|
|
45
|
+
OperandType.UINT8,
|
|
46
|
+
OperandType.UINT32,
|
|
47
|
+
OperandType.UINT32,
|
|
48
|
+
];
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUFXO0lBV2xELFlBQW9CLFFBQWdCLEVBQVUsYUFBcUIsRUFBVSxTQUFpQjtRQUM1RixLQUFLLEVBQUUsQ0FBQztRQURVLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVE7SUFFOUYsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUI7UUFDL0IsTUFBTSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQzNFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3BDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUM1QixDQUFDO1FBRUYsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5RixNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXJHLE1BQU0sSUFBSSxHQUNSLFFBQVEsS0FBSyxTQUFTO1lBQ3BCLENBQUMsQ0FBQztnQkFDRSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZO2dCQUMxQixJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ1osSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNaLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDWixJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ1osSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNaLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNiO1lBQ0gsQ0FBQyxDQUFDO2dCQUNFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVE7Z0JBQ25CLFFBQVEsQ0FBQyxJQUFJO2dCQUNiLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUMzQixRQUFRLENBQUMsZUFBZTtnQkFDeEIsUUFBUSxDQUFDLGtCQUFrQjtnQkFDM0IsUUFBUSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRTtnQkFDeEMsUUFBUSxDQUFDLGNBQWM7YUFDeEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9CLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFdEQsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDOztBQS9DZSx3QkFBSSxHQUFXLHFCQUFxQixDQUFDO0FBQ3JDLDBCQUFNLEdBQVcsTUFBTSxDQUFDLG1CQUFtQixDQUFDO0FBQzVELDBEQUEwRDtBQUMxQyw4QkFBVSxHQUFrQjtJQUMxQyxXQUFXLENBQUMsS0FBSztJQUNqQixXQUFXLENBQUMsS0FBSztJQUNqQixXQUFXLENBQUMsTUFBTTtJQUNsQixXQUFXLENBQUMsTUFBTTtDQUNuQixDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control_flow.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/control_flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,IAAK,SAAQ,WAAW;IAMvB,OAAO,CAAC,UAAU;IAL9B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAU;IAC7B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAe;IAE7C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAA2C;gBAEhE,UAAU,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"control_flow.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/control_flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,IAAK,SAAQ,WAAW;IAMvB,OAAO,CAAC,UAAU;IAL9B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAU;IAC7B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAe;IAE7C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAA2C;gBAEhE,UAAU,EAAE,MAAM;IAIzB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAOzD;AAED,qBAAa,KAAM,SAAQ,WAAW;IAYxB,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,GAAG;IAAU,OAAO,CAAC,UAAU;IAX7E,MAAM,CAAC,IAAI,EAAE,MAAM,CAAW;IAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAgB;IAG9C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAEkB,QAAQ,EAAE,MAAM,EAAU,GAAG,EAAE,MAAM,EAAU,UAAU,EAAE,MAAM;IAIxE,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBzD;AAED,qBAAa,YAAa,SAAQ,WAAW;IAM/B,OAAO,CAAC,GAAG;IALvB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAkB;IAC9C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAuB;IAErD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAA2C;gBAEhE,GAAG,EAAE,MAAM;IAIlB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAQzD;AAED,qBAAa,cAAe,SAAQ,WAAW;IAC7C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAoB;IAChD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAyB;IAEvD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAAuB;;IAMnD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAWzD"}
|
|
@@ -7,7 +7,9 @@ export class Jump extends Instruction {
|
|
|
7
7
|
this.jumpOffset = jumpOffset;
|
|
8
8
|
}
|
|
9
9
|
async execute(context) {
|
|
10
|
+
context.machineState.consumeGas(this.gasCost());
|
|
10
11
|
context.machineState.pc = this.jumpOffset;
|
|
12
|
+
context.machineState.memory.assert({});
|
|
11
13
|
}
|
|
12
14
|
}
|
|
13
15
|
Jump.type = 'JUMP';
|
|
@@ -22,7 +24,10 @@ export class JumpI extends Instruction {
|
|
|
22
24
|
this.condOffset = condOffset;
|
|
23
25
|
}
|
|
24
26
|
async execute(context) {
|
|
25
|
-
const
|
|
27
|
+
const memoryOperations = { reads: 1, indirect: this.indirect };
|
|
28
|
+
const memory = context.machineState.memory.track(this.type);
|
|
29
|
+
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
30
|
+
const condition = memory.getAs(this.condOffset);
|
|
26
31
|
// TODO: reconsider this casting
|
|
27
32
|
if (condition.toBigInt() == 0n) {
|
|
28
33
|
context.machineState.incrementPc();
|
|
@@ -30,6 +35,7 @@ export class JumpI extends Instruction {
|
|
|
30
35
|
else {
|
|
31
36
|
context.machineState.pc = this.loc;
|
|
32
37
|
}
|
|
38
|
+
memory.assert(memoryOperations);
|
|
33
39
|
}
|
|
34
40
|
}
|
|
35
41
|
JumpI.type = 'JUMPI';
|
|
@@ -47,8 +53,10 @@ export class InternalCall extends Instruction {
|
|
|
47
53
|
this.loc = loc;
|
|
48
54
|
}
|
|
49
55
|
async execute(context) {
|
|
56
|
+
context.machineState.consumeGas(this.gasCost());
|
|
50
57
|
context.machineState.internalCallStack.push(context.machineState.pc + 1);
|
|
51
58
|
context.machineState.pc = this.loc;
|
|
59
|
+
context.machineState.memory.assert({});
|
|
52
60
|
}
|
|
53
61
|
}
|
|
54
62
|
InternalCall.type = 'INTERNALCALL';
|
|
@@ -60,15 +68,17 @@ export class InternalReturn extends Instruction {
|
|
|
60
68
|
super();
|
|
61
69
|
}
|
|
62
70
|
async execute(context) {
|
|
71
|
+
context.machineState.consumeGas(this.gasCost());
|
|
63
72
|
const jumpOffset = context.machineState.internalCallStack.pop();
|
|
64
73
|
if (jumpOffset === undefined) {
|
|
65
74
|
throw new InstructionExecutionError('Internal call stack empty!');
|
|
66
75
|
}
|
|
67
76
|
context.machineState.pc = jumpOffset;
|
|
77
|
+
context.machineState.memory.assert({});
|
|
68
78
|
}
|
|
69
79
|
}
|
|
70
80
|
InternalReturn.type = 'INTERNALRETURN';
|
|
71
81
|
InternalReturn.opcode = Opcode.INTERNALRETURN;
|
|
72
82
|
// Informs (de)serialization. See Instruction.deserialize.
|
|
73
83
|
InternalReturn.wireFormat = [OperandType.UINT8];
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbF9mbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F2bS9vcGNvZGVzL2NvbnRyb2xfZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFL0MsTUFBTSxPQUFPLElBQUssU0FBUSxXQUFXO0lBTW5DLFlBQW9CLFVBQWtCO1FBQ3BDLEtBQUssRUFBRSxDQUFDO1FBRFUsZUFBVSxHQUFWLFVBQVUsQ0FBUTtJQUV0QyxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFtQjtRQUN0QyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUVoRCxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRTFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDOztBQWZNLFNBQUksR0FBVyxNQUFNLENBQUM7QUFDYixXQUFNLEdBQVcsTUFBTSxDQUFDLElBQUksQ0FBQztBQUM3QywwREFBMEQ7QUFDMUMsZUFBVSxHQUFrQixDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBZXRGLE1BQU0sT0FBTyxLQUFNLFNBQVEsV0FBVztJQVlwQyxZQUFvQixRQUFnQixFQUFVLEdBQVcsRUFBVSxVQUFrQjtRQUNuRixLQUFLLEVBQUUsQ0FBQztRQURVLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQVUsZUFBVSxHQUFWLFVB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
|
|
@@ -1,75 +1,72 @@
|
|
|
1
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,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"environment_getters.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/environment_getters.ts"],"names":[],"mappings":"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"}
|