Esempio n. 1
0
    def __init__(self,
                 jsonrpc_client,
                 discovery_address,
                 startgas,
                 gasprice,
                 poll_timeout=DEFAULT_POLL_TIMEOUT):

        if not isaddress(discovery_address):
            raise ValueError('discovery_address must be a valid address')

        result = jsonrpc_client.call(
            'eth_getCode',
            address_encoder(discovery_address),
            'latest',
        )

        if result == '0x':
            raise AddressWithoutCode(
                'Discovery address {} does not contain code'.format(
                    address_encoder(discovery_address), ))

        proxy = jsonrpc_client.new_contract_proxy(
            CONTRACT_MANAGER.get_abi(CONTRACT_ENDPOINT_REGISTRY),
            address_encoder(discovery_address),
        )

        self.address = discovery_address
        self.proxy = proxy
        self.client = jsonrpc_client
        self.startgas = startgas
        self.gasprice = gasprice
        self.poll_timeout = poll_timeout
Esempio n. 2
0
    def __init__(self,
                 jsonrpc_client,
                 manager_address,
                 startgas=GAS_LIMIT,
                 gasprice=GAS_PRICE,
                 poll_timeout=DEFAULT_POLL_TIMEOUT):
        # pylint: disable=too-many-arguments

        if not isaddress(manager_address):
            raise ValueError('manager_address must be a valid address')

        result = jsonrpc_client.call(
            'eth_getCode',
            address_encoder(manager_address),
            'latest',
        )

        if result == '0x':
            raise AddressWithoutCode(
                'Channel manager address {} does not contain code'.format(
                    address_encoder(manager_address), ))

        proxy = jsonrpc_client.new_abi_contract(
            CONTRACT_MANAGER.get_abi(CONTRACT_CHANNEL_MANAGER),
            address_encoder(manager_address),
        )

        self.address = manager_address
        self.proxy = proxy
        self.client = jsonrpc_client
        self.startgas = startgas
        self.gasprice = gasprice
        self.poll_timeout = poll_timeout
Esempio n. 3
0
    def __init__(self,
                 jsonrpc_client,
                 channel_address,
                 startgas=GAS_LIMIT,
                 gasprice=GAS_PRICE,
                 poll_timeout=DEFAULT_POLL_TIMEOUT):
        # pylint: disable=too-many-arguments

        result = jsonrpc_client.call(
            'eth_getCode',
            address_encoder(channel_address),
            'latest',
        )

        if result == '0x':
            raise AddressWithoutCode(
                'Netting channel address {} does not contain code'.format(
                    address_encoder(channel_address), ))

        proxy = jsonrpc_client.new_abi_contract(
            CONTRACT_MANAGER.get_abi(CONTRACT_NETTING_CHANNEL),
            address_encoder(channel_address),
        )

        self.address = channel_address
        self.proxy = proxy
        self.client = jsonrpc_client
        self.startgas = startgas
        self.gasprice = gasprice
        self.poll_timeout = poll_timeout

        # check we are a participant of the given channel
        self.node_address = privatekey_to_address(self.client.privkey)
        self.detail(self.node_address)
Esempio n. 4
0
    def __init__(self,
                 jsonrpc_client,
                 token_address,
                 startgas=GAS_LIMIT,
                 gasprice=GAS_PRICE,
                 poll_timeout=DEFAULT_POLL_TIMEOUT):

        if not isaddress(token_address):
            raise ValueError('token_address must be a valid address')

        result = jsonrpc_client.call(
            'eth_getCode',
            address_encoder(token_address),
            'latest',
        )

        if result == '0x':
            raise AddressWithoutCode(
                'Token address {} does not contain code'.format(
                    address_encoder(token_address), ))

        proxy = jsonrpc_client.new_abi_contract(
            CONTRACT_MANAGER.get_abi(CONTRACT_HUMAN_STANDARD_TOKEN),
            address_encoder(token_address),
        )

        self.address = token_address
        self.proxy = proxy
        self.client = jsonrpc_client
        self.startgas = startgas
        self.gasprice = gasprice
        self.poll_timeout = poll_timeout
Esempio n. 5
0
    def __init__(self,
                 jsonrpc_client,
                 registry_address,
                 startgas=GAS_LIMIT,
                 gasprice=GAS_PRICE,
                 poll_timeout=DEFAULT_POLL_TIMEOUT):
        # pylint: disable=too-many-arguments

        result = jsonrpc_client.call(
            'eth_getCode',
            address_encoder(registry_address),
            'latest',
        )

        if result == '0x':
            raise AddressWithoutCode(
                'Registry address {} does not contain code'.format(
                    address_encoder(registry_address), ))

        proxy = jsonrpc_client.new_abi_contract(
            CONTRACT_MANAGER.get_abi(CONTRACT_REGISTRY),
            address_encoder(registry_address),
        )

        self.address = registry_address
        self.proxy = proxy
        self.client = jsonrpc_client
        self.startgas = startgas
        self.gasprice = gasprice
        self.poll_timeout = poll_timeout
