# standard imports import os import json import logging # third-party imports import pytest from eth_address_declarator import AddressDeclarator # local imports from cic_registry import CICRegistry from cic_registry import to_identifier from cic_registry.contract import Contract from cic_registry.error import ChainExistsError logg = logging.getLogger() script_dir = os.path.dirname(__file__) @pytest.fixture(scope='session') def local_cic_registry( cic_registry, ): path = os.path.realpath(os.path.join(script_dir, 'testdata', 'abi')) CICRegistry.add_path(path) return cic_registry @pytest.fixture(scope='function') def address_declarator( bloxberg_config, default_chain_spec, default_chain_registry, local_cic_registry, init_rpc, init_w3, ): c = init_rpc.w3.eth.contract(abi=AddressDeclarator.abi(), bytecode=AddressDeclarator.bytecode()) default_description = '0x{:<064s}'.format(b'test'.hex()) logg.debug('default_ {}'.format(default_description)) tx_hash = c.constructor(default_description).transact() rcpt = init_rpc.w3.eth.getTransactionReceipt(tx_hash) registry = init_rpc.w3.eth.contract(abi=CICRegistry.abi(), address=local_cic_registry) chain_identifier = to_identifier(default_chain_registry.chain()) registry.functions.set(to_identifier('AddressDeclarator'), rcpt.contractAddress, chain_identifier, bloxberg_config['digest']).transact() return rcpt.contractAddress