module
neo3.vm
NEO Virtual Machine classes.
Classes
ScriptBuilder— A utility class to create scripts (sequence of opcodes) that can be executed by theNEO Virtual Machine.Syscalls— Container holding all NEO blockchain interop syscalls.
enum
neo3.vm.OpCode()
Bases
enum.IntEnum
int
enum.ReprEnum
enum.Enum
NEO Virtual Machine instructions.
Can be concatenated into a hex-escaped bytes sequence.
Example
In [1]: from neo3.contracts import vm
In [2]: script = vm.OpCode.PUSHDATA1 + b'' + vm.OpCode.RET
In [3]: script Out[3]: b' @'
Members
ABORT(int) — 0x38ABORTMSG(int) — 0xe0ABS(int) — 0x9aADD(int) — 0x9eAND(int) — 0x91APPEND(int) — 0xcfASSERT(int) — 0x39ASSERTMSG(int) — 0xe1BOOLAND(int) — 0xabBOOLOR(int) — 0xacCALL(int) — 0x34CALLA(int) — 0x36CALLT(int) — 0x37CALL_L(int) — 0x35CAT(int) — 0x8bCLEAR(int) — 0x49CLEARITEMS(int) — 0xd3CONVERT(int) — 0xdbDEC(int) — 0x9dDEPTH(int) — 0x43DIV(int) — 0xa1DROP(int) — 0x45DUP(int) — 0x4aENDFINALLY(int) — 0x3fENDTRY(int) — 0x3dENDTRY_L(int) — 0x3eEQUAL(int) — 0x97GE(int) — 0xb8GT(int) — 0xb7HASKEY(int) — 0xcbINC(int) — 0x9cINITSLOT(int) — 0x57INITSSLOT(int) — 0x56INVERT(int) — 0x90ISNULL(int) — 0xd8ISTYPE(int) — 0xd9JMP(int) — 0x22JMPEQ(int) — 0x28JMPEQ_L(int) — 0x29JMPGE(int) — 0x2eJMPGE_L(int) — 0x2fJMPGT(int) — 0x2cJMPGT_L(int) — 0x2dJMPIF(int) — 0x24JMPIFNOT(int) — 0x26JMPIFNOT_L(int) — 0x27JMPIF_L(int) — 0x25JMPLE(int) — 0x32JMPLE_L(int) — 0x33JMPLT(int) — 0x30JMPLT_L(int) — 0x31JMPNE(int) — 0x2aJMPNE_L(int) — 0x2bJMP_L(int) — 0x23KEYS(int) — 0xccLDARG(int) — 0x7fLDARG0(int) — 0x78LDARG1(int) — 0x79LDARG2(int) — 0x7aLDARG3(int) — 0x7bLDARG4(int) — 0x7cLDARG5(int) — 0x7dLDARG6(int) — 0x7eLDLOC(int) — 0x6fLDLOC0(int) — 0x68LDLOC1(int) — 0x69LDLOC2(int) — 0x6aLDLOC3(int) — 0x6bLDLOC4(int) — 0x6cLDLOC5(int) — 0x6dLDLOC6(int) — 0x6eLDSFLD(int) — 0x5fLDSFLD0(int) — 0x58LDSFLD1(int) — 0x59LDSFLD2(int) — 0x5aLDSFLD3(int) — 0x5bLDSFLD4(int) — 0x5cLDSFLD5(int) — 0x5dLDSFLD6(int) — 0x5eLE(int) — 0xb6LEFT(int) — 0x8dLT(int) — 0xb5MAX(int) — 0xbaMEMCPY(int) — 0x89MIN(int) — 0xb9MOD(int) — 0xa2MODMUL(int) — 0xa5MODPOW(int) — 0xa6MUL(int) — 0xa0NEGATE(int) — 0x9bNEWARRAY(int) — 0xc3NEWARRAY0(int) — 0xc2NEWARRAY_T(int) — 0xc4NEWBUFFER(int) — 0x88NEWMAP(int) — 0xc8NEWSTRUCT(int) — 0xc6NEWSTRUCT0(int) — 0xc5NIP(int) — 0x46NOP(int) — 0x21NOT(int) — 0xaaNOTEQUAL(int) — 0x98NUMEQUAL(int) — 0xb3NUMNOTEQUAL(int) — 0xb4NZ(int) — 0xb1OR(int) — 0x92OVER(int) — 0x4bPACK(int) — 0xc0PACKMAP(int) — 0xbePACKSTRUCT(int) — 0xbfPICK(int) — 0x4dPICKITEM(int) — 0xcePOPITEM(int) — 0xd4POW(int) — 0xa3PUSH0(int) — 0x10PUSH1(int) — 0x11PUSH10(int) — 0x1aPUSH11(int) — 0x1bPUSH12(int) — 0x1cPUSH13(int) — 0x1dPUSH14(int) — 0x1ePUSH15(int) — 0x1fPUSH16(int) — 0x20PUSH2(int) — 0x12PUSH3(int) — 0x13PUSH4(int) — 0x14PUSH5(int) — 0x15PUSH6(int) — 0x16PUSH7(int) — 0x17PUSH8(int) — 0x18PUSH9(int) — 0x19PUSHA(int) — 0xaPUSHDATA1(int) — 0xcPUSHDATA2(int) — 0xdPUSHDATA4(int) — 0xePUSHF(int) — 0x9PUSHINT128(int) — 0x4PUSHINT16(int) — 0x1PUSHINT256(int) — 0x5PUSHINT32(int) — 0x2PUSHINT64(int) — 0x3PUSHINT8(int) — 0x0PUSHM1(int) — 0xfPUSHNULL(int) — 0xbPUSHT(int) — 0x8REMOVE(int) — 0xd2RET(int) — 0x40REVERSE3(int) — 0x53REVERSE4(int) — 0x54REVERSEITEMS(int) — 0xd1REVERSEN(int) — 0x55RIGHT(int) — 0x8eROLL(int) — 0x52ROT(int) — 0x51SETITEM(int) — 0xd0SHL(int) — 0xa8SHR(int) — 0xa9SIGN(int) — 0x99SIZE(int) — 0xcaSQRT(int) — 0xa4STARG(int) — 0x87STARG0(int) — 0x80STARG1(int) — 0x81STARG2(int) — 0x82STARG3(int) — 0x83STARG4(int) — 0x84STARG5(int) — 0x85STARG6(int) — 0x86STLOC(int) — 0x77STLOC0(int) — 0x70STLOC1(int) — 0x71STLOC2(int) — 0x72STLOC3(int) — 0x73STLOC4(int) — 0x74STLOC5(int) — 0x75STLOC6(int) — 0x76STSFLD(int) — 0x67STSFLD0(int) — 0x60STSFLD1(int) — 0x61STSFLD2(int) — 0x62STSFLD3(int) — 0x63STSFLD4(int) — 0x64STSFLD5(int) — 0x65STSFLD6(int) — 0x66SUB(int) — 0x9fSUBSTR(int) — 0x8cSWAP(int) — 0x50SYSCALL(int) — 0x41THROW(int) — 0x3aTRY(int) — 0x3bTRY_L(int) — 0x3cTUCK(int) — 0x4eUNPACK(int) — 0xc1VALUES(int) — 0xcdWITHIN(int) — 0xbbXDROP(int) — 0x48XOR(int) — 0x93
class
neo3.vm.ScriptBuilder()
A utility class to create scripts (sequence of opcodes) that can be executed by theNEO Virtual Machine.
Methods
emit_contract_call(script_hash,operation,call_flags)(ScriptBuilder) — Emit opcode sequence to call a smart contrat operation.emit_contract_call_with_args(script_hash,operation,args,call_flags)(ScriptBuilder) — Emit opcode sequence to call a smart contrat operation with arguments.
method
emit_contract_call(script_hash, operation, call_flags=None) → ScriptBuilder
Emit opcode sequence to call a smart contrat operation.
Parameters
script_hash(UInt160) — contract script hash.operation(str) — method to call on contract.call_flags(Optional, optional) — call flags for the operation.
method
emit_contract_call_with_args(script_hash, operation, args, call_flags=None) → ScriptBuilder
Emit opcode sequence to call a smart contrat operation with arguments.
Parameters
script_hash(UInt160) — contract script hash.operation(str) — method to call on contract.args(Union) — parameters to pass to theoperation.call_flags(Optional, optional) — call flags for the operation.
enum
neo3.vm.StackItemType()
Bases
enum.IntEnum
int
enum.ReprEnum
enum.Enum
StackItemType as defined inside the virtual machine
Members
ANY(int) — 0x0ARRAY(int) — 0x40BOOLEAN(int) — 0x20BUFFER(int) — 0x30BYTESTRING(int) — 0x28INTEGER(int) — 0x21MAP(int) — 0x48POINTER(int) — 0x10STRUCT(int) — 0x41
class
neo3.vm.Syscalls()
Container holding all NEO blockchain interop syscalls.
enum
neo3.vm.VMState()
Bases
enum.IntEnum
int
enum.ReprEnum
enum.Enum
Enum where members are also (and must be) ints
Members
BREAK(int) — 0x4FAULT(int) — 0x2HALT(int) — 0x1NONE(int) — 0x0