Wiki di ZooBC
Proof of Participation

Proof of Participation

Il Proof of Participation (PoP) è il modo in cui ZooBC raggiunge l'accordo sui suoi blocchi. I blocchi sono prodotti dai nodi di un registro dei nodi on-chain, estratti a sorte a partire dal seed del blocco precedente, con la stessa possibilità per ogni seggio. Ogni nodo viene misurato sul lavoro di cui una rete ha bisogno, cioè passare blocchi e transazioni ai peer che il protocollo gli assegna, e questa misura decide la sua quota delle nuove monete. Un blocco è valido perché l'ha firmato la chiave giusta, e ogni nodo lo verifica da sé.

Quattro obiettivi di progetto

  • Potere di produzione dei blocchi uniforme. Saldo, stake, hardware e punteggio non cambiano la possibilità di un seggio.
  • Accesso aperto ma cadenzato. Chiunque può mettersi in coda per un seggio bloccando uno stake; il protocollo ammette un nuovo arrivato per ciclo.
  • Partecipazione misurata e ricompensata. L'inoltro è provato da ricevute firmate dai peer che ricevono, e le ricevute decidono il reddito di ogni nodo.
  • Nessun lavoro sprecato. La sicurezza viene da firme, hash e una funzione casuale verificabile, non da enigmi da risolvere.

Il confronto con gli altri modelli mette questi obiettivi accanto al Proof of Work, al Proof of Stake e alle loro varianti delegate e federate.

Un blocco, passo per passo

  1. L'estrazione. Il seed del blocco precedente avvia un generatore casuale che ogni nodo esegue allo stesso modo. Il generatore designa un produttore per il round 1, un altro per il round 2 e così via (estrazione).
  2. I round. Il produttore del round 1 punta a datare il suo blocco 15 secondi dopo il precedente. Se tace, 15 secondi più tardi subentra il produttore del round 2 (round, tempi e finestre). Solo i primi dieci round possono contenere transazioni, e il produttore del blocco precedente viene retrocesso (round prioritari, blocchi vuoti e il produttore precedente).
  3. Il blocco. Il produttore firma il blocco con la sua chiave del nodo e dimostra il nuovo seed con una funzione casuale verificabile, quindi non può scegliere quel seed (seed del blocco (VRF)).
  4. Le verifiche. Ogni nodo verifica che il produttore sia stato estratto per il round in cui cade il timestamp del blocco o per il round precedente, poi la firma, la prova del seed, ogni transazione e ogni ricevuta. Un blocco vuoto è valido.
  5. Il lavoro. I nodi inoltrano blocchi e transazioni ai loro peer prioritari e raccolgono ricevute firmate (ricevute e topologia della rete). Le ricevute che un nodo presenta nei propri blocchi muovono il suo punteggio di partecipazione, che pesa la lotteria coinbase.
  6. Il costo dell'assenza. Un turno saltato rende un nodo «mancante»: nessun reddito e un punteggio in calo. Quattro turni mancati di fila lo sospendono, e un punteggio pari a zero lo espelle (turni mancati, sospensione ed espulsione).
Il nodo A inoltra un blocco al nodo B, e B gli rimanda una ricevuta firmata. Il blocco successivo di A contiene la ricevuta, che muove il punteggio di partecipazione di A, e il punteggio fissa la possibilità di A di ottenere una quota dei nuovi ZBC.
Il nodo A inoltra un blocco al nodo B, e B gli rimanda una ricevuta firmata. Il blocco successivo di A contiene la ricevuta, che muove il punteggio di partecipazione di A, e il punteggio fissa la possibilità di A di ottenere una quota dei nuovi ZBC.

Potere e reddito, tenuti separati

L'estrazione dei produttori ignora il punteggio, e la lotteria ignora lo stake. Un nodo con un punteggio alto guadagna di più, ma non produce più blocchi e non sceglie più seed: il potere resta lo stesso per ogni seggio, mentre il reddito segue il lavoro che ciascun nodo svolge. Più potere significa più seggi, e i seggi arrivano solo attraverso la coda, un'ammissione alla volta (ritmo di ammissione).

Due nodi con punteggi del 90 % e del 30 %: nell'estrazione dei produttori le loro fette sono uguali (1 : 1); nella lotteria coinbase sono 3 : 1. Il punteggio muove le ricompense, non la produzione dei blocchi.
Due nodi con punteggi del 90 % e del 30 %: nell'estrazione dei produttori le loro fette sono uguali (1 : 1); nella lotteria coinbase sono 3 : 1. Il punteggio muove le ricompense, non la produzione dei blocchi.

Quando i rami sono in concorrenza

I nodi seguono il ramo con la maggiore difficoltà cumulativa, in cui i blocchi puntuali pesano più di quelli in ritardo; in caso di parità esatta vince l'hash di punta più basso (scelta del fork e difficoltà cumulativa). Nessun nodo fa rollback di più di 720 blocchi (3 ore) né scende sotto l'ultimo checkpoint co-firmato sulla catena spine (finalità e rollback). Un produttore che firma due blocchi sullo stesso padre può essere denunciato e sanzionato (doppia firma (equivocazione)).

Numeri chiave

VoceValore (mainnet)
intervallo tra i blocchi, e durata di un round15 secondi
seggi genesi per catena11
round che possono contenere transazionida 1 a 10
punteggio di partecipazione iniziale20 %
turni mancati di fila prima della sospensione4
peer prioritari per nodo, rimescolati ogni12, ogni 40 blocchi
limite di rollback720 blocchi (3 ore)

Vedi anche

Articoli su questo argomento