Also save contract creation code in db sync

pull/2/head
Bernhard Mueller 7 years ago
parent 3b92fadfbb
commit 645ca1f6ab
  1. 2
      mythril/ether/contractstorage.py
  2. 3
      mythril/ether/ethcontract.py
  3. 3
      tests/ethcontract_test.py

@ -80,7 +80,7 @@ class ContractStorage(persistent.Persistent):
# skip contracts with zero balance (disable with --sync-all) # skip contracts with zero balance (disable with --sync-all)
continue continue
code = ETHContract(contract_code) code = ETHContract(contract_code, tx['input'])
m = hashlib.md5() m = hashlib.md5()
m.update(contract_code.encode('UTF-8')) m.update(contract_code.encode('UTF-8'))

@ -6,9 +6,10 @@ from ethereum import utils
class ETHContract(persistent.Persistent): class ETHContract(persistent.Persistent):
def __init__(self, code = ""): def __init__(self, code, creation_code = ""):
self.code = code self.code = code
self.creation_code = creation_code
def get_xrefs(self): def get_xrefs(self):

@ -6,12 +6,13 @@ class ETHContractTestCase(unittest.TestCase):
def setUp(self): def setUp(self):
self.code = "0x60606040525b603c5b60006010603e565b9050593681016040523660008237602060003683856040603f5a0204f41560545760206000f35bfe5b50565b005b73c3b2ae46792547a96b9f84405e36d0e07edcd05c5b905600a165627a7a7230582062a884f947232ada573f95940cce9c8bfb7e4e14e21df5af4e884941afb55e590029" self.code = "0x60606040525b603c5b60006010603e565b9050593681016040523660008237602060003683856040603f5a0204f41560545760206000f35bfe5b50565b005b73c3b2ae46792547a96b9f84405e36d0e07edcd05c5b905600a165627a7a7230582062a884f947232ada573f95940cce9c8bfb7e4e14e21df5af4e884941afb55e590029"
self.creation_code = "0x60606040525b603c5b60006010603e565b9050593681016040523660008237602060003683856040603f5a0204f41560545760206000f35bfe5b50565b005b73c3b2ae46792547a96b9f84405e36d0e07edcd05c5b905600a165627a7a7230582062a884f947232ada573f95940cce9c8bfb7e4e14e21df5af4e884941afb55e590029"
class Getinstruction_listTestCase(ETHContractTestCase): class Getinstruction_listTestCase(ETHContractTestCase):
def runTest(self): def runTest(self):
contract = ETHContract(self.code) contract = ETHContract(self.code, self.creation_code)
instruction_list = contract.get_instruction_list() instruction_list = contract.get_instruction_list()

Loading…
Cancel
Save