def token_network(self, address: TokenNetworkAddress) -> TokenNetwork: if not is_binary_address(address): raise ValueError("address must be a valid address") with self._token_network_creation_lock: if address not in self.address_to_token_network: metadata = TokenNetworkMetadata( deployed_at=None, abi=self.contract_manager.get_contract_abi( CONTRACT_TOKEN_NETWORK), gas_measurements=gas_measurements( self.contract_manager.contracts_version), runtime_bytecode=EVMBytecode( decode_hex( self.contract_manager.get_runtime_hexcode( CONTRACT_TOKEN_NETWORK))), address=Address(address), token_network_registry_address=None, filters_start_at=self.metadata.filters_start_at, ) self.address_to_token_network[address] = TokenNetwork( jsonrpc_client=self.client, contract_manager=self.contract_manager, proxy_manager=self, metadata=metadata, ) return self.address_to_token_network[address]
def token_network_registry( self, address: TokenNetworkRegistryAddress) -> TokenNetworkRegistry: with self._token_network_registry_creation_lock: if address not in self.address_to_token_network_registry: metadata = SmartContractMetadata( deployed_at=self.metadata. token_network_registry_deployed_at, address=Address(address), abi=self.contract_manager.get_contract_abi( CONTRACT_TOKEN_NETWORK_REGISTRY), runtime_bytecode=EVMBytecode( decode_hex( self.contract_manager.get_runtime_hexcode( CONTRACT_TOKEN_NETWORK_REGISTRY))), gas_measurements=gas_measurements( self.contract_manager.contracts_version), filters_start_at=self.metadata.filters_start_at, ) self.address_to_token_network_registry[ address] = TokenNetworkRegistry(rpc_client=self.client, metadata=metadata, proxy_manager=self) return self.address_to_token_network_registry[address]
def token_network_from_registry( self, token_network_registry_address: TokenNetworkRegistryAddress, token_address: TokenAddress, block_identifier: BlockSpecification = "latest", ) -> TokenNetwork: token_network_registry = self.token_network_registry( token_network_registry_address) token_network_address = token_network_registry.get_token_network( token_address=token_address, block_identifier=block_identifier) if token_network_address is None: raise ValueError( f"{to_checksum_address(token_network_registry_address)} does not " f"have the token {to_checksum_address(token_address)} " f"registered.") with self._token_network_creation_lock: if token_network_address not in self.address_to_token_network: metadata = TokenNetworkMetadata( deployed_at=None, address=Address(token_network_address), abi=self.contract_manager.get_contract_abi( CONTRACT_TOKEN_NETWORK), gas_measurements=gas_measurements( self.contract_manager.contracts_version), runtime_bytecode=EVMBytecode( decode_hex( self.contract_manager.get_runtime_hexcode( CONTRACT_TOKEN_NETWORK))), token_network_registry_address= token_network_registry_address, filters_start_at=token_network_registry.metadata. filters_start_at, ) self.address_to_token_network[ token_network_address] = TokenNetwork( jsonrpc_client=self.client, contract_manager=self.contract_manager, proxy_manager=self, metadata=metadata, ) return self.address_to_token_network[token_network_address]