code: func (n *Node) validateComplete() error {
  	if n.Incomplete() {
  		return errors.New("incomplete node")
  	}
  	if n.UDP == 0 {
  		return errors.New("missing UDP port")
  	}
  	if n.TCP == 0 {
  		return errors.New("missing TCP port")
  	}
  	if n.IP.IsMulticast() || n.IP.IsUnspecified() {
  		return errors.New("invalid IP (multicast/unspecified)")
  	}
  	_, err := n.ID.Pubkey() // validate the key (on curve, etc.)
  	return err
  }
docs: // checks whether n is a valid complete node.