code: func (dht *DHT) init() {
  	listener, err := net.ListenPacket(dht.Network, dht.Address)
  	if err != nil {
  		panic(err)
  	}
  
  	dht.conn = listener.(*net.UDPConn)
  	dht.routingTable = newRoutingTable(dht.KBucketSize, dht)
  	dht.peersManager = newPeersManager(dht)
  	dht.tokenManager = newTokenManager(dht.TokenExpiredAfter, dht)
  	dht.transactionManager = newTransactionManager(
  		dht.MaxTransactionCursor, dht)
  
  	go dht.transactionManager.run()
  	go dht.tokenManager.clear()
  	go dht.blackList.clear()
  }
docs: // init initializes global varables.