Last active
August 29, 2017 21:33
-
-
Save jwasinger/292fd646db4e6759bdb7d25c4fbd22d8 to your computer and use it in GitHub Desktop.
Scripts to generate valid opcode tests in transaction to empty. Execute `python generate_filler.py` with the template file in the same directory to produce the final filler file. `generate_filler.py` depends on LLLC being installed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from subprocess import Popen, PIPE, STDOUT | |
import json, os, sys | |
FILLER_TEMPLATE_FILE='Opcodes_TransactionInit.json-template' | |
FILLER_RESULT_FILE='Opcodes_TransactionInitFiller.json' | |
def compileLLL(source): | |
proc = Popen(["lllc", "-x"], stdin=PIPE, stdout=PIPE, stderr=STDOUT) | |
data = proc.communicate(input='{0}'.format(source))[0] | |
return '0x'+data.strip('\n') | |
badOps = set([0x0c, 0x0d, 0x0e, 0x0f, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x3f, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x5c, 0x5d, 0x5e, 0x5f, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfb, 0xfc, 0xfe]) | |
goodOps = { | |
0x00: { | |
'name': 'STOP', | |
'lll': '{ (STOP) (RETURN 0x0 0x1) }', | |
'expect': 0 | |
}, | |
0x01: { | |
'name': 'ADD', | |
'lll': '{ (ADD 0x01 0x01) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x02: { | |
'name': 'MUL', | |
'lll': '{ (MUL 0x01 0x01) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x03: { | |
'name': 'SUB', | |
'lll': '{ (SUB 0x01 0x01) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x04: { | |
'lll': '{ (DIV 0x01 0x01) (RETURN 0x0 0x0) }', | |
'name': 'DIV', | |
'expect': 0 | |
}, | |
0x05: { | |
'lll': '{ (SDIV 0x01 0x01) (RETURN 0x0 0x0) }', | |
'name': 'SDIV', | |
'expect': 0 | |
}, | |
0x06: { | |
'lll': '{ (MOD 0x01 0x01) (RETURN 0x0 0x0) }', | |
'name': 'MOD', | |
'expect': 0 | |
}, | |
0x07: { | |
'lll': '{ (SMOD 0x01 0x01) (RETURN 0x0 0x0) }', | |
'name': 'SMOD', | |
'expect': 0 | |
}, | |
0x08: { | |
'lll': '{ (ADDMOD 0x01 0x01 0x01) (RETURN 0x0 0x0) }', | |
'name': 'ADDMOD', | |
'expect': 0 | |
}, | |
0x09: { | |
'lll': '{ (MULMOD 0x01 0x01 0x01) (RETURN 0x0 0x0) }', | |
'name': 'MULMOD' | |
}, | |
0x0a: { | |
'lll': '{ (EXP 0x01 0x01) (RETURN 0x0 0x0) }', | |
'name': 'EXP', | |
'expect': 0 | |
}, | |
0x0b: { | |
'lll': '{ (SIGNEXTEND 0x01 0x01) (RETURN 0x0 0x0) }', | |
'name': 'SIGNEXTEND', | |
'expect': 0 | |
}, | |
0x10: { | |
'lll': '{ (LT 0x01 0x01) (RETURN 0x0 0x0) }', | |
'name': 'LT', | |
'expect': 0 | |
}, | |
0x11: { | |
'lll': '{ (GT 0x01 0x01) (RETURN 0x0 0x0) }', | |
'name': 'GT', | |
'expect': 0 | |
}, | |
0x12: { | |
'lll': '{ (SLT 0x01 0x01) (RETURN 0x0 0x0) }', | |
'name': 'SLT', | |
'expect': 0 | |
}, | |
0x13: { | |
'lll': '{ (SGT 0x01 0x01) (RETURN 0x0 0x0) }', | |
'name': 'SGT', | |
'expect': 0 | |
}, | |
0x14: { | |
'lll': '{ (EQ 0x01 0x01) (RETURN 0x0 0x0) }', | |
'name': 'EQ', | |
'expect': 0 | |
}, | |
0x15: { | |
'name': 'ISZERO', | |
'lll': '{ (ISZERO 0x00) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x16: { | |
'lll': '{ (AND 0x00 0x00) (RETURN 0x0 0x0) }', | |
'name': 'AND', | |
'expect': 0 | |
}, | |
0x17: { | |
'lll': '{ (OR 0x00 0x00) (RETURN 0x0 0x0) }', | |
'name': 'OR', | |
'expect': 0 | |
}, | |
0x18: { | |
'lll': '{ (XOR 0x00 0x00) (RETURN 0x0 0x0) }', | |
'name': 'XOR', | |
'expect': 0 | |
}, | |
0x19: { | |
'lll': '{ (XOR 0x00 0x00) (RETURN 0x0 0x0) }', | |
'name': 'XOR', | |
'expect': 0 | |
}, | |
0x1a: { | |
'name': 'BYTE', | |
'lll': '{ (BYTE 0 0x8040201008040201) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x20: { | |
'lll': '{ (SHA3 0x00 0x00) (RETURN 0x0 0x0) }', | |
'bytecode': '600060002060006000f3', | |
'name': 'SHA3', | |
'expect': 0 | |
}, | |
0x30: { | |
'name': 'ADDRESS', | |
'lll': '{ (ADDRESS) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x31: { | |
'name': 'BALANCE', | |
'lll': '{ (BALANCE 0x0) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x32: { | |
'name': 'ORIGIN', | |
'lll': '{ (ORIGIN) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x33: { | |
'name': 'CALLER', | |
'lll': '{ (CALLER) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x34: { | |
'name': 'CALLVALUE', | |
'lll': '{ (CALLVALUE) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x35: { | |
'name': 'CALLDATALOAD', | |
'lll': '{ (CALLDATALOAD 0x0) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x36: { | |
'name': 'CALLDATASIZE', | |
'lll': '{ (CALLDATASIZE) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x37: { | |
'name': 'CALLDATACOPY', | |
'lll': '{ (CALLDATACOPY 0x0 0x0 0x0) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x38: { | |
'name': 'CODESIZE', | |
'lll': '{ (CODESIZE) (RETURN 0x0 0x0) }', | |
'expect': 0 | |
}, | |
0x39: { | |
'name': 'RETURNDATACOPY', | |
'lll': '{ (RETURNDATACOPY 0x0 0x0 0x0) (RETURN 0x0 0x0) }' | |
}, | |
0x3a: { | |
'name': 'GASPRICE', | |
'lll': '{ (GASPRICE) (RETURN 0x0 0x0) }' | |
}, | |
0x3b: { | |
'name': 'EXTCODESIZE', | |
'lll': '{ (EXTCODESIZE 0x0) (RETURN 0x0 0x0)}' | |
}, | |
0x3c: { | |
'name': 'EXTCODECOPY', | |
'lll': '{ (EXTCODECOPY 0x1000000000000000000000000000000000000010 0 0 20) (RETURN 0x0 0x0) }' | |
}, | |
0x3d: { | |
'name': 'RETURNDATASIZE', | |
'lll': '{ (RETURNDATASIZE) (RETURN 0x0 0x0) }' | |
}, | |
0x3e: { | |
'name': 'RETURNDATACOPY', | |
'lll': '{ (RETURNDATACOPY 0x0 0x0 0x0) (RETURN 0x0 0x0) }' | |
}, | |
0x40: { | |
'name': 'BLOCKHASH', | |
'lll': '{ (BLOCKHASH 0x0) (RETURN 0x0 0x0) }' | |
}, | |
0x41: { | |
'name': 'COINBASE', | |
'lll': '{ (COINBASE) (RETURN 0x0 0x0) }' | |
}, | |
0x42: { | |
'name': 'TIMESTAMP', | |
'lll': '{ (TIMESTAMP) (RETURN 0x0 0x0) }' | |
}, | |
0x43: { | |
'name': 'NUMBER', | |
'lll': '{ (NUMBER) (RETURN 0x0 0x0) }' | |
}, | |
0x44: { | |
'name': 'DIFFICULTY', | |
'lll': '{ (DIFFICULTY) (RETURN 0x0 0x0) }' | |
}, | |
0x45: { | |
'name': 'GASLIMIT', | |
'lll': '{ (GASLIMIT) (RETURN 0x0 0x0) }' | |
}, | |
0x50: { | |
'name': 'POP', | |
'lll': '{ 0x00 (POP 0x00) (RETURN 0x0 0x0) }' | |
}, | |
0x51: { | |
'name': 'MLOAD', | |
'lll': '{ (MLOAD 0x0) (RETURN 0x0 0x0)}' | |
}, | |
0x52: { | |
'name': 'MSTORE', | |
'lll': '{ (MSTORE 0x00 0x00) (RETURN 0x0 0x0) }' | |
}, | |
0x53: { | |
'name': 'MSTORE8', | |
'lll': '{ (MSTORE8 0 0xff) (RETURN 0x0 0x0) }' | |
}, | |
0x54: { | |
'name': 'SLOAD', | |
'lll': '{ (SLOAD 0x0) (RETURN 0x0 0x0) }' | |
}, | |
0x55: { | |
'name': 'SSTORE', | |
'lll': '{ (SSTORE 0x1 0x1) (RETURN 0x0 0x0) }' | |
}, | |
0x56: { | |
'name': 'JUMP', | |
'lll': '{ (JUMP 0x1) (JUMPDEST) (RETURN 0x0 0x0) }' | |
}, | |
0x57: { | |
'name': 'JUMPI', | |
'lll': '{ (JUMPI 0x1 0x1) (JUMPDEST) (RETURN 0x0 0x0) }' | |
}, | |
0x58: { | |
'name': 'PC', | |
'lll': '{ (PC) (RETURN 0x0 0x0) }' | |
}, | |
0x59: { | |
'name': 'MSIZE', | |
'lll': '{ (MSIZE) (RETURN 0x0 0x0) }' | |
}, | |
0x5a: { | |
'name': 'GAS', | |
'lll': '{ (GAS) (RETURN 0x0 0x0) }' | |
}, | |
0x5b: { | |
'name': 'JUMPDEST', | |
'lll': '{ (JUMPDEST) (RETURN 0x0 0x0) }' | |
}, | |
0x60: { | |
'name': 'PUSH1', | |
'lll': '{ 0xff (RETURN 0x0 0x0)}' | |
}, | |
0x61: { | |
'name': 'PUSH2', | |
'lll': '{ 0xffff (RETURN 0x0 0x0)}' | |
}, | |
0x62: { | |
'name': 'PUSH3', | |
'lll': '{ 0xffffff (RETURN 0x0 0x0)}' | |
}, | |
0x63: { | |
'name': 'PUSH4', | |
'lll': '{ 0xffffffff (RETURN 0x0 0x0)}' | |
}, | |
0x64: { | |
'name': 'PUSH5', | |
'lll': '{ 0xffffffffff (RETURN 0x0 0x0)}' | |
}, | |
0x65: { | |
'name': 'PUSH6', | |
'lll': '{ 0xffffffffffff (RETURN 0x0 0x0)}' | |
}, | |
0x66: { | |
'name': 'PUSH7', | |
'lll': '{ 0xffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x67: { | |
'name': 'PUSH8', | |
'lll': '{ 0xffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x68: { | |
'name': 'PUSH9', | |
'lll': '{ 0xffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x69: { | |
'name': 'PUSH10', | |
'lll': '{ 0xffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x6a: { | |
'name': 'PUSH11', | |
'lll': '{ 0xffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x6b: { | |
'name': 'PUSH12', | |
'lll': '{ 0xffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x6c: { | |
'name': 'PUSH13', | |
'lll': '{ 0xffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x6d: { | |
'name': 'PUSH14', | |
'lll': '{ 0xffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x6e: { | |
'name': 'PUSH15', | |
'lll': '{ 0xffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x6f: { | |
'name': 'PUSH16', | |
'lll': '{ 0xffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x70: { | |
'name': 'PUSH17', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x71: { | |
'name': 'PUSH18', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x72: { | |
'name': 'PUSH19', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x73: { | |
'name': 'PUSH20', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x74: { | |
'name': 'PUSH21', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x75: { | |
'name': 'PUSH22', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x76: { | |
'name': 'PUSH23', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x77: { | |
'name': 'PUSH24', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x78: { | |
'name': 'PUSH25', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x79: { | |
'name' : 'PUSH26', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x7a: { | |
'name': 'PUSH27', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x7b: { | |
'name': 'PUSH28', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x7c: { | |
'name': 'PUSH29', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x7d: { | |
'name': 'PUSH30', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x7e: { | |
'name': 'PUSH31', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x7f: { | |
'name': 'PUSH32', | |
'lll': '{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff (return 0x0 0x0)}' | |
}, | |
0x80: { | |
'name': 'DUP1', | |
'lll': '{ (DUP1 0xff) (return 0x0 0x0)}' | |
}, | |
0x81: { | |
'name': 'DUP2', | |
'lll': '{ (DUP2 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x82: { | |
'name': 'DUP3', | |
'lll': '{ (DUP3 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x83: { | |
'name': 'DUP4', | |
'lll': '{ (DUP4 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x84: { | |
'name': 'DUP5', | |
'lll': '{ (DUP5 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x85: { | |
'name': 'DUP6', | |
'lll': '{ (DUP6 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x86: { | |
'name': 'DUP7', | |
'lll': '{ (DUP7 0xff 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x87: { | |
'name': 'DUP8', | |
'lll': '{ (DUP8 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x88: { | |
'name': 'DUP9', | |
'lll': '{ (DUP9 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x89: { | |
'name': 'DUP10', | |
'lll': '{ (DUP10 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x8a: { | |
'name': 'DUP11', | |
'lll': '{ (DUP11 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x8b: { | |
'name': 'DUP12', | |
'lll': '{ (dup12 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x8c: { | |
'name': 'DUP13', | |
'lll': '{ (dup13 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x8d: { | |
'name': 'DUP14', | |
'lll': '{ (dup14 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x8e: { | |
'name': 'DUP15', | |
'lll': '{ (dup15 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x8f: { | |
'name': 'DUP16', | |
'lll': '{ (dup16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x90: { | |
'name': 'SWAP1', | |
'lll': '{ (SWAP1 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x91: { | |
'name': 'SWAP2', | |
'lll': '{ (swap2 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x92: { | |
'name': 'SWAP3', | |
'lll': '{ (swap3 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x93: { | |
'name': 'SWAP4', | |
'lll': '{ (swap4 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x94: { | |
'name': 'SWAP5', | |
'lll': '{ (swap5 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x95: { | |
'name': 'SWAP6', | |
'lll': '{ (swap6 0xff 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x96: { | |
'name': 'SWAP7', | |
'lll': '{ (swap7 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) (return 0x0 0x0)}' | |
}, | |
0x97: { | |
'name': 'SWAP8', | |
'lll': '{ (swap8 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x00) (return 0x0 0x0)}' | |
}, | |
0x98: { | |
'name' : 'SWAP9', | |
'lll': '{ (swap9 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x00) (return 0x0 0x0)}' | |
}, | |
0x99: { | |
'name': 'SWAP10', | |
'lll': '{ (swap10 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x00) (return 0x0 0x0)}' | |
}, | |
0x9a: { | |
'name': 'SWAP11', | |
'lll': '{ (swap11 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x00) (return 0x0 0x0)}' | |
}, | |
0x9b: { | |
'name': 'SWAP12', | |
'lll': '{ (swap12 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x00) (return 0x0 0x0)}' | |
}, | |
0x9c: { | |
'name': 'SWAP13', | |
'lll': '{ (swap13 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x00) (return 0x0 0x0)}' | |
}, | |
0x9d: { | |
'name': 'SWAP14', | |
'lll': '{ (swap14 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x00) (return 0x0 0x0)}' | |
}, | |
0x9e: { | |
'name': 'SWAP15', | |
'lll': '{ (swap15 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x00) (return 0x0 0x0)}' | |
}, | |
0x9f: { | |
'name': 'SWAP16', | |
'lll': '{ (swap16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x00) (return 0x0 0x0)}' | |
}, | |
0xa0: { | |
'name': 'LOG0', | |
'lll': '{ (LOG0 0 0) (return 0x0 0x0) }' | |
}, | |
0xa1: { | |
'name': 'LOG1', | |
'lll': '{ (LOG1 0 0 0xff) (return 0x0 0x0) }' | |
}, | |
0xa2: { | |
'name': 'LOG2', | |
'lll': '{ (log2 0 0 0xff 0xff) (return 0x0 0x0) }' | |
}, | |
0xa3: { | |
'name': 'LOG3', | |
'lll': '{ (log3 0 0 0xff 0xff 0xff) (return 0x0 0x0) }' | |
}, | |
0xa4: { | |
'name': 'LOG4', | |
'lll': '{ (log4 0 0 0xff 0xff 0xff 0xff) (return 0x0 0x0) }' | |
}, | |
0xf0: { | |
'name': 'CREATE', | |
'lll': '{ (CREATE 0xff 0x0 0x0) (return 0x0 0x0) }' | |
}, | |
0xf1: { | |
'name': 'CALL', | |
'lll': '{ (call 100 0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6 23 0 0 0 0) (return 0x0 0x0) }' | |
}, | |
0xf2: { | |
'name': 'CALLCODE', | |
'lll': '{ (CALLCODE 100 0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6 0 0 0 0 0) (return 0x0 0x0) }' | |
}, | |
0xf3: { | |
'name': 'RETURN', | |
'lll': '{ (RETURN 0x0 0x0) }' | |
}, | |
0xf4: { | |
'name': 'DELEGATECALL', | |
'lll': '{ (DELEGATECALL 100 0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6 0 0 0 0) (return 0x0 0x0) }' | |
}, | |
0xfa: { | |
'name': 'STATICCALL', | |
'lll': '{ (staticcall 100 0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6 0 0 0 0) (return 0x0 0x0) }' | |
}, | |
0xfd: { | |
'name': 'REVERT', | |
'lll': '{ (REVERT 0x0 0x0) (return 0x0 0x0)}' | |
}, | |
0xff: { | |
'name': 'SUICIDE', | |
#'lll': '{ (SUICIDE (CALLER)) }' | |
'bytecode': '0x33ff' | |
} | |
} | |
expect_template = """ | |
{ | |
"indexes" : { | |
"data" : -1, | |
"gas" : 0, | |
"value" : 0 | |
}, | |
"network" : ["ALL"], | |
"result" : { | |
"6295ee1b4f6dd65047762f924ecd367c17eabf8f" : { | |
"shouldexist": 1 | |
} | |
} | |
} | |
""" | |
def main(): | |
data = [] | |
expect = [] | |
for op in goodOps: | |
if 'name' in goodOps[op]: | |
#print(goodOps[op]['name']) | |
if 'bytecode' in goodOps[op]: | |
data.append(goodOps[op]['bytecode']) | |
elif 'lll' in goodOps[op]: | |
data.append(compileLLL(goodOps[op]['lll'])) | |
filler_template = '' | |
with open(FILLER_TEMPLATE_FILE, 'r') as f: | |
filler_template = f.read() | |
s = filler_template.format(expect_template, json.dumps(data)) | |
#remove existing filler before overwriting | |
try: | |
os.remove(FILLER_RESULT_FILE) | |
except OSError: | |
pass | |
with open(FILLER_RESULT_FILE, 'w') as f: | |
f.write(s) | |
if __name__ == "__main__": | |
main() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{{ | |
"Opcodes_TransactionInit" : {{ | |
"env" : {{ | |
"currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", | |
"currentDifficulty" : "0x20000", | |
"currentGasLimit" : "1000000", | |
"currentNumber" : "1", | |
"currentTimestamp" : "1000", | |
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" | |
}}, | |
"expect" : [{0}], | |
"pre" : {{ | |
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {{ | |
"balance" : "1000000000000000000", | |
"code": "0x", | |
"nonce": "0", | |
"storage": {{ | |
"0x0": "0x0" | |
}} | |
}}, | |
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {{ | |
"balance" : "0x00", | |
"code" : "0x", | |
"nonce" : "0x00", | |
"storage" : {{ | |
}} | |
}} | |
}}, | |
"transaction" : {{ | |
"data" : {1}, | |
"gasLimit" : [ | |
"400000" | |
], | |
"gasPrice" : "1", | |
"nonce" : "0", | |
"secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", | |
"to" : "", | |
"value" : [ | |
"100000" | |
] | |
}} | |
}} | |
}} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment