🇮🇹 "Capire le slot battles"

:it: Traduzione italiana di “Understanding slot battles”

Traduzione italiana a cura di Lordwotton di RIOT Stake Pools. Se apprezzi queste traduzioni, per favore valuta di supportare il mio lavoro delegando i tuoi ada a RIOT :pray: entra nel nostro gruppo Telegram


Capire le slot battles


Il PoS di Cardano si basa sul consenso di Nakamoto. Pertanto, è possibile ottenere solo la cosiddetta finalità probabilistica dei blocchi. Pertanto, a volte capita che i pool producano blocchi che rimangono orfani. Parleremo delle circostanze in cui ciò accade e di come la rete può affrontarlo.

Come vengono coniati i blocchi nella rete Cardano

Un’epoca di Cardano dura 5 giorni ed è suddivisa in cosiddetti slot della durata di un secondo. Ci sono quindi 432.000 slot in un’epoca. La casualità del protocollo Cardano è configurata per produrre un blocco ogni 20 secondi circa. Pertanto, in ogni epoca possono essere creati circa 21.600 blocchi.

Ogni pool registrata è un potenziale candidato che può coniare un blocco in uno slot specifico. Un nodo che ottiene il diritto di coniare un blocco è chiamato slot leader. La selezione degli slot leader deve essere casuale. La rete gestisce una lotteria che non dipende da alcun controllo centrale. I singoli nodi possono scoprire autonomamente se hanno vinto la lotteria in un determinato slot, cioè se possono produrre un nuovo blocco.

Per sorteggiare il leader dello slot viene utilizzata una primitiva crittografica chiamata Verifiable Random Function (VRF). La VRF è stata introdotta da Micali, Rabin e Vadhan nel 1999 ed è utilizzata in diversi schemi, protocolli e sistemi crittografici.

Il concetto di base del VRF è semplice. Il proprietario della chiave segreta può calcolare il valore di uscita e una prova associata per qualsiasi valore di ingresso. Tutti gli altri, utilizzando la prova e la chiave pubblica associata (chiave di verifica), possono verificare che il valore di uscita sia stato calcolato correttamente.

Nella rete Cardano, solo un nodo che crea il certificato necessario e lo memorizza nella blockchain può coniare blocchi. Attraverso i certificati di registrazione, tutte le informazioni necessarie (comprese le chiavi di verifica) vengono memorizzate nella blockchain. In questo modo, tutti i nodi dispongono di tutte le informazioni rilevanti per convalidare i blocchi (e le prove) prodotti da altri nodi.

Quando un nodo riceve un blocco dalla rete, può verificare che sia valido attraverso la prova VRF e che sia stato creato da un nodo che era realmente il leader in quello slot.

L’algoritmo VRF prende in considerazione diversi input per poter valutare se un dato nodo è diventato il leader dello slot in uno slot specifico. Oltre ad altri, questi includono l’ID dello slot corrente e i ⅔ di tutti gli output VRF dell’epoca precedente, dai quali viene creato un singolo hash (valore). Questo hash è chiamato anche Nonce. Il Nonce rende impossibile calcolare i risultati del VRF con eccessivo anticipo.

Ogni nodo deve calcolare il proprio numero di soglia. Si tratta di un compito facile, poiché deriva dalla dimensione dello stake. La posta in gioco consiste nelle monete ADA dell’operatore (“pledge”) e di tutti gli staker. Maggiore è la posta in gioco, maggiore è il numero di blocchi che il pool può produrre in una determinata epoca.

Ogni secondo, ogni pool impiega l’algoritmo VRF per ottenere un output VRF. L’output VRF viene confrontato con la soglia. Se l’output VRF è inferiore alla soglia, il pool è diventato leader dello slot e ha il diritto di coniare un nuovo blocco.


Nel nostro esempio, il NODE 7 è diventato lo slot leader. L’output VRF era 28.454.834 e la soglia era 30.000.000. Quindi il nodo conia un nuovo blocco e inserisce la prova VRF (l’output VRF) nell’intestazione del blocco.

