예제 #1
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
예제 #2
0
파일: client.py 프로젝트: virrius/lumino
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)))
예제 #3
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),
        ))
예제 #4
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."
        )
예제 #5
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),
        ))
예제 #6
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),
        ))
예제 #7
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), ))