@aztec/simulator 0.32.1 → 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/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.map +1 -1
- package/dest/acvm/oracle/oracle.js +2 -3
- 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_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 +95 -2
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +10 -8
- 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 +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 +50 -68
- 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/avm/temporary_executor_migration.d.ts +2 -0
- package/dest/avm/temporary_executor_migration.d.ts.map +1 -1
- package/dest/avm/temporary_executor_migration.js +14 -3
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +6 -2
- package/dest/public/executor.d.ts +10 -2
- 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/package.json +15 -9
- package/src/acvm/oracle/index.ts +0 -1
- package/src/acvm/oracle/oracle.ts +1 -2
- package/src/avm/avm_context.ts +11 -33
- 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 +130 -2
- package/src/avm/avm_simulator.ts +9 -7
- 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 +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 +65 -84
- 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/avm/temporary_executor_migration.ts +16 -2
- package/src/client/private_execution.ts +8 -2
- package/src/public/executor.ts +75 -22
- package/src/public/index.ts +2 -2
- 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
|
@@ -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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"}
|
|
@@ -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"}
|