code: func (s *server) Start() {
  	// Already started?
  	if atomic.AddInt32(&s.started, 1) != 1 {
  		return
  	}
  
  	srvrLog.Trace("Starting server")
  
  	// Server startup time. Used for the uptime command for uptime calculation.
  	s.startupTime = time.Now().Unix()
  
  	// Start the peer handler which in turn starts the address and block
  	// managers.
  	s.wg.Add(1)
  	go s.peerHandler()
  
  	if s.nat != nil {
  		s.wg.Add(1)
  		go s.upnpUpdateThread()
  	}
  
  	if !cfg.DisableRPC {
  		s.wg.Add(1)
  
  		// Start the rebroadcastHandler, which ensures user tx received by
  		// the RPC server are rebroadcast until being included in a block.
  		go s.rebroadcastHandler()
  
  		s.rpcServer.Start()
  	}
  
  	// Start the CPU miner if generation is enabled.
  	if cfg.Generate {
  		s.cpuMiner.Start()
  	}
  }
docs: // Start begins accepting connections from peers.