Example #1
0
    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'
Example #2
0
 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'])
Example #3
0
 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'])
Example #4
0
    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')
Example #5
0
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
Example #6
0
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