Refactor with black

pull/963/head
Nikhil Parasaram 6 years ago
parent 303891aed2
commit d581a15131
  1. 7
      mythril/laser/ethereum/instructions.py
  2. 158
      mythril/support/opcodes.py

@ -1722,7 +1722,12 @@ class Instruction:
"""
# TODO: implement me
state = global_state.mstate
endowment, memory_start, memory_length, salt = state.stack.pop(), state.stack.pop(), state.stack.pop(), state.stack.pop()
endowment, memory_start, memory_length, salt = (
state.stack.pop(),
state.stack.pop(),
state.stack.pop(),
state.stack.pop(),
)
# Not supported
state.stack.append(0)
return [global_state]

@ -1,89 +1,89 @@
opcodes = {
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],
0x1b: ['SHL', 2, 1, 3],
0x1c: ['SHR', 2, 1, 3],
0x1d: ['SAR', 2, 1, 3],
0x20: ['SHA3', 2, 1, 30],
0x30: ['ADDRESS', 0, 1, 2],
0x31: ['BALANCE', 1, 1, 20], # now 400
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], # now 700
0x3c: ['EXTCODECOPY', 4, 0, 20], # now 700
0x3d: ['RETURNDATASIZE', 0, 1, 2],
0x3e: ['RETURNDATACOPY', 3, 0, 3],
0x3f: ['EXTCODEHASH', 3, 0, 3],
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], # 200 now
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], # 700 now
0xf2: ['CALLCODE', 7, 1, 40], # 700 now
0xf3: ['RETURN', 2, 0, 0],
0xf4: ['DELEGATECALL', 6, 1, 40], # 700 now
0xf5: ['CREATE2', 3, 1, 32000],
0xfa: ['STATICCALL', 6, 1, 40],
0xfd: ['REVERT', 2, 0, 0],
0xff: ['SUICIDE', 1, 0, 0], # 5000 now
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],
0x1B: ["SHL", 2, 1, 3],
0x1C: ["SHR", 2, 1, 3],
0x1D: ["SAR", 2, 1, 3],
0x20: ["SHA3", 2, 1, 30],
0x30: ["ADDRESS", 0, 1, 2],
0x31: ["BALANCE", 1, 1, 20], # now 400
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], # now 700
0x3C: ["EXTCODECOPY", 4, 0, 20], # now 700
0x3D: ["RETURNDATASIZE", 0, 1, 2],
0x3E: ["RETURNDATACOPY", 3, 0, 3],
0x3F: ["EXTCODEHASH", 3, 0, 3],
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], # 200 now
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], # 700 now
0xF2: ["CALLCODE", 7, 1, 40], # 700 now
0xF3: ["RETURN", 2, 0, 0],
0xF4: ["DELEGATECALL", 6, 1, 40], # 700 now
0xF5: ["CREATE2", 3, 1, 32000],
0xFA: ["STATICCALL", 6, 1, 40],
0xFD: ["REVERT", 2, 0, 0],
0xFF: ["SUICIDE", 1, 0, 0], # 5000 now
}
opcodesMetropolis = {0x3d, 0x3e, 0xfa, 0xfd}
opcodesMetropolis = {0x3D, 0x3E, 0xFA, 0xFD}
for i in range(1, 33):
opcodes[0x5f + i] = ['PUSH' + str(i), 0, 1, 3]
opcodes[0x5F + i] = ["PUSH" + str(i), 0, 1, 3]
for i in range(1, 17):
opcodes[0x7f + i] = ['DUP' + str(i), i, i + 1, 3]
opcodes[0x8f + i] = ['SWAP' + str(i), i + 1, i + 1, 3]
opcodes[0x7F + i] = ["DUP" + str(i), i, i + 1, 3]
opcodes[0x8F + i] = ["SWAP" + str(i), i + 1, i + 1, 3]
reverse_opcodes = {}
for o in opcodes:

Loading…
Cancel
Save