137 lines
2.3 KiB
Nim
137 lines
2.3 KiB
Nim
# Nimbus
|
|
# Copyright (c) 2018 Status Research & Development GmbH
|
|
# Licensed under either of
|
|
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
# http://www.apache.org/licenses/LICENSE-2.0)
|
|
# * MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
# http://opensource.org/licenses/MIT)
|
|
# at your option. This file may not be copied, modified, or distributed except
|
|
# according to those terms.
|
|
|
|
when not defined(vm2_enabled):
|
|
{.fatal: "Flags \"vm2_enabled\" must be defined"}
|
|
when defined(evmc_enabled):
|
|
{.fatal: "Flags \"evmc_enabled\" and \"vm2_enabled\" are mutually exclusive"}
|
|
|
|
|
|
# see vm_opcode_value
|
|
import
|
|
./interpreter/v2opcode_values as vmo
|
|
export
|
|
vmo.Op
|
|
|
|
|
|
# see v2forks
|
|
import
|
|
./interpreter/v2forks as vmf
|
|
export
|
|
vmf.Fork
|
|
|
|
|
|
# see vm_message
|
|
import
|
|
./v2message as vmm
|
|
export
|
|
vmm.isCreate
|
|
|
|
# Used in vm_types. Beware of recursive dependencies
|
|
|
|
# see vm_computation
|
|
import
|
|
./v2computation as vmc
|
|
export
|
|
vmc.accountExists,
|
|
vmc.addLogEntry,
|
|
vmc.commit,
|
|
vmc.dispose,
|
|
vmc.execCallOrCreate,
|
|
vmc.chainTo,
|
|
vmc.execSelfDestruct,
|
|
vmc.executeOpcodes,
|
|
vmc.fork,
|
|
vmc.getBalance,
|
|
vmc.getBlockHash,
|
|
vmc.getBlockNumber,
|
|
vmc.getChainId,
|
|
vmc.getCode,
|
|
vmc.getCodeHash,
|
|
vmc.getCodeSize,
|
|
vmc.getCoinbase,
|
|
vmc.getDifficulty,
|
|
vmc.getGasLimit,
|
|
vmc.getGasPrice,
|
|
vmc.getGasRefund,
|
|
vmc.getOrigin,
|
|
vmc.getStorage,
|
|
vmc.getTimestamp,
|
|
vmc.isError,
|
|
vmc.isOriginComputation,
|
|
vmc.isSuccess,
|
|
vmc.isSuicided,
|
|
vmc.merge,
|
|
vmc.newComputation,
|
|
vmc.prepareTracer,
|
|
vmc.refundSelfDestruct,
|
|
vmc.rollback,
|
|
vmc.selfDestruct,
|
|
vmc.setError,
|
|
vmc.shouldBurnGas,
|
|
vmc.snapshot,
|
|
vmc.traceError,
|
|
vmc.traceOpCodeEnded,
|
|
vmc.traceOpCodeStarted,
|
|
vmc.tracingEnabled,
|
|
vmc.writeContract
|
|
|
|
|
|
import
|
|
./interpreter/gas_meter as gmt
|
|
export
|
|
gmt.consumeGas,
|
|
gmt.init,
|
|
gmt.refundGas,
|
|
gmt.returnGas
|
|
|
|
|
|
import
|
|
./code_stream as cst
|
|
export
|
|
cst.CodeStream,
|
|
cst.`$`,
|
|
cst.newCodeStream,
|
|
cst.newCodeStreamFromUnescaped,
|
|
cst.read,
|
|
cst.readVmWord,
|
|
cst.len,
|
|
cst.next,
|
|
cst.items,
|
|
cst.`[]`,
|
|
cst.peek,
|
|
cst.updatePc,
|
|
cst.isValidOpcode,
|
|
cst.decompile,
|
|
cst.displayDecompiled,
|
|
cst.hasSStore,
|
|
cst.atEnd
|
|
|
|
|
|
import
|
|
./stack as stk
|
|
export
|
|
stk.Stack,
|
|
stk.`$`,
|
|
stk.`[]`,
|
|
stk.dup,
|
|
stk.len,
|
|
stk.newStack,
|
|
stk.peek,
|
|
stk.peekInt,
|
|
stk.popAddress,
|
|
stk.popInt,
|
|
stk.popTopic,
|
|
stk.push,
|
|
stk.swap,
|
|
stk.top
|
|
|
|
# End
|