code: def open_channel_with_funding(
              self,
              registry_address_hex,
              token_address_hex,
              peer_address_hex,
              total_deposit,
              settle_timeout=None,
      ):
          
          # Check, if peer is discoverable
          registry_address = decode_hex(registry_address_hex)
          peer_address = decode_hex(peer_address_hex)
          token_address = decode_hex(token_address_hex)
          try:
              self._discovery.get(peer_address)
          except KeyError:
              print('Error: peer {} not found in discovery'.format(peer_address_hex))
              return None
  
          self._api.channel_open(
              registry_address,
              token_address,
              peer_address,
              settle_timeout=settle_timeout,
          )
  
          return self._api.set_total_channel_deposit(
              registry_address,
              token_address,
              peer_address,
              total_deposit,
          )
docs: Convenience method to open a channel.
  
          Args:
              registry_address_hex (str): hex encoded address of the registry for the channel.
              token_address_hex (str): hex encoded address of the token for the channel.
              peer_address_hex (str): hex encoded address of the channel peer.
              total_deposit (int): amount of total funding for the channel.
              settle_timeout (int): amount of blocks for the settle time (if None use app defaults).
  
          Return:
              netting_channel: the (newly opened) netting channel object.