def __init__(self): tester.GASPRICE = 0 tester.STARTGAS = long(6.7 * 10**7) config_metropolis['GASLIMIT_ADJMAX_FACTOR'] = .000000000001 config_metropolis['GENESIS_GAS_LIMIT'] = 2**60 config_metropolis['MIN_GAS_LIMIT'] = 2**60 config_metropolis['BLOCK_GAS_LIMIT'] = 2**60 for a in range(10): tester.base_alloc[getattr(tester, 'a%i' % a)] = {'balance': 10**24} self.chain = Chain(env=Env(config=config_metropolis)) self.contracts = {} self.testerAddress = self.generateTesterMap('a') self.testerKey = self.generateTesterMap('k') self.testerAddressToKey = dict(zip(self.testerAddress.values(), self.testerKey.values())) if path.isfile('./allFiredEvents'): remove_file('./allFiredEvents') self.relativeContractsPath = '../source/contracts' self.relativeTestContractsPath = 'solidity_test_helpers' self.externalContractsPath = '../source/contracts/external' self.coverageMode = pytest.config.option.cover self.subFork = pytest.config.option.subFork if self.coverageMode: self.chain.head_state.log_listeners.append(self.writeLogToFile) self.relativeContractsPath = '../coverageEnv/contracts' self.relativeTestContractsPath = '../coverageEnv/solidity_test_helpers' self.externalContractsPath = '../coverageEnv/contracts/external'
def resetToSnapshot(self, snapshot): if not 'state' in snapshot: raise "snapshot is missing 'state'" if not 'contracts' in snapshot: raise "snapshot is missing 'contracts'" self.chain = Chain(genesis=snapshot['state'], env=Env(config=config_metropolis)) self.contracts = {} for contractName in snapshot['contracts']: contract = snapshot['contracts'][contractName] self.contracts[contractName] = ABIContract(self.chain, contract['translator'], contract['address'])
def resetToSnapshot(self, snapshot): if not 'state' in snapshot: raise "snapshot is missing 'state'" if not 'contracts' in snapshot: raise "snapshot is missing 'contracts'" self.chain = Chain(genesis=snapshot['state'], env=Env(config=config_metropolis)) if self.coverageMode: self.chain.head_state.log_listeners.append(self.writeLogToFile) self.contracts = {} for contractName in snapshot['contracts']: contract = snapshot['contracts'][contractName] self.contracts[contractName] = ABIContract(self.chain, contract['translator'], contract['address'])
def __init__(self): tester.GASPRICE = 0 config_metropolis['GASLIMIT_ADJMAX_FACTOR'] = .000000000001 config_metropolis['GENESIS_GAS_LIMIT'] = 2**60 config_metropolis['MIN_GAS_LIMIT'] = 2**60 config_metropolis['BLOCK_GAS_LIMIT'] = 2**60 for a in range(10): tester.base_alloc[getattr(tester, 'a%i' % a)] = {'balance': 10**24} self.chain = Chain(env=Env(config=config_metropolis)) self.contracts = {} self.testerAddress = self.generateTesterMap('a') self.testerKey = self.generateTesterMap('k')
def init_contracts(nodes): result = dict() tester_state = Chain() for address, contract in CONTRACTS.iteritems(): contract_path = path.join(CONTRACTS_DIR, contract['file']) simple_compiled = compile_file(contract_path) simple_data = solidity_get_contract_data( simple_compiled, contract_path, contract['name'], ) ct = ContractTranslator(simple_data['abi']) if (address == '0x00000000000000000000000000000000013241a3'): extra = (ct.encode_constructor_arguments([nodes[address]]) if nodes[address] else b'') else: extra = (ct.encode_constructor_arguments([nodes[address][0], nodes[address][1]]) if nodes[address] else b'') print(binascii.hexlify(simple_data['bin'] + extra)) abi_address = tester_state.contract(simple_data['bin'] + extra) tester_state.mine() account = tester_state.chain.state.account_to_dict(abi_address) result[address] = {'code': account['code'], 'storage': account['storage'], 'nonce': account['nonce']} return result
def test_abicontract_interface(): """ Test for issue #370. """ tester_state = Chain() contract_path = path.join(CONTRACTS_DIR, 'simple_contract.sol') contract_name = 'Simple' simple_compiled = compile_file(contract_path) simple_data = solidity_get_contract_data( simple_compiled, contract_path, contract_name, ) simple_address = tester_state.contract(simple_data['bin']) # ABIContract class must accept json_abi abi_json = json.dumps(simple_data['abi']).encode('utf-8') abi = ABIContract( _chain=tester_state, _abi=abi_json, address=simple_address, ) assert abi.test() == 1 # pylint: disable=no-member