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
- 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).
- 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).
- 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)).
- 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.
- 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.
- 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).
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).
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
| Voce | Valore (mainnet) |
|---|---|
| intervallo tra i blocchi, e durata di un round | 15 secondi |
| seggi genesi per catena | 11 |
| round che possono contenere transazioni | da 1 a 10 |
| punteggio di partecipazione iniziale | 20 % |
| turni mancati di fila prima della sospensione | 4 |
| peer prioritari per nodo, rimescolati ogni | 12, ogni 40 blocchi |
| limite di rollback | 720 blocchi (3 ore) |
Vedi anche
Articoli su questo argomento
- Doppia firma (equivocazione)
Che cosa succede quando un produttore firma due blocchi diversi sullo stesso padre: come i nodi onesti lo evitano, come qualsiasi nodo registrato lo dimostra con un EquivocationReport e quanto costa. - Il Proof of Participation a confronto con PoW e PoS
In che cosa il Proof of Participation di ZooBC differisce dal Proof of Work, dal Proof of Stake e dai modelli delegati e federati: chi produce i blocchi, come si ottiene potere e su che cosa poggia la sicurezza di un blocco. - Il punteggio di partecipazione
Il punteggio da 0 a 100 % che misura quanto bene un nodo svolge il suo lavoro: come sale e scende, che cosa decide (reddito dalla lotteria, espulsione) e che cosa non tocca mai (la produzione dei blocchi). - Il seed del blocco (VRF)
Il seed di 64 byte presente in ogni blocco guida le scelte casuali della catena. È l'output di una funzione casuale verificabile, quindi il suo produttore non può sceglierlo e chiunque può verificarlo. - L'estrazione: chi produce il prossimo blocco
Come ogni nodo calcola, dal seed del blocco precedente, la stessa lista ordinata di produttori per il blocco successivo, e perché ogni seggio attivo ha la stessa possibilità. - Ricevute e topologia della rete
Come ZooBC dimostra che un nodo ha inoltrato blocchi e transazioni: i peer prioritari estratti ogni 40 blocchi, la ricevuta firmata di 232 byte e le verifiche che ogni validatore esegue. - Round prioritari, blocchi vuoti e il produttore precedente
Perché solo i primi dieci round possono contenere transazioni, perché un blocco vuoto è comunque un blocco completo, e perché il produttore del blocco precedente viene retrocesso e mai escluso. - Round, tempi e finestre
Come ZooBC divide il tempo dopo ogni blocco in round di 15 secondi, in quale round cade un timestamp e perché nessun singolo produttore assente può fermare la catena. - Scelta del fork e difficoltà cumulativa
Come i nodi ZooBC scelgono tra rami in concorrenza: vince la difficoltà cumulativa più alta, i blocchi puntuali pesano più di quelli in ritardo e le parità esatte vanno all'hash di punta più basso. - Turni mancati, sospensione ed espulsione
Che cosa succede a un nodo che salta il suo turno: un turno mancato, lo stato di «mancante» che ne blocca il reddito e ne abbassa il punteggio, la sospensione dopo quattro turni mancati e l'espulsione a zero.