@aztec/simulator 0.37.0 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/acvm/acvm.d.ts +1 -1
- package/dest/acvm/acvm.d.ts.map +1 -1
- package/dest/acvm/acvm.js +2 -2
- package/dest/acvm/oracle/oracle.d.ts +6 -5
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +26 -30
- package/dest/acvm/oracle/typed_oracle.d.ts +5 -5
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +9 -9
- 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 +17 -11
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +4 -1
- package/dest/avm/avm_machine_state.d.ts +5 -8
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +10 -22
- package/dest/avm/avm_memory_types.d.ts +1 -1
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_message_call_result.d.ts +5 -8
- package/dest/avm/avm_message_call_result.d.ts.map +1 -1
- package/dest/avm/avm_message_call_result.js +1 -4
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +19 -13
- package/dest/avm/errors.d.ts +43 -2
- package/dest/avm/errors.d.ts.map +1 -1
- package/dest/avm/errors.js +86 -4
- package/dest/avm/journal/journal.d.ts +20 -1
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +70 -9
- package/dest/avm/journal/nullifiers.d.ts +3 -1
- package/dest/avm/journal/nullifiers.d.ts.map +1 -1
- package/dest/avm/journal/nullifiers.js +14 -6
- package/dest/avm/journal/public_storage.d.ts +10 -1
- package/dest/avm/journal/public_storage.d.ts.map +1 -1
- package/dest/avm/journal/public_storage.js +17 -2
- package/dest/avm/journal/trace.d.ts +1 -4
- package/dest/avm/journal/trace.d.ts.map +1 -1
- package/dest/avm/journal/trace.js +4 -5
- package/dest/avm/journal/trace_types.d.ts +1 -0
- package/dest/avm/journal/trace_types.d.ts.map +1 -1
- package/dest/avm/journal/trace_types.js +1 -1
- package/dest/avm/opcodes/bitwise.d.ts +4 -1
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/avm/opcodes/bitwise.js +14 -2
- package/dest/avm/opcodes/conversion.d.ts +16 -0
- package/dest/avm/opcodes/conversion.d.ts.map +1 -0
- package/dest/avm/opcodes/conversion.js +48 -0
- package/dest/avm/opcodes/environment_getters.d.ts +16 -12
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +19 -48
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +24 -13
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +6 -2
- package/dest/avm/serialization/instruction_serialization.d.ts +40 -38
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +42 -39
- package/dest/client/client_execution_context.d.ts +59 -19
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +97 -45
- package/dest/client/db_oracle.d.ts +4 -11
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/execution_result.d.ts +22 -15
- package/dest/client/execution_result.d.ts.map +1 -1
- package/dest/client/execution_result.js +59 -13
- package/dest/client/logs_cache.d.ts +33 -0
- package/dest/client/logs_cache.d.ts.map +1 -0
- package/dest/client/logs_cache.js +59 -0
- package/dest/client/private_execution.d.ts +2 -2
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +5 -7
- package/dest/client/simulator.d.ts +4 -34
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +5 -43
- package/dest/client/unconstrained_execution.d.ts +2 -2
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +1 -1
- package/dest/client/view_data_oracle.d.ts +0 -7
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +1 -10
- package/dest/common/errors.d.ts +5 -0
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/errors.js +6 -1
- package/dest/index.d.ts +1 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -1
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +3 -1
- package/dest/public/abstract_phase_manager.d.ts +10 -4
- package/dest/public/abstract_phase_manager.d.ts.map +1 -1
- package/dest/public/abstract_phase_manager.js +50 -19
- package/dest/public/app_logic_phase_manager.d.ts +1 -0
- package/dest/public/app_logic_phase_manager.d.ts.map +1 -1
- package/dest/public/app_logic_phase_manager.js +3 -3
- package/dest/public/execution.d.ts +9 -0
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +1 -1
- package/dest/public/executor.d.ts +2 -2
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +34 -17
- package/dest/public/hints_builder.d.ts +3 -3
- package/dest/public/hints_builder.d.ts.map +1 -1
- package/dest/public/hints_builder.js +3 -3
- package/dest/public/public_execution_context.d.ts +10 -4
- package/dest/public/public_execution_context.d.ts.map +1 -1
- package/dest/public/public_execution_context.js +19 -6
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +5 -3
- package/dest/public/setup_phase_manager.d.ts +1 -0
- package/dest/public/setup_phase_manager.d.ts.map +1 -1
- package/dest/public/setup_phase_manager.js +3 -2
- package/dest/public/tail_phase_manager.d.ts +1 -1
- package/dest/public/tail_phase_manager.d.ts.map +1 -1
- package/dest/public/tail_phase_manager.js +4 -26
- package/dest/public/teardown_phase_manager.d.ts +1 -0
- package/dest/public/teardown_phase_manager.d.ts.map +1 -1
- package/dest/public/teardown_phase_manager.js +3 -2
- package/dest/public/transitional_adaptors.d.ts +4 -17
- package/dest/public/transitional_adaptors.d.ts.map +1 -1
- package/dest/public/transitional_adaptors.js +27 -119
- package/dest/rollup/index.d.ts +2 -0
- package/dest/rollup/index.d.ts.map +1 -0
- package/dest/rollup/index.js +2 -0
- package/dest/rollup/rollup.d.ts +77 -0
- package/dest/rollup/rollup.d.ts.map +1 -0
- package/dest/rollup/rollup.js +78 -0
- package/dest/stats/index.d.ts +2 -0
- package/dest/stats/index.d.ts.map +1 -0
- package/dest/stats/index.js +2 -0
- package/dest/stats/stats.d.ts +4 -0
- package/dest/stats/stats.d.ts.map +1 -0
- package/dest/stats/stats.js +11 -0
- package/package.json +8 -8
- package/src/acvm/acvm.ts +2 -2
- package/src/acvm/oracle/oracle.ts +62 -36
- package/src/acvm/oracle/typed_oracle.ts +19 -11
- package/src/avm/avm_execution_environment.ts +34 -42
- package/src/avm/avm_gas.ts +3 -0
- package/src/avm/avm_machine_state.ts +14 -25
- package/src/avm/avm_memory_types.ts +1 -1
- package/src/avm/avm_message_call_result.ts +3 -14
- package/src/avm/avm_simulator.ts +24 -12
- package/src/avm/errors.ts +94 -4
- package/src/avm/journal/journal.ts +134 -9
- package/src/avm/journal/nullifiers.ts +19 -8
- package/src/avm/journal/public_storage.ts +23 -2
- package/src/avm/journal/trace.ts +3 -4
- package/src/avm/journal/trace_types.ts +1 -0
- package/src/avm/opcodes/bitwise.ts +18 -7
- package/src/avm/opcodes/conversion.ts +59 -0
- package/src/avm/opcodes/environment_getters.ts +21 -65
- package/src/avm/opcodes/external_calls.ts +32 -16
- package/src/avm/serialization/bytecode_serialization.ts +5 -0
- package/src/avm/serialization/instruction_serialization.ts +3 -0
- package/src/client/client_execution_context.ts +142 -46
- package/src/client/db_oracle.ts +4 -18
- package/src/client/execution_result.ts +75 -25
- package/src/client/logs_cache.ts +65 -0
- package/src/client/private_execution.ts +6 -10
- package/src/client/simulator.ts +8 -84
- package/src/client/unconstrained_execution.ts +2 -2
- package/src/client/view_data_oracle.ts +0 -10
- package/src/common/errors.ts +5 -0
- package/src/index.ts +1 -0
- package/src/mocks/fixtures.ts +2 -0
- package/src/public/abstract_phase_manager.ts +59 -23
- package/src/public/app_logic_phase_manager.ts +2 -1
- package/src/public/execution.ts +9 -0
- package/src/public/executor.ts +47 -14
- package/src/public/hints_builder.ts +5 -5
- package/src/public/public_execution_context.ts +18 -4
- package/src/public/public_processor.ts +8 -2
- package/src/public/setup_phase_manager.ts +16 -8
- package/src/public/tail_phase_manager.ts +8 -35
- package/src/public/teardown_phase_manager.ts +16 -8
- package/src/public/transitional_adaptors.ts +39 -177
- package/src/rollup/index.ts +1 -0
- package/src/rollup/rollup.ts +160 -0
- package/src/stats/index.ts +1 -0
- package/src/stats/stats.ts +20 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TypeTag } from '../avm_memory_types.js';
|
|
1
2
|
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
2
3
|
import { ThreeOperandInstruction, TwoOperandInstruction } from './instruction_impl.js';
|
|
3
4
|
class ThreeOperandBitwiseInstruction extends ThreeOperandInstruction {
|
|
@@ -5,7 +6,7 @@ class ThreeOperandBitwiseInstruction extends ThreeOperandInstruction {
|
|
|
5
6
|
const memoryOperations = { reads: 2, writes: 1, indirect: this.indirect };
|
|
6
7
|
const memory = context.machineState.memory.track(this.type);
|
|
7
8
|
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
8
|
-
|
|
9
|
+
this.checkTags(memory, this.inTag, this.aOffset, this.bOffset);
|
|
9
10
|
const a = memory.getAs(this.aOffset);
|
|
10
11
|
const b = memory.getAs(this.bOffset);
|
|
11
12
|
const res = this.compute(a, b);
|
|
@@ -13,6 +14,9 @@ class ThreeOperandBitwiseInstruction extends ThreeOperandInstruction {
|
|
|
13
14
|
memory.assert(memoryOperations);
|
|
14
15
|
context.machineState.incrementPc();
|
|
15
16
|
}
|
|
17
|
+
checkTags(memory, inTag, aOffset, bOffset) {
|
|
18
|
+
memory.checkTags(inTag, aOffset, bOffset);
|
|
19
|
+
}
|
|
16
20
|
}
|
|
17
21
|
export class And extends ThreeOperandBitwiseInstruction {
|
|
18
22
|
compute(a, b) {
|
|
@@ -39,6 +43,10 @@ export class Shl extends ThreeOperandBitwiseInstruction {
|
|
|
39
43
|
compute(a, b) {
|
|
40
44
|
return a.shl(b);
|
|
41
45
|
}
|
|
46
|
+
checkTags(memory, inTag, aOffset, bOffset) {
|
|
47
|
+
memory.checkTag(inTag, aOffset);
|
|
48
|
+
memory.checkTag(TypeTag.UINT8, bOffset);
|
|
49
|
+
}
|
|
42
50
|
}
|
|
43
51
|
Shl.type = 'SHL';
|
|
44
52
|
Shl.opcode = Opcode.SHL;
|
|
@@ -46,6 +54,10 @@ export class Shr extends ThreeOperandBitwiseInstruction {
|
|
|
46
54
|
compute(a, b) {
|
|
47
55
|
return a.shr(b);
|
|
48
56
|
}
|
|
57
|
+
checkTags(memory, inTag, aOffset, bOffset) {
|
|
58
|
+
memory.checkTag(inTag, aOffset);
|
|
59
|
+
memory.checkTag(TypeTag.UINT8, bOffset);
|
|
60
|
+
}
|
|
49
61
|
}
|
|
50
62
|
Shr.type = 'SHR';
|
|
51
63
|
Shr.opcode = Opcode.SHR;
|
|
@@ -67,4 +79,4 @@ export class Not extends TwoOperandInstruction {
|
|
|
67
79
|
}
|
|
68
80
|
Not.type = 'NOT';
|
|
69
81
|
Not.opcode = Opcode.NOT;
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0d2lzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9iaXR3aXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBa0QsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE1BQWUsOEJBQStCLFNBQVEsdUJBQXVCO0lBQ3BFLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUI7UUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUvRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFnQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBZ0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXBELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9C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
|
|
@@ -0,0 +1,16 @@
|
|
|
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 ToRadixLE extends Instruction {
|
|
5
|
+
private indirect;
|
|
6
|
+
private srcOffset;
|
|
7
|
+
private dstOffset;
|
|
8
|
+
private radix;
|
|
9
|
+
private numLimbs;
|
|
10
|
+
static type: string;
|
|
11
|
+
static readonly opcode: Opcode;
|
|
12
|
+
static readonly wireFormat: OperandType[];
|
|
13
|
+
constructor(indirect: number, srcOffset: number, dstOffset: number, radix: number, numLimbs: number);
|
|
14
|
+
execute(context: AvmContext): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=conversion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/conversion.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,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,SAAU,SAAQ,WAAW;IAetC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ;IAlBlB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAe;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAoB;IAGlD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAOvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM;IAMb,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAyBzD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { strict as assert } from 'assert';
|
|
2
|
+
import { TypeTag, Uint8 } 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 ToRadixLE extends Instruction {
|
|
7
|
+
constructor(indirect, srcOffset, dstOffset, radix, numLimbs) {
|
|
8
|
+
assert(radix <= 256, 'Radix cannot be greater than 256');
|
|
9
|
+
super();
|
|
10
|
+
this.indirect = indirect;
|
|
11
|
+
this.srcOffset = srcOffset;
|
|
12
|
+
this.dstOffset = dstOffset;
|
|
13
|
+
this.radix = radix;
|
|
14
|
+
this.numLimbs = numLimbs;
|
|
15
|
+
}
|
|
16
|
+
async execute(context) {
|
|
17
|
+
const memory = context.machineState.memory.track(this.type);
|
|
18
|
+
const [srcOffset, dstOffset] = Addressing.fromWire(this.indirect).resolve([this.srcOffset, this.dstOffset], memory);
|
|
19
|
+
const memoryOperations = { reads: 1, writes: this.numLimbs, indirect: this.indirect };
|
|
20
|
+
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
21
|
+
// The radix gadget only takes in a Field
|
|
22
|
+
memory.checkTag(TypeTag.FIELD, srcOffset);
|
|
23
|
+
let value = memory.get(srcOffset).toBigInt();
|
|
24
|
+
const radixBN = BigInt(this.radix);
|
|
25
|
+
const limbArray = [];
|
|
26
|
+
for (let i = 0; i < this.numLimbs; i++) {
|
|
27
|
+
const limb = value % radixBN;
|
|
28
|
+
limbArray.push(limb);
|
|
29
|
+
value /= radixBN;
|
|
30
|
+
}
|
|
31
|
+
const res = [...limbArray].map(byte => new Uint8(byte));
|
|
32
|
+
memory.setSlice(dstOffset, res);
|
|
33
|
+
memory.assert(memoryOperations);
|
|
34
|
+
context.machineState.incrementPc();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
ToRadixLE.type = 'TORADIXLE';
|
|
38
|
+
ToRadixLE.opcode = Opcode.TORADIXLE;
|
|
39
|
+
// Informs (de)serialization. See Instruction.deserialize.
|
|
40
|
+
ToRadixLE.wireFormat = [
|
|
41
|
+
OperandType.UINT8, // Opcode
|
|
42
|
+
OperandType.UINT8, // Indirect
|
|
43
|
+
OperandType.UINT32, // src memory address
|
|
44
|
+
OperandType.UINT32, // dst memory address
|
|
45
|
+
OperandType.UINT32, // radix (immediate)
|
|
46
|
+
OperandType.UINT32, // number of limbs (Immediate)
|
|
47
|
+
];
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9jb252ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE1BQU0sT0FBTyxTQUFVLFNBQVEsV0FBVztJQWN4QyxZQUNVLFFBQWdCLEVBQ2hCLFNBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLEtBQWEsRUFDYixRQUFnQjtRQUV4QixNQUFNLENBQUMsS0FBSyxJQUFJLEdBQUcsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3pELEtBQUssRUFBRSxDQUFDO1FBUEEsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGFBQVEsR0FBUixRQUFRLENBQVE7SUFJMUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUI7UUFDdEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BILE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEYsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFFaEUseUNBQXlDO1FBQ3pDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUUxQyxJQUFJLEtBQUssR0FBVyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JELE1BQU0sT0FBTyxHQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBRXJCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxHQUFHLE9BQU8sQ0FBQztZQUM3QixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JCLEtBQUssSUFBSSxPQUFPLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRWhDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNoQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7O0FBaERNLGNBQUksR0FBVyxXQUFXLENBQUM7QUFDbEIsZ0JBQU0sR0FBVyxNQUFNLENBQUMsU0FBUyxDQUFDO0FBRWxELDBEQUEwRDtBQUMxQyxvQkFBVSxHQUFrQjtJQUMxQyxXQUFXLENBQUMsS0FBSyxFQUFFLFNBQVM7SUFDNUIsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXO0lBQzlCLFdBQVcsQ0FBQyxNQUFNLEVBQUUscUJBQXFCO0lBQ3pDLFdBQVcsQ0FBQyxNQUFNLEVBQUUscUJBQXFCO0lBQ3pDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CO0lBQ3hDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsOEJBQThCO0NBQ25ELENBQUMifQ==
|
|
@@ -1,57 +1,61 @@
|
|
|
1
|
-
import { type Fr } from '@aztec/circuits.js';
|
|
2
1
|
import type { AvmContext } from '../avm_context.js';
|
|
3
2
|
import type { AvmExecutionEnvironment } from '../avm_execution_environment.js';
|
|
4
|
-
import { type MemoryValue } from '../avm_memory_types.js';
|
|
3
|
+
import { Field, type MemoryValue, Uint64 } from '../avm_memory_types.js';
|
|
5
4
|
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
6
5
|
import { GetterInstruction } from './instruction_impl.js';
|
|
7
6
|
declare abstract class EnvironmentGetterInstruction extends GetterInstruction {
|
|
8
7
|
protected getValue(context: AvmContext): MemoryValue;
|
|
9
|
-
protected abstract getEnvironmentValue(env: AvmExecutionEnvironment):
|
|
8
|
+
protected abstract getEnvironmentValue(env: AvmExecutionEnvironment): MemoryValue;
|
|
10
9
|
}
|
|
11
10
|
export declare class Address extends EnvironmentGetterInstruction {
|
|
12
11
|
static type: string;
|
|
13
12
|
static readonly opcode: Opcode;
|
|
14
|
-
protected getEnvironmentValue(env: AvmExecutionEnvironment):
|
|
13
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Field;
|
|
15
14
|
}
|
|
16
15
|
export declare class StorageAddress extends EnvironmentGetterInstruction {
|
|
17
16
|
static type: string;
|
|
18
17
|
static readonly opcode: Opcode;
|
|
19
|
-
protected getEnvironmentValue(env: AvmExecutionEnvironment):
|
|
18
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Field;
|
|
20
19
|
}
|
|
21
20
|
export declare class Sender extends EnvironmentGetterInstruction {
|
|
22
21
|
static type: string;
|
|
23
22
|
static readonly opcode: Opcode;
|
|
24
|
-
protected getEnvironmentValue(env: AvmExecutionEnvironment):
|
|
23
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Field;
|
|
25
24
|
}
|
|
26
25
|
export declare class FeePerL2Gas extends EnvironmentGetterInstruction {
|
|
27
26
|
static type: string;
|
|
28
27
|
static readonly opcode: Opcode;
|
|
29
|
-
protected getEnvironmentValue(env: AvmExecutionEnvironment):
|
|
28
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Field;
|
|
30
29
|
}
|
|
31
30
|
export declare class FeePerDAGas extends EnvironmentGetterInstruction {
|
|
32
31
|
static type: string;
|
|
33
32
|
static readonly opcode: Opcode;
|
|
34
|
-
protected getEnvironmentValue(env: AvmExecutionEnvironment):
|
|
33
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Field;
|
|
34
|
+
}
|
|
35
|
+
export declare class TransactionFee extends EnvironmentGetterInstruction {
|
|
36
|
+
static type: string;
|
|
37
|
+
static readonly opcode: Opcode;
|
|
38
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Field;
|
|
35
39
|
}
|
|
36
40
|
export declare class ChainId extends EnvironmentGetterInstruction {
|
|
37
41
|
static type: string;
|
|
38
42
|
static readonly opcode: Opcode;
|
|
39
|
-
protected getEnvironmentValue(env: AvmExecutionEnvironment):
|
|
43
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Field;
|
|
40
44
|
}
|
|
41
45
|
export declare class Version extends EnvironmentGetterInstruction {
|
|
42
46
|
static type: string;
|
|
43
47
|
static readonly opcode: Opcode;
|
|
44
|
-
protected getEnvironmentValue(env: AvmExecutionEnvironment):
|
|
48
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Field;
|
|
45
49
|
}
|
|
46
50
|
export declare class BlockNumber extends EnvironmentGetterInstruction {
|
|
47
51
|
static type: string;
|
|
48
52
|
static readonly opcode: Opcode;
|
|
49
|
-
protected getEnvironmentValue(env: AvmExecutionEnvironment):
|
|
53
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Field;
|
|
50
54
|
}
|
|
51
55
|
export declare class Timestamp extends EnvironmentGetterInstruction {
|
|
52
56
|
static type: string;
|
|
53
57
|
static readonly opcode: Opcode;
|
|
54
|
-
protected getEnvironmentValue(env: AvmExecutionEnvironment):
|
|
58
|
+
protected getEnvironmentValue(env: AvmExecutionEnvironment): Uint64;
|
|
55
59
|
}
|
|
56
60
|
export {};
|
|
57
61
|
//# 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,
|
|
1
|
+
{"version":3,"file":"environment_getters.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/environment_getters.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,108 +1,79 @@
|
|
|
1
|
-
import { Field } from '../avm_memory_types.js';
|
|
1
|
+
import { Field, Uint64 } from '../avm_memory_types.js';
|
|
2
2
|
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
3
3
|
import { GetterInstruction } from './instruction_impl.js';
|
|
4
4
|
class EnvironmentGetterInstruction extends GetterInstruction {
|
|
5
5
|
getValue(context) {
|
|
6
|
-
return
|
|
6
|
+
return this.getEnvironmentValue(context.environment);
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
export class Address extends EnvironmentGetterInstruction {
|
|
10
10
|
getEnvironmentValue(env) {
|
|
11
|
-
return env.address;
|
|
11
|
+
return new Field(env.address.toField());
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
Address.type = 'ADDRESS';
|
|
15
15
|
Address.opcode = Opcode.ADDRESS;
|
|
16
16
|
export class StorageAddress extends EnvironmentGetterInstruction {
|
|
17
17
|
getEnvironmentValue(env) {
|
|
18
|
-
return env.storageAddress;
|
|
18
|
+
return new Field(env.storageAddress.toField());
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
StorageAddress.type = 'STORAGEADDRESS';
|
|
22
22
|
StorageAddress.opcode = Opcode.STORAGEADDRESS;
|
|
23
23
|
export class Sender extends EnvironmentGetterInstruction {
|
|
24
24
|
getEnvironmentValue(env) {
|
|
25
|
-
return env.sender;
|
|
25
|
+
return new Field(env.sender.toField());
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
Sender.type = 'SENDER';
|
|
29
29
|
Sender.opcode = Opcode.SENDER;
|
|
30
30
|
export class FeePerL2Gas extends EnvironmentGetterInstruction {
|
|
31
31
|
getEnvironmentValue(env) {
|
|
32
|
-
return env.feePerL2Gas;
|
|
32
|
+
return new Field(env.feePerL2Gas);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
FeePerL2Gas.type = 'FEEPERL2GAS';
|
|
36
36
|
FeePerL2Gas.opcode = Opcode.FEEPERL2GAS;
|
|
37
37
|
export class FeePerDAGas extends EnvironmentGetterInstruction {
|
|
38
38
|
getEnvironmentValue(env) {
|
|
39
|
-
return env.feePerDaGas;
|
|
39
|
+
return new Field(env.feePerDaGas);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
FeePerDAGas.type = 'FEEPERDAGAS';
|
|
43
43
|
FeePerDAGas.opcode = Opcode.FEEPERDAGAS;
|
|
44
|
+
export class TransactionFee extends EnvironmentGetterInstruction {
|
|
45
|
+
getEnvironmentValue(env) {
|
|
46
|
+
return new Field(env.transactionFee);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
TransactionFee.type = 'TRANSACTIONFEE';
|
|
50
|
+
TransactionFee.opcode = Opcode.TRANSACTIONFEE;
|
|
44
51
|
export class ChainId extends EnvironmentGetterInstruction {
|
|
45
52
|
getEnvironmentValue(env) {
|
|
46
|
-
return env.globals.chainId;
|
|
53
|
+
return new Field(env.globals.chainId);
|
|
47
54
|
}
|
|
48
55
|
}
|
|
49
56
|
ChainId.type = 'CHAINID';
|
|
50
57
|
ChainId.opcode = Opcode.CHAINID;
|
|
51
58
|
export class Version extends EnvironmentGetterInstruction {
|
|
52
59
|
getEnvironmentValue(env) {
|
|
53
|
-
return env.globals.version;
|
|
60
|
+
return new Field(env.globals.version);
|
|
54
61
|
}
|
|
55
62
|
}
|
|
56
63
|
Version.type = 'VERSION';
|
|
57
64
|
Version.opcode = Opcode.VERSION;
|
|
58
65
|
export class BlockNumber extends EnvironmentGetterInstruction {
|
|
59
66
|
getEnvironmentValue(env) {
|
|
60
|
-
return env.globals.blockNumber;
|
|
67
|
+
return new Field(env.globals.blockNumber);
|
|
61
68
|
}
|
|
62
69
|
}
|
|
63
70
|
BlockNumber.type = 'BLOCKNUMBER';
|
|
64
71
|
BlockNumber.opcode = Opcode.BLOCKNUMBER;
|
|
65
72
|
export class Timestamp extends EnvironmentGetterInstruction {
|
|
66
73
|
getEnvironmentValue(env) {
|
|
67
|
-
return env.globals.timestamp;
|
|
74
|
+
return new Uint64(env.globals.timestamp.toBigInt());
|
|
68
75
|
}
|
|
69
76
|
}
|
|
70
77
|
Timestamp.type = 'TIMESTAMP';
|
|
71
78
|
Timestamp.opcode = Opcode.TIMESTAMP;
|
|
72
|
-
|
|
73
|
-
// static type: string = 'COINBASE';
|
|
74
|
-
// static numberOfOperands = 1;
|
|
75
|
-
// constructor(private destOffset: number) {
|
|
76
|
-
// super();
|
|
77
|
-
// }
|
|
78
|
-
// async execute(machineState: AvmMachineState, _journal: AvmJournal): Promise<void> {
|
|
79
|
-
// const {coinbase} = machineState.executionEnvironment.globals;
|
|
80
|
-
// machineState.memory.set(this.destOffset, coinbase);
|
|
81
|
-
// this.incrementPc(machineState);
|
|
82
|
-
// }
|
|
83
|
-
// }
|
|
84
|
-
// export class BlockL2GasLimit extends EnvironmentGetterInstruction {
|
|
85
|
-
// static type: string = 'BLOCKL2GASLIMIT';
|
|
86
|
-
// static numberOfOperands = 1;
|
|
87
|
-
// constructor(private destOffset: number) {
|
|
88
|
-
// super();
|
|
89
|
-
// }
|
|
90
|
-
// async execute(machineState: AvmMachineState, _journal: AvmJournal): Promise<void> {
|
|
91
|
-
// const {blockL2GasLimit} = machineState.executionEnvironment.globals;
|
|
92
|
-
// machineState.memory.set(this.destOffset, blockL2GasLimit);
|
|
93
|
-
// this.incrementPc(machineState);
|
|
94
|
-
// }
|
|
95
|
-
// }
|
|
96
|
-
// export class BlockDAGasLimit extends EnvironmentGetterInstruction {
|
|
97
|
-
// static type: string = 'BLOCKDAGASLIMIT';
|
|
98
|
-
// static numberOfOperands = 1;
|
|
99
|
-
// constructor(private destOffset: number) {
|
|
100
|
-
// super();
|
|
101
|
-
// }
|
|
102
|
-
// async execute(machineState: AvmMachineState, _journal: AvmJournal): Promise<void> {
|
|
103
|
-
// const {blockDAGasLimit} = machineState.executionEnvironment.globals;
|
|
104
|
-
// machineState.memory.set(this.destOffset, blockDAGasLimit);
|
|
105
|
-
// this.incrementPc(machineState);
|
|
106
|
-
// }
|
|
107
|
-
// }
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRfZ2V0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9lbnZpcm9ubWVudF9nZXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxLQUFLLEVBQW9CLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE1BQWUsNEJBQTZCLFNBQVEsaUJBQWlCO0lBQ3pELFFBQVEsQ0FBQyxPQUFtQjtRQUNwQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBR0Y7QUFFRCxNQUFNLE9BQU8sT0FBUSxTQUFRLDRCQUE0QjtJQUk3QyxtQkFBbUIsQ0FBQyxHQUE0QjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDckIsQ0FBQzs7QUFMTSxZQUFJLEdBQVcsU0FBUyxDQUFDO0FBQ2hCLGNBQU0sR0FBVyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBT2xELE1BQU0sT0FBTyxjQUFlLFNBQVEsNEJBQTRCO0lBSXBELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQztJQUM1QixDQUFDOztBQUxNLG1CQUFJLEdBQVcsZ0JBQWdCLENBQUM7QUFDdkIscUJBQU0sR0FBVyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBT3pELE1BQU0sT0FBTyxNQUFPLFNBQVEsNEJBQTRCO0lBSTVDLG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNwQixDQUFDOztBQUxNLFdBQUksR0FBVyxRQUFRLENBQUM7QUFDZixhQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQU9qRCxNQUFNLE9BQU8sV0FBWSxTQUFRLDRCQUE0QjtJQUlqRCxtQkFBbUIsQ0FBQyxHQUE0QjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUM7SUFDekIsQ0FBQzs7QUFMTSxnQkFBSSxHQUFXLGFBQWEsQ0FBQztBQUNwQixrQkFBTSxHQUFXLE1BQU0sQ0FBQyxXQUFXLENBQUM7QUFPdEQsTUFBTSxPQUFPLFdBQVksU0FBUSw0QkFBNEI7SUFJakQsbUJBQW1CLENBQUMsR0FBNEI7UUFDeEQsT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDO0lBQ3pCLENBQUM7O0FBTE0sZ0JBQUksR0FBVyxhQUFhLENBQUM7QUFDcEIsa0JBQU0sR0FBVyxNQUFNLENBQUMsV0FBVyxDQUFDO0FBT3RELE1BQU0sT0FBTyxPQUFRLFNBQVEsNEJBQTRCO0lBSTdDLG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDN0IsQ0FBQzs7QUFMTSxZQUFJLEdBQVcsU0FBUyxDQUFDO0FBQ2hCLGNBQU0sR0FBVyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBT2xELE1BQU0sT0FBTyxPQUFRLFNBQVEsNEJBQTRCO0lBSTdDLG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDN0IsQ0FBQzs7QUFMTSxZQUFJLEdBQVcsU0FBUyxDQUFDO0FBQ2hCLGNBQU0sR0FBVyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBT2xELE1BQU0sT0FBTyxXQUFZLFNBQVEsNEJBQTRCO0lBSWpELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDakMsQ0FBQzs7QUFMTSxnQkFBSSxHQUFXLGFBQWEsQ0FBQztBQUNwQixrQkFBTSxHQUFXLE1BQU0sQ0FBQyxXQUFXLENBQUM7QUFPdEQsTUFBTSxPQUFPLFNBQVUsU0FBUSw0QkFBNEI7SUFJL0MsbUJBQW1CLENBQUMsR0FBNEI7UUFDeEQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUMvQixDQUFDOztBQUxNLGNBQUksR0FBVyxXQUFXLENBQUM7QUFDbEIsZ0JBQU0sR0FBVyxNQUFNLENBQUMsU0FBUyxDQUFDO0FBT3BELCtEQUErRDtBQUMvRCx3Q0FBd0M7QUFDeEMsbUNBQW1DO0FBRW5DLGdEQUFnRDtBQUNoRCxtQkFBbUI7QUFDbkIsUUFBUTtBQUVSLDBGQUEwRjtBQUMxRix3RUFBd0U7QUFFeEUsOERBQThEO0FBRTlELDBDQUEwQztBQUMxQyxRQUFRO0FBQ1IsSUFBSTtBQUVKLHNFQUFzRTtBQUN0RSwrQ0FBK0M7QUFDL0MsbUNBQW1DO0FBRW5DLGdEQUFnRDtBQUNoRCxtQkFBbUI7QUFDbkIsUUFBUTtBQUVSLDBGQUEwRjtBQUMxRiwrRUFBK0U7QUFFL0UscUVBQXFFO0FBRXJFLDBDQUEwQztBQUMxQyxRQUFRO0FBQ1IsSUFBSTtBQUVKLHNFQUFzRTtBQUN0RSwrQ0FBK0M7QUFDL0MsbUNBQW1DO0FBRW5DLGdEQUFnRDtBQUNoRCxtQkFBbUI7QUFDbkIsUUFBUTtBQUVSLDBGQUEwRjtBQUMxRiwrRUFBK0U7QUFFL0UscUVBQXFFO0FBRXJFLDBDQUEwQztBQUMxQyxRQUFRO0FBQ1IsSUFBSSJ9
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRfZ2V0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9lbnZpcm9ubWVudF9nZXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxLQUFLLEVBQW9CLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxNQUFlLDRCQUE2QixTQUFRLGlCQUFpQjtJQUN6RCxRQUFRLENBQUMsT0FBbUI7UUFDcEMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FHRjtBQUVELE1BQU0sT0FBTyxPQUFRLFNBQVEsNEJBQTRCO0lBSTdDLG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7O0FBTE0sWUFBSSxHQUFXLFNBQVMsQ0FBQztBQUNoQixjQUFNLEdBQVcsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQU9sRCxNQUFNLE9BQU8sY0FBZSxTQUFRLDRCQUE0QjtJQUlwRCxtQkFBbUIsQ0FBQyxHQUE0QjtRQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDOztBQUxNLG1CQUFJLEdBQVcsZ0JBQWdCLENBQUM7QUFDdkIscUJBQU0sR0FBVyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBT3pELE1BQU0sT0FBTyxNQUFPLFNBQVEsNEJBQTRCO0lBSTVDLG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O0FBTE0sV0FBSSxHQUFXLFFBQVEsQ0FBQztBQUNmLGFBQU0sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBT2pELE1BQU0sT0FBTyxXQUFZLFNBQVEsNEJBQTRCO0lBSWpELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O0FBTE0sZ0JBQUksR0FBVyxhQUFhLENBQUM7QUFDcEIsa0JBQU0sR0FBVyxNQUFNLENBQUMsV0FBVyxDQUFDO0FBT3RELE1BQU0sT0FBTyxXQUFZLFNBQVEsNEJBQTRCO0lBSWpELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O0FBTE0sZ0JBQUksR0FBVyxhQUFhLENBQUM7QUFDcEIsa0JBQU0sR0FBVyxNQUFNLENBQUMsV0FBVyxDQUFDO0FBT3RELE1BQU0sT0FBTyxjQUFlLFNBQVEsNEJBQTRCO0lBSXBELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O0FBTE0sbUJBQUksR0FBVyxnQkFBZ0IsQ0FBQztBQUN2QixxQkFBTSxHQUFXLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFPekQsTUFBTSxPQUFPLE9BQVEsU0FBUSw0QkFBNEI7SUFJN0MsbUJBQW1CLENBQUMsR0FBNEI7UUFDeEQsT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7O0FBTE0sWUFBSSxHQUFXLFNBQVMsQ0FBQztBQUNoQixjQUFNLEdBQVcsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQU9sRCxNQUFNLE9BQU8sT0FBUSxTQUFRLDRCQUE0QjtJQUk3QyxtQkFBbUIsQ0FBQyxHQUE0QjtRQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7QUFMTSxZQUFJLEdBQVcsU0FBUyxDQUFDO0FBQ2hCLGNBQU0sR0FBVyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBT2xELE1BQU0sT0FBTyxXQUFZLFNBQVEsNEJBQTRCO0lBSWpELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDOztBQUxNLGdCQUFJLEdBQVcsYUFBYSxDQUFDO0FBQ3BCLGtCQUFNLEdBQVcsTUFBTSxDQUFDLFdBQVcsQ0FBQztBQU90RCxNQUFNLE9BQU8sU0FBVSxTQUFRLDRCQUE0QjtJQUkvQyxtQkFBbUIsQ0FBQyxHQUE0QjtRQUN4RCxPQUFPLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7QUFMTSxjQUFJLEdBQVcsV0FBVyxDQUFDO0FBQ2xCLGdCQUFNLEdBQVcsTUFBTSxDQUFDLFNBQVMsQ0FBQyJ9
|
|
@@ -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":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,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,cAAc;IACtB,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,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EAIrB,+BAA+B,EAAE,MAAM;IAKpC,OAAO,CAAC,OAAO,EAAE,UAAU;IA4FxC,aAA6B,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC;CAC5D;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,9 +1,10 @@
|
|
|
1
|
-
import { FunctionSelector } from '@aztec/circuits.js';
|
|
1
|
+
import { FunctionSelector, Gas } from '@aztec/circuits.js';
|
|
2
2
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
|
-
import {
|
|
4
|
-
import { convertPublicExecutionResult, createPublicExecutionContext, updateAvmContextFromPublicExecutionResult, } from '../../public/transitional_adaptors.js';
|
|
3
|
+
import { convertAvmResultsToPxResult, createPublicExecution } from '../../public/transitional_adaptors.js';
|
|
5
4
|
import { gasLeftToGas, sumGas } from '../avm_gas.js';
|
|
6
5
|
import { Field, Uint8 } from '../avm_memory_types.js';
|
|
6
|
+
import { AvmSimulator } from '../avm_simulator.js';
|
|
7
|
+
import { RethrownError } from '../errors.js';
|
|
7
8
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
8
9
|
import { Addressing } from './addressing_mode.js';
|
|
9
10
|
import { Instruction } from './instruction.js';
|
|
@@ -37,13 +38,15 @@ class ExternalCall extends Instruction {
|
|
|
37
38
|
const memoryOperations = { reads: calldataSize + 5, writes: 1 + this.retSize, indirect: this.indirect };
|
|
38
39
|
const totalGas = sumGas(this.gasCost(memoryOperations), allocatedGas);
|
|
39
40
|
context.machineState.consumeGas(totalGas);
|
|
40
|
-
// TRANSITIONAL: This should be removed once the
|
|
41
|
+
// TRANSITIONAL: This should be removed once the kernel handles and entire enqueued call per circuit
|
|
41
42
|
const nestedContext = context.createNestedContractCallContext(callAddress.toFr(), calldata, allocatedGas, this.type, FunctionSelector.fromField(functionSelector));
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
const nestedCallResults =
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
const startSideEffectCounter = nestedContext.persistableState.trace.accessCounter;
|
|
44
|
+
const oldStyleExecution = createPublicExecution(startSideEffectCounter, nestedContext.environment, calldata);
|
|
45
|
+
const nestedCallResults = await new AvmSimulator(nestedContext).execute();
|
|
46
|
+
const pxResults = convertAvmResultsToPxResult(nestedCallResults, startSideEffectCounter, oldStyleExecution, Gas.from(allocatedGas), nestedContext);
|
|
47
|
+
// store the old PublicExecutionResult object to maintain a recursive data structure for the old kernel
|
|
48
|
+
context.persistableState.transitionalExecutionResult.nestedExecutions.push(pxResults);
|
|
49
|
+
// END TRANSITIONAL
|
|
47
50
|
// const nestedContext = context.createNestedContractCallContext(
|
|
48
51
|
// callAddress.toFr(),
|
|
49
52
|
// calldata,
|
|
@@ -52,8 +55,16 @@ class ExternalCall extends Instruction {
|
|
|
52
55
|
// FunctionSelector.fromField(functionSelector),
|
|
53
56
|
// );
|
|
54
57
|
// const nestedCallResults: AvmContractCallResults = await new AvmSimulator(nestedContext).execute();
|
|
55
|
-
// const nestedPersistableState = nestedContext.persistableState;
|
|
56
58
|
const success = !nestedCallResults.reverted;
|
|
59
|
+
// TRANSITIONAL: We rethrow here so that the MESSAGE gets propagated.
|
|
60
|
+
// This means that for now, the caller cannot recover from errors.
|
|
61
|
+
if (!success) {
|
|
62
|
+
if (!nestedCallResults.revertReason) {
|
|
63
|
+
throw new Error('A reverted nested call should be assigned a revert reason in the AVM execution loop');
|
|
64
|
+
}
|
|
65
|
+
// The nested call's revertReason will be used to track the stack of error causes down to the root.
|
|
66
|
+
throw new RethrownError(nestedCallResults.revertReason.message, nestedCallResults.revertReason);
|
|
67
|
+
}
|
|
57
68
|
// We only take as much data as was specified in the return size and pad with zeroes if the return data is smaller
|
|
58
69
|
// than the specified size in order to prevent that memory to be left with garbage
|
|
59
70
|
const returnData = nestedCallResults.output.slice(0, this.retSize);
|
|
@@ -65,10 +76,10 @@ class ExternalCall extends Instruction {
|
|
|
65
76
|
context.machineState.refundGas(gasLeftToGas(nestedContext.machineState));
|
|
66
77
|
// TODO: Should we merge the changes from a nested call in the case of a STATIC call?
|
|
67
78
|
if (success) {
|
|
68
|
-
context.persistableState.acceptNestedCallState(
|
|
79
|
+
context.persistableState.acceptNestedCallState(nestedContext.persistableState);
|
|
69
80
|
}
|
|
70
81
|
else {
|
|
71
|
-
context.persistableState.rejectNestedCallState(
|
|
82
|
+
context.persistableState.rejectNestedCallState(nestedContext.persistableState);
|
|
72
83
|
}
|
|
73
84
|
memory.assert(memoryOperations);
|
|
74
85
|
context.machineState.incrementPc();
|
|
@@ -154,4 +165,4 @@ Revert.wireFormat = [
|
|
|
154
165
|
OperandType.UINT32,
|
|
155
166
|
OperandType.UINT32,
|
|
156
167
|
];
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWxfY2FsbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvZXh0ZXJuYWxfY2FsbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxNQUFlLFlBQWEsU0FBUSxXQUFXO0lBZ0I3QyxZQUNVLFFBQWdCLEVBQ2hCLFNBQWlCLENBQUMsK0RBQStELEVBQ2pGLFVBQWtCLEVBQ2xCLFVBQWtCLEVBQ2xCLGNBQXNCLEVBQ3RCLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixhQUFxQjtJQUM3Qiw0RkFBNEY7SUFDNUYsNkZBQTZGO0lBQzdGLHFFQUFxRTtJQUM3RCwrQkFBdUM7UUFFL0MsS0FBSyxFQUFFLENBQUM7UUFiQSxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsZUFBVSxHQUFWLFVBQVUs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytecode_serialization.d.ts","sourceRoot":"","sources":["../../../src/avm/serialization/bytecode_serialization.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"bytecode_serialization.d.ts","sourceRoot":"","sources":["../../../src/avm/serialization/bytecode_serialization.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAkDvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,UAAU,yBAAyB;IACjC,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;IACrD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;AAkFpE,UAAU,YAAY;IACpB,SAAS,IAAI,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,cAAc,GAAE,cAAkC,GACjD,WAAW,EAAE,CAiBf"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DAGasLeft, L2GasLeft } from '../opcodes/context_getters.js';
|
|
2
|
+
import { ToRadixLE } from '../opcodes/conversion.js';
|
|
2
3
|
import { Keccak, Pedersen, Poseidon2, Sha256 } from '../opcodes/hashing.js';
|
|
3
|
-
import { Add, Address, And, BlockNumber, CMov, Call, CalldataCopy, Cast, ChainId, Div, EmitNoteHash, EmitNullifier, EmitUnencryptedLog, Eq, FeePerDAGas, FeePerL2Gas, FieldDiv, GetContractInstance, InternalCall, InternalReturn, Jump, JumpI, L1ToL2MessageExists, Lt, Lte, Mov, Mul, Not, NoteHashExists, NullifierExists, Or, Return, Revert, SLoad, SStore, SendL2ToL1Message, Sender, Set, Shl, Shr, StaticCall, StorageAddress, Sub, Timestamp, Version, Xor, } from '../opcodes/index.js';
|
|
4
|
+
import { Add, Address, And, BlockNumber, CMov, Call, CalldataCopy, Cast, ChainId, Div, EmitNoteHash, EmitNullifier, EmitUnencryptedLog, Eq, FeePerDAGas, FeePerL2Gas, FieldDiv, GetContractInstance, InternalCall, InternalReturn, Jump, JumpI, L1ToL2MessageExists, Lt, Lte, Mov, Mul, Not, NoteHashExists, NullifierExists, Or, Return, Revert, SLoad, SStore, SendL2ToL1Message, Sender, Set, Shl, Shr, StaticCall, StorageAddress, Sub, Timestamp, TransactionFee, Version, Xor, } from '../opcodes/index.js';
|
|
4
5
|
import { BufferCursor } from './buffer_cursor.js';
|
|
5
6
|
import { Opcode } from './instruction_serialization.js';
|
|
6
7
|
// TODO(4359): This is a function so that Call and StaticCall can be lazily resolved.
|
|
@@ -26,6 +27,7 @@ const INSTRUCTION_SET = () => new Map([
|
|
|
26
27
|
[Sender.opcode, Sender],
|
|
27
28
|
[FeePerL2Gas.opcode, FeePerL2Gas],
|
|
28
29
|
[FeePerDAGas.opcode, FeePerDAGas],
|
|
30
|
+
[TransactionFee.opcode, TransactionFee],
|
|
29
31
|
//[Contractcalldepth.opcode, Contractcalldepth],
|
|
30
32
|
// Execution Environment - Globals
|
|
31
33
|
[ChainId.opcode, ChainId],
|
|
@@ -73,6 +75,8 @@ const INSTRUCTION_SET = () => new Map([
|
|
|
73
75
|
[Poseidon2.opcode, Poseidon2],
|
|
74
76
|
[Sha256.opcode, Sha256],
|
|
75
77
|
[Pedersen.opcode, Pedersen],
|
|
78
|
+
// Conversions
|
|
79
|
+
[ToRadixLE.opcode, ToRadixLE],
|
|
76
80
|
]);
|
|
77
81
|
/**
|
|
78
82
|
* Serializes an array of instructions to bytecode.
|
|
@@ -101,4 +105,4 @@ export function decodeFromBytecode(bytecode, instructionSet = INSTRUCTION_SET())
|
|
|
101
105
|
}
|
|
102
106
|
return instructions;
|
|
103
107
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZWNvZGVfc2VyaWFsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vc2VyaWFsaXphdGlvbi9ieXRlY29kZV9zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RSxPQUFPLEVBQ0wsR0FBRyxFQUNILE9BQU8sRUFDUCxHQUFHLEVBQ0gsV0FBVyxFQUNYLElBQUksRUFDSixJQUFJLEVBQ0osWUFBWSxFQUNaLElBQUksRUFDSixPQUFPLEVBQ1AsR0FBRyxFQUNILFlBQVksRUFDWixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLEVBQUUsRUFDRixXQUFXLEVBQ1gsV0FBVyxFQUNYLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLGNBQWMsRUFDZCxJQUFJLEVBQ0osS0FBSyxFQUNMLG1CQUFtQixFQUNuQixFQUFFLEVBQ0YsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsRUFBRSxFQUNGLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILFVBQVUsRUFDVixjQUFjLEVBQ2QsR0FBRyxFQUNILFNBQVMsRUFDVCxjQUFjLEVBQ2QsT0FBTyxFQUNQLEdBQUcsR0FDSixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUs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
|