示例#1
0
    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]
示例#2
0
    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]
示例#3
0
    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]