La prova VRF contenuta nel blocco proposto viene utilizzata per la convalida. Qualsiasi altro nodo della rete utilizza l’algoritmo VRF per verificare la validità del blocco. Oltre alla prova VRF, il blocco deve essere firmato da una chiave KES (Key Evolving Signature cryptography). Questo è il livello successivo di sicurezza, in modo che se un aggressore riuscisse in qualche modo a violare il funzionamento del VRF, non avrebbe comunque le chiavi KES dell’operatore per firmare i blocchi.

Chi vincerà nella slot battle?

Una battaglia di slot si verifica quando 2 pool coniano un blocco nello stesso slot. Quindi ci sono due leader di slot in uno slot. Quindi, potenzialmente due blocchi in competizione. Per ogni slot è possibile inserire nella blockchain un solo blocco, quindi uno di essi deve essere scartato. Si dice che quest’ultimo rimane orfano.

Nel nostro esempio, il NODE 7 è diventato il leader dello slot poiché l’output del VRF era di 28.454.834, inferiore alla soglia di 30.000.000. Nello stesso slot, anche il NODE 3 è diventato il leader dello slot con un output VRF di 16.459.996 che è inferiore alla soglia di 27.500.000.


Entrambi i nodi coniano un nuovo blocco, vi inseriscono l’output VRF (prova VRF) e lo distribuiscono agli altri nodi della rete Cardano. Un blocco orfano non conta per la ricompensa del pool. Ciò significa che solo un singolo pool può ricevere una ricompensa per un blocco prodotto nello stesso slot.

Se la distribuzione dei blocchi è veloce (basso ritardo), è probabile che molti altri nodi della rete ricevano entrambi i blocchi. Quindi il blocco coniato dal NODO 7 con uscita VRF 28.454.834 e il blocco coniato dal NODO 3 con uscita VRF 16.459.996.

Se un nodo riceve due blocchi validi per un singolo slot, sceglierà quello con output VRF inferiore. Un nodo scarta un blocco con una prova VRF più alta, rendendolo essenzialmente orfano. I pool con uno stake più basso sono avvantaggiati nella battaglia degli slot perché c’è una maggiore possibilità che venga prodotto un output VRF più basso.

Probabilmente sapete già che, nel nostro esempio, il blocco rosso coniato dal NODO 3 ha vinto su quello verde del NODO 7.


Se si verifica una battaglia di slot, il vincitore è determinato dalla casualità. Gli operatori del pool non hanno alcuna possibilità di influenzare la selezione dei blocchi che avviene sugli altri nodi della rete, a patto che si comportino onestamente.

Dal punto di vista della blockchain, la situazione è la seguente. C’è stata una battaglia di slot nello slot N+40. Un nodo riceve due blocchi coniati nello stesso slot. Sceglie il blocco rosso come ultimo blocco della blockchain e scarta quello verde. Un altro blocco viene coniato nello slot N+60 e il leader dello slot ha seguito correttamente il blocco rosso. Con ogni ulteriore blocco aggiunto, diventa sempre più evidente che la catena dietro al blocco rosso rimarrà per sempre nella blockchain, mentre il blocco verde rimarrà orfano.


Come abbiamo detto all’inizio, in un’epoca possono essere coniati circa 21.600 blocchi. Il risultato migliore delle ultime epoche è stato di 21.417 blocchi coniati nell’epoca 411. Di solito, nelle epoche vengono coniati circa 20.900-21.11 blocchi. Un nodo può diventare slot leader e per qualche motivo non essere in grado di coniare un blocco (ad esempio perché non è online nel momento in cui è diventato slot leader).

Le battaglie tra slot si verificano relativamente spesso, circa 420 in ogni epoca, cioè circa 4 ogni ora. Si tratta di circa il 2% del numero totale di blocchi. È quindi buona norma attendere diversi blocchi prima di considerare definitivo il blocco con la propria transazione. Se ci sono circa 4 battaglie di slot all’ora, oserei dire che aspettare 6 blocchi (2 minuti) è un tempo sufficiente per essere sicuri che il blocco sia definitivo.

Conclusione

Un blocco può diventare orfano per un altro motivo. Se non raggiunge il nodo che diventa leader dello slot abbastanza velocemente, il leader dello slot è costretto a seguire il blocco precedente (l’ultimo disponibile). Ne parleremo la prossima volta.