code: func NewGossipComponent(peerIdentity []byte, endpoint string, s *grpc.Server,
  	secAdv api.SecurityAdvisor, cryptSvc api.MessageCryptoService,
  	secureDialOpts api.PeerSecureDialOpts, certs *common.TLSCertificates, gossipMetrics *metrics.GossipMetrics,
  	bootPeers ...string) (gossip.Gossip, error) {
  
  	externalEndpoint := viper.GetString("peer.gossip.externalEndpoint")
  
  	conf, err := newConfig(endpoint, externalEndpoint, certs, bootPeers...)
  	if err != nil {
  		return nil, errors.WithStack(err)
  	}
  	gossipInstance := gossip.NewGossipService(conf, s, secAdv, cryptSvc,
  		peerIdentity, secureDialOpts, gossipMetrics)
  
  	return gossipInstance, nil
  }
docs: // NewGossipComponent creates a gossip component that attaches itself to the given gRPC server