docs: def connect_bitcoind_impl( bitcoind_opts ):
      """
      Create a connection to bitcoind, using a dict of config options.
      """
  
      if 'bitcoind_port' not in bitcoind_opts.keys() or bitcoind_opts['bitcoind_port'] is None:
          log.error("No port given")
          raise ValueError("No RPC port given (bitcoind_port)")
  
      if 'bitcoind_timeout' not in bitcoind_opts.keys() or bitcoind_opts['bitcoind_timeout'] is None:
          # default
          bitcoind_opts['bitcoind_timeout'] = 300
  
      try:
          int(bitcoind_opts['bitcoind_port'])
      except:
          log.error("Not an int: '%s'" % bitcoind_opts.get('bitcoind_port'))
          raise
  
      try:
          float(bitcoind_opts.get('bitcoind_timeout', 300))
      except:
          log.error("Not a float: '%s'" % bitcoind_opts.get('bitcoind_timeout', 300))
          raise
  
      return create_bitcoind_connection( bitcoind_opts['bitcoind_user'], bitcoind_opts['bitcoind_passwd'], \
                                         bitcoind_opts['bitcoind_server'], int(bitcoind_opts['bitcoind_port']), \
                                         bitcoind_opts.get('bitcoind_use_https', False), float(bitcoind_opts.get('bitcoind_timeout', 300)) )