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