- Ogni nodo, quando fara' l'hook, generera' un coppia di chiavi RSA. Dara' la
  sua chiave pubblica a tutti i suoi rnode.

- Quando il qspn traversa dei gonde, deve memorizzare per ogni entry quanti
  da quanti nodi attivi e' composto il gnode.

- Gnode contigui:
        - Appena un nodo, dopo aver analizzato un qspn_pkt ricevuto, nota che
          il suo gnode confina con un gnode non contiguo aspetta il
          qspn_pkt del qspn_round corrente o successivo proveniente da quel gnode.
          Analizzando il qspn_pkt vede se il gnode confinante ha una quantita'
          di nodi maggiore a quella del proprio gnode. Se e' cosi' manda un 
          challenge al gnode confinante, se il challenge e' perso cambiera'
          l'ip.

                - Quando il nodo riceve la risposta al challenge manda in
                  broadcast all'interno del suo gnode un pkt contenente la
                  risposta. Il pacchetto viene firmato con la chiave privata
                  dal nodo che la manda. Il nodo che la riceve verifica e
                  rimuove la firma precedente ed appone la sua.
                
                - Quando un nodo ha ricevuto la risposta e le risposte di
                  tutti i suoi nodi del suo gnode controlla l'esito del
                  challenge:
                        se l'esito e' positivo (ha vinto): non cambiera'
                        gnode.
                        al contrario: quando vede che l'rnode che e'
                        utilizzato nella rotta migliore per raggiungere
                        il gnode confinante muore e trova un nuovo rnode 
                        che fa parte del nuovo gnode, rifara' l'hook.

                - Se i due gnode hanno un ugual numero di nodi, cambiera'
                  il gnode che ha il gnode_id minore.

        - Ecco come funziona il challenge:
                Il gnode che ha il numero minore di nodi per verificare che
                effettivamente il gnode con cui confina abbia un numero
                maggiore di nodi gli manda un problema da risolvere. Questo
                problema ha una complessita' proporzionale al numero di nodi 
                presenti nel gnode piu' piccolo (o presunto tale).
                In questo modo se il gnode che riceve il challenge riesce a
                risolvere il problema, distribuendo il calcolo tra suoi nodi,
                vuol dire che ha una quantita' di nodi maggiore o uguale a
                quella del gnode che ha mandato il challenge.
                Quando il gnode che ha meno nodi dell'altro riceve le
                risposte entro un tot di tempo determinato, cambiera' ip se le
                risposte ricevute sono corrette, altrimenti se non riceve le
                risposte o se sono errate, bannera' il gnode confinante,
                poiche' ha comunicato una quantita' di nodi superiore a quella
                effettiva, tentando cosi' di far cambiare l'IP all'altro
                gnode.

                Per convenienza chiamamo Checker il gnode che mandera' il
                problema al gnode Examinated.

                - Distribuzione del problema:
                  Ogni nodo di Checker manda il seguente problema ai bnode di
                  Checker che poi pensaranno a ridistribuirlo all'interno del
                  gnode:
                        f(x) mod k 
                  dove  k e' un numero random compreso tra 2^16 < k < 2^32
                  e f(x) e' una funzione non facilmente calcolabile con il
                  modulo di k.
                  
                  Anche il nodo Y che ha mandato il problema cerchera' la
                  sua soluzione. La complessita' del problema dipende dalla
                  grandezza di x, e viene scelta in modo proporzionale alla
                  potenza di calcolo media di un computer.
                  Y aspettera' per un tempo molto breve la risposta e una
                  volta ricevuta la confrontera' con la sua soluzione.
                
                - Soglia di errore:
                  La percentuale di risposte non ricevute che possono essere
                  ignorate e' il 10%.
                  
                - Soglia del challenge:
                  Il challenge viene mandato solo se i due gnode in questione
                  hanno al loro interno una quantita' di nodi >= 2^16, quindi
                  questo vale solo per i gnode di livello >= 2.
                  I gnode piu' piccoli cambieranno IP senza verificare nulla.