Class: Ethereum::Opcodes
Constant Summary collapse
- TABLE =
{ # schema: [op, ins, outs, gas] 0x00 => [:STOP, 0, 0, 0], 0x01 => [:ADD, 2, 1, 3], 0x02 => [:MUL, 2, 1, 5], 0x03 => [:SUB, 2, 1, 3], 0x04 => [:DIV, 2, 1, 5], 0x05 => [:SDIV, 2, 1, 5], 0x06 => [:MOD, 2, 1, 5], 0x07 => [:SMOD, 2, 1, 5], 0x08 => [:ADDMOD, 3, 1, 8], 0x09 => [:MULMOD, 3, 1, 8], 0x0a => [:EXP, 2, 1, 10], 0x0b => [:SIGNEXTEND, 2, 1, 5], 0x10 => [:LT, 2, 1, 3], 0x11 => [:GT, 2, 1, 3], 0x12 => [:SLT, 2, 1, 3], 0x13 => [:SGT, 2, 1, 3], 0x14 => [:EQ, 2, 1, 3], 0x15 => [:ISZERO, 1, 1, 3], 0x16 => [:AND, 2, 1, 3], 0x17 => [:OR, 2, 1, 3], 0x18 => [:XOR, 2, 1, 3], 0x19 => [:NOT, 1, 1, 3], 0x1a => [:BYTE, 2, 1, 3], 0x20 => [:SHA3, 2, 1, 30], 0x30 => [:ADDRESS, 0, 1, 2], 0x31 => [:BALANCE, 1, 1, 20], 0x32 => [:ORIGIN, 0, 1, 2], 0x33 => [:CALLER, 0, 1, 2], 0x34 => [:CALLVALUE, 0, 1, 2], 0x35 => [:CALLDATALOAD, 1, 1, 3], 0x36 => [:CALLDATASIZE, 0, 1, 2], 0x37 => [:CALLDATACOPY, 3, 0, 3], 0x38 => [:CODESIZE, 0, 1, 2], 0x39 => [:CODECOPY, 3, 0, 3], 0x3a => [:GASPRICE, 0, 1, 2], 0x3b => [:EXTCODESIZE, 1, 1, 20], 0x3c => [:EXTCODECOPY, 4, 0, 20], 0x40 => [:BLOCKHASH, 1, 1, 20], 0x41 => [:COINBASE, 0, 1, 2], 0x42 => [:TIMESTAMP, 0, 1, 2], 0x43 => [:NUMBER, 0, 1, 2], 0x44 => [:DIFFICULTY, 0, 1, 2], 0x45 => [:GASLIMIT, 0, 1, 2], 0x50 => [:POP, 1, 0, 2], 0x51 => [:MLOAD, 1, 1, 3], 0x52 => [:MSTORE, 2, 0, 3], 0x53 => [:MSTORE8, 2, 0, 3], 0x54 => [:SLOAD, 1, 1, 50], 0x55 => [:SSTORE, 2, 0, 0], 0x56 => [:JUMP, 1, 0, 8], 0x57 => [:JUMPI, 2, 0, 10], 0x58 => [:PC, 0, 1, 2], 0x59 => [:MSIZE, 0, 1, 2], 0x5a => [:GAS, 0, 1, 2], 0x5b => [:JUMPDEST, 0, 0, 1], 0xa0 => [:LOG0, 2, 0, 375], 0xa1 => [:LOG1, 3, 0, 750], 0xa2 => [:LOG2, 4, 0, 1125], 0xa3 => [:LOG3, 5, 0, 1500], 0xa4 => [:LOG4, 6, 0, 1875], 0xf0 => [:CREATE, 3, 1, 32000], 0xf1 => [:CALL, 7, 1, 40], 0xf2 => [:CALLCODE, 7, 1, 40], 0xf3 => [:RETURN, 2, 0, 0], 0xf4 => [:DELEGATECALL, 6, 0, 40], 0xff => [:SUICIDE, 1, 0, 0], }
- PREFIX_LOG =
'LOG'.freeze
- PREFIX_PUSH =
'PUSH'.freeze
- PREFIX_DUP =
'DUP'.freeze
- PREFIX_SWAP =
'SWAP'.freeze
- REVERSE_TABLE =
{}
- GDEFAULT =
Non-opcode gas prices
1- GMEMORY =
3- GQUADRATICMEMDENOM =
1 gas per 512 quadwords
512- GSTORAGEREFUND =
15000- GSTORAGEKILL =
5000- GSTORAGEMOD =
5000- GSTORAGEADD =
20000- GEXPONENTBYTE =
cost of EXP exponent per byte
10- GCOPY =
cost to copy one 32 byte word
3- GCONTRACTBYTE =
one byte of code in contract creation
200- GCALLVALUETRANSFER =
non-zero-valued call
9000- GLOGBYTE =
cost of a byte of logdata
8- GTXCOST =
TX BASE GAS COST
21000- GTXDATAZERO =
TX DATA ZERO BYTE GAS COST
4- GTXDATANONZERO =
TX DATA NON ZERO BYTE GAS COST
68- GSHA3WORD =
Cost of SHA3 per word
6- GSHA256BASE =
Base c of SHA256
60- GSHA256WORD =
Cost of SHA256 per word
12- GRIPEMD160BASE =
Base cost of RIPEMD160
600- GRIPEMD160WORD =
Cost of RIPEMD160 per word
120- GIDENTITYBASE =
Base cost of indentity
15- GIDENTITYWORD =
Cost of identity per word
3- GECRECOVER =
Cost of ecrecover op
3000- GSTIPEND =
2300- GCALLNEWACCOUNT =
25000- GSUICIDEREFUND =
24000