Esempio n. 6
0
def check_address_has_code(client, address: address, contract_name: str = ''):
    """ Checks that the given address contains code. """
    result = client.eth_getCode(address, 'latest')

    if len(result) == 0:
        raise AddressWithoutCode('{}Address {} does not contain code'.format(
            '[{}]: '.format(contract_name) if contract_name else '',
            address_encoder(address),
        ))
Esempio n. 7
0
def check_address_has_code(client, address):
    result = client.call(
        'eth_getCode',
        address_encoder(address),
        'latest',
    )

    if result == '0x':
        raise AddressWithoutCode('Address {} does not contain code'.format(
            address_encoder(address), ))
Esempio n. 8
0
    def _check_exists(self):
        result = self.client.call(
            'eth_getCode',
            address_encoder(self.address),
            'latest',
        )

        if result == '0x':
            raise AddressWithoutCode(
                'Netting channel address {} does not contain code'.format(
                    address_encoder(self.address), ))
Esempio n. 9
0
    def _call_and_check_result(self, function_name: str):
        fn = getattr(self.proxy.contract.functions, function_name)
        try:
            call_result = fn().call()
        except BadFunctionCallOutput as e:
            raise AddressWithoutCode(str(e))

        if call_result == b'':
            self._check_exists()
            raise RuntimeError(
                "Call to '{}' returned nothing".format(function_name), )

        return call_result
Esempio n. 10
0
def check_address_has_code(client: "JSONRPCClient",
                           address: Address,
                           contract_name: str = ""):
    """ Checks that the given address contains code. """
    result = client.web3.eth.getCode(to_checksum_address(address), "latest")

    if not result:
        if contract_name:
            formated_contract_name = "[{}]: ".format(contract_name)
        else:
            formated_contract_name = ""

        raise AddressWithoutCode("{}Address {} does not contain code".format(
            formated_contract_name, to_checksum_address(address)))
Esempio n. 11
0
def check_address_has_code(client, address: Address, contract_name: str = ''):
    """ Checks that the given address contains code. """
    result = client.eth_getCode(address, 'latest')

    if not result:
        if contract_name:
            formated_contract_name = '[{}]: '.format(contract_name)
        else:
            formated_contract_name = ''

        raise AddressWithoutCode('{}Address {} does not contain code'.format(
            formated_contract_name,
            address_encoder(address),
        ))
Esempio n. 12
0
def check_address_has_code(client: "JSONRPCClient",
                           address: Address,
                           contract_name: str = "",
                           expected_code: bytes = None) -> None:
    """ Checks that the given address contains code. """
    result = client.web3.eth.getCode(to_checksum_address(address), "latest")

    if not result:
        raise AddressWithoutCode("[{}]Address {} does not contain code".format(
            contract_name, to_checksum_address(address)))

    if expected_code is not None and result != expected_code:
        raise ContractCodeMismatch(
            f"[{contract_name}]Address {to_checksum_address(address)} has wrong code."
        )
Esempio n. 13
0
def check_address_has_code(
        client,
        address: bytes,
        contract_name: str = ''):
    """ Checks that the given address contains code. """

    result = client.call(
        'eth_getCode',
        address_encoder(address),
        'latest',
    )

    if result == '0x':
        raise AddressWithoutCode('{}Address {} does not contain code'.format(
            '[{}]: '.format(contract_name) if contract_name else '',
            address_encoder(address),
        ))
Esempio n. 14
0
def check_address_has_code(
    client: 'JSONRPCClient',
    address: Address,
    contract_name: str = '',
):
    """ Checks that the given address contains code. """
    result = client.web3.eth.getCode(to_checksum_address(address), 'latest')

    if not result:
        if contract_name:
            formated_contract_name = '[{}]: '.format(contract_name)
        else:
            formated_contract_name = ''

        raise AddressWithoutCode('{}Address {} does not contain code'.format(
            formated_contract_name,
            to_normalized_address(address),
        ))
Esempio n. 15
0
 def _check_exists(self):
     if self.tester_chain.head_state.get_code(self.address) == b'':
         raise AddressWithoutCode(
             'Netting channel address {} does not contain code'.format(
                 address_encoder(self.address), ))