code: func Transport(tpt interface{}) Option {
  	tptc, err := config.TransportConstructor(tpt)
  	err = traceError(err, 1)
  	return func(cfg *Config) error {
  		if err != nil {
  			return err
  		}
  		cfg.Transports = append(cfg.Transports, tptc)
  		return nil
  	}
  }
docs: // Transport configures libp2p to use the given transport (or transport
  // constructor).
  //
  // The transport can be a constructed transport.Transport or a function taking
  // any subset of this libp2p node's:
  // * Transport Upgrader (*tptu.Upgrader)
  // * Host
  // * Stream muxer (muxer.Transport)
  // * Security transport (security.Transport)
  // * Private network protector (pnet.Protector)
  // * Peer ID
  // * Private Key
  // * Public Key
  // * Address filter (filter.Filter)
  // * Peerstore