Wiki di ZooBC
Gestire un nodo

Le chiavi di un nodo

Un operatore di un nodo ZooBC usa due chiavi. La chiave del nodo è l'identità della macchina: vive sul nodo e firma ciò che il nodo fa tutto il giorno. La chiave del proprietario è un normale account nel wallet dell'operatore: controlla il seggio e lo stake. Tenerle separate significa che un'intrusione nel server non consegna il wallet dell'operatore.

La chiave del nodo sul server firma blocchi, ricevute, voti e prove di archiviazione; la chiave del proprietario nel wallet firma le transazioni del registro e riceve le vincite della lotteria
La chiave del nodo sul server firma blocchi, ricevute, voti e prove di archiviazione; la chiave del proprietario nel wallet firma le transazioni del registro e riceve le vincite della lotteria

La chiave del nodo

La chiave del nodo è una chiave Ed25519 di 32 byte, scritta con il prefisso ZNK_. È conservata nel file di configurazione del nodo, node.conf, e firma:

Poiché node.conf contiene la chiave privata, il nodo si rifiuta di partire se altri utenti della macchina possono leggere il file; quando il file appartiene al nodo, è il nodo stesso a impostarne i permessi a 0600.

L'account proprio del nodo

Gli stessi 32 byte scritti con il prefisso ZBC_ sono un normale account: l'account proprio del nodo. Da qui partono le transazioni di servizio del nodo, come prove di archiviazione, attestazioni e voti, con una commissione esattamente pari a 0 (commissioni). Ogni seggio genesi parte con 10 ZBC su questo account.

I due testi della stessa chiave hanno in comune i primi 51 caratteri dopo il prefisso e differiscono solo negli ultimi cinque, perché il checksum di 3 byte finale copre anche il prefisso. Sostituire a mano ZNK con ZBC rompe quindi il checksum, e il testo modificato viene rifiutato (account e indirizzi).

La chiave del proprietario

La chiave del proprietario è un normale account ZBC_ nel wallet dell'operatore. Firma le transazioni del registro:

  • NodeRegistration (tipo 2), che registra il nodo e ne blocca lo stake;
  • un aumento dello stake;
  • NodeRegistrationUpdate (tipo 258), che sposta il seggio su una nuova chiave del nodo;
  • RemoveNodeRegistration (tipo 514), che rimuove il nodo;
  • ClaimNodeRegistration (tipo 770), che rivendica lo stake.

Lo stake proviene da questo account, e le vincite del nodo alla lotteria vengono pagate su di esso. Un nodo non detiene mai la chiave del suo proprietario.

Legate insieme: la prova di proprietà

Una registrazione richiede entrambe le chiavi. La chiave del nodo firma un breve messaggio che indica l'account del proprietario e un blocco recente, e la chiave del proprietario firma la transazione che lo contiene. Nessuna delle due chiavi da sola può registrare la coppia, e nessuno può registrare il nodo di qualcun altro sotto il proprio account. La stessa prova è richiesta per aumentare lo stake e per rivendicarlo. La sua struttura esatta è in registrare un nodo.

Gli operatori creano entrambe le chiavi da sé. Nulla viene rilasciato da altri, e nessun altro ne detiene una copia.

Spostare il seggio su una nuova chiave del nodo

Se una chiave del nodo viene esposta, o la macchina viene sostituita, il proprietario può spostare il seggio su una nuova chiave del nodo senza registrarsi di nuovo. NodeRegistrationUpdate contiene la nuova chiave di 32 byte, con una prova di proprietà firmata dalla nuova chiave. Il nodo conserva il suo id, il suo punteggio, il suo stato in coda e la sua ammissione. Il cambio ha effetto 120 blocchi (30 minuti) dopo il blocco che lo include.

Anche la chiave del nodo può spostare lo stake

Custodisci la chiave del nodo con la stessa cura di una chiave di wallet. Chi la detiene può rivendicare lo stake del seggio su un account che controlla, con ClaimNodeRegistration. La rivendicazione del proprietario stesso viene trattata come una rimozione, con lo stesso periodo di attesa di 7 giorni. Quella di chiunque altro viene annunciata ed eseguita 40.320 blocchi (7 giorni) dopo, a meno che il proprietario non rimuova prima il nodo, quindi un proprietario che tiene d'occhio la catena ha una settimana per reagire (uscire dal registro). È anche la strada prevista per un proprietario che ha perso l'accesso all'account del proprietario: la rivendicazione arriva allora da un altro account, quindi anch'essa viene eseguita 7 giorni dopo.

Altre chiavi

Le chiavi native possono essere derivate da una frase di recupero lungo m/44'/883'/n', e la stessa chiave di 32 byte può essere scritta anche come chiave di relay (ZBR_) o di gateway (ZBG_) (chiavi e tipi di account). Le quattro chiavi di ruolo del protocollo (autorità di release, autorità delle pagine, tesoreria e market maker) sono chiavi separate su dispositivi separati (ZooBC Foundation); a un operatore non ne serve nessuna.

Vedi anche