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
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)))
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), ))
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." )
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), ))
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), ))
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), ))