Traduzione italiana di Understanding Transaction Finality
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 entra nel nostro gruppo Telegram
Comprendere la finalitĂ delle transazioni
Ouroboros PoS di Cardano utilizza la finalità probabilistica, in cui un blocco è considerato definitivo quando dietro di esso è stato aggiunto un numero sufficiente di blocchi. Quanti blocchi devono essere aggiunti e cosa succede effettivamente alla transazione dopo che l’utente l’ha inviata alla rete? Nell’articolo spiegheremo i concetti di latenza delle transazioni e di finalità .
Storia della transazione
Alice vuole inviare a Bob 10 ADA. Descriviamo cosa succede a una transazione dalla creazione alla finalizzazione del blocco.
Alice crea una transazione nel suo portafoglio o nella sua applicazione. Questo comporta la specificazione dei dettagli della transazione, come l’indirizzo di Bob e la quantità di ADA da trasferire.
Alice deve firmare la transazione con la sua chiave privata. Se utilizza un portafoglio HW, deve confermare la transazione tenendo premuto un pulsante, ad esempio. Questo fornisce una prova di autenticitĂ e garantisce che solo il proprietario delle monete ADA possa avviare una transazione.
La transazione firmata viene trasmessa alla rete Cardano. Viene raccolta dai nodi Cardano, che la convalidano secondo le regole del protocollo.
Una volta convalidata, la transazione viene aggiunta a un pool (mem-pool) di transazioni valide in attesa di essere incluse in un nuovo blocco.
Nel meccanismo di consenso Ouroboros PoS di Cardano, il tempo è diviso in epoche e slot. Per ogni slot viene selezionato casualmente un leader in base alla sua partecipazione. Il leader dello slot seleziona le transazioni dal pool, le verifica e conia un nuovo blocco.
Il nuovo blocco, contenente la transazione di Alice e altre transazioni, viene aggiunto al libro mastro locale e trasmesso alla rete.
Il blocco viene raccolto dai nodi Cardano, che lo convalidano (comprese tutte le transazioni) secondo le regole del protocollo. Ogni nodo mantiene il proprio libro mastro e decide autonomamente quale blocco aggiungervi.
Il processo di selezione delle transazioni e di coniazione di un nuovo blocco si ripete ogni 20 secondi circa. Anche se un blocco viene aggiunto al libro mastro dalla maggior parte dei nodi della rete, la transazione non può essere considerata definitiva.
Latenza delle transazioni e definitivitĂ
Si noti che una transazione non può essere considerata conclusa o valida una volta inviata alla rete da Alice. Bob può essere sicuro di possedere le monete ADA solo nel momento in cui la transazione è definitiva.
Ci sono due periodi importanti nel processo descritto: la latenza della transazione e la finalitĂ della transazione.
In parole povere, la latenza delle transazioni è il tempo che intercorre tra l’invio di una transazione e la sua comparsa nel libro mastro (in un nuovo blocco). La finalizzazione della transazione è il tempo che intercorre tra la comparsa nel primo blocco e l’immutabilità della transazione.
Descriviamola in modo piĂą dettagliato e con esempi.
La latenza delle transazioni è il periodo di tempo che intercorre tra l’invio di una transazione alla rete e l’inserimento della stessa in un nuovo blocco da parte dello slot leader. Nella maggior parte dei casi, una transazione è in attesa in un pool con altre transazioni.
Cardano tratta le transazioni in base al principio “primo arrivato, primo servito”. Tuttavia, se nel pool ci sono più transazioni di quelle che possono essere inserite nel blocco, la transazione di Alice potrebbe non essere inserita nel blocco dal leader dello slot e dovrà aspettare nel pool per il turno successivo.
Un altro slot leader ha già la transazione di Alice nel suo pool. Non appena riceve un nuovo blocco, può rimuovere dal suo pool le transazioni presenti nel blocco. In un nuovo round, la transazione di Alice viene inserita in un nuovo blocco.
La latenza della transazione varia in base al momento esatto in cui Alice invia la transazione e al numero di transazioni precedentemente inviate nel pool. La transazione viene diffusa nella rete entro pochi secondi. In circostanze normali, sia la transazione che il blocco (che è più grande) raggiungono il 95% dei nodi entro 5 secondi.
Se Alice invia una transazione proprio prima del conio di un nuovo blocco e questa entra nel pool del leader dello slot, la latenza può essere letteralmente di pochi secondi. Pochi secondi dopo aver inviato la transazione, Alice vede che è contenuta nel blocco (è nel libro mastro). Alice è stata fortunata.
Tuttavia, Alice potrebbe essere meno fortunata e inviare la transazione subito dopo il conio di un nuovo blocco. In questo caso, la transazione può attendere nel pool per circa 15 secondi (quando la diffusione è stata di 5 secondi) prima che lo slot leader la inserisca in un nuovo blocco. Se la rete è molto utilizzata e il pool è pieno, possono essere necessari diversi blocchi prima che una transazione venga inserita dallo slot leader in un nuovo blocco. Alice può attendere alcuni minuti prima di vedere la transazione nel blocco.
Una volta che la transazione è nel blocco e viene inserita nel libro mastro, entra in gioco la finalità della transazione.
Cardano utilizza una finalità probabilistica, ovvero un blocco viene considerato definitivo quando sono stati aggiunti abbastanza blocchi da rendere proibitivo o poco pratico avviare deliberatamente una catena parallela e tentare di tornare indietro alla catena canonica. In altre parole, la finalità probabilistica si riferisce all’idea che la probabilità che una transazione venga invertita diminuisce man mano che il blocco contenente quella transazione sprofonda nella catena.
L’utente non ha la certezza che un blocco appena aggiunto al libro mastro vi rimanga per sempre. Può accadere che diversi blocchi con la stessa altezza vengano coniati in uno slot o in due slot vicini tra loro. In tal caso, si crea una cosiddetta forchetta. Uno dei blocchi verrà conservato, mentre l’altro rimarrà orfano. Le transazioni in un blocco orfano vengono invertite.
La finalizzazione di un blocco (cioè di tutte le transazioni in esso contenute) è garantita al 100% da Ouroboros PoS dopo K blocchi, dove K è il parametro di rete impostato a 2160. La finalizzazione è garantita dopo 12 ore.
Fortunatamente, gli utenti non devono aspettare così tanto. Anche se le biforcazioni si verificano con una certa frequenza nella rete, di solito vengono risolte entro pochi blocchi.
Nell’immagine si possono vedere i blocchi e gli slot in cui sono stati coniati. 2 blocchi sono stati coniati nello slot N+40. Si è verificata una biforcazione. Il leader dello slot estratto a caso nello slot N+60 aggiungerà un nuovo blocco al blocco rosso perché ha un output VRF inferiore. Se gli altri slot leader hanno tutti i blocchi disponibili, è facile per loro decidere quale catena seguire.
Un alto grado di certezza sulla finalizzazione del blocco (immutabilità della transazione) rappresenta circa 70 blocchi, pari a circa 25 minuti. Tuttavia, un grado di certezza relativamente elevato è di soli 5 blocchi, pari a circa 2 minuti.
Se Alice inviasse a Bob 10 milioni di ADA, Bob avrebbe la certezza quasi assoluta della proprietĂ delle monete solo dopo 25 minuti. Nel caso di 10 ADA, 2 minuti sono sufficienti.
Ogni utente può definire il proprio livello di certezza. Non si tratta di una raccomandazione ideale, ma per il consenso con finalità probabilistiche non esiste una soluzione migliore.
Tutti i nodi onesti che si comportano secondo le regole uniformi del protocollo accettano blocchi validi. Tutti i nodi si comportano in modo autonomo e non sanno come hanno deciso gli altri nodi della rete (quali blocchi hanno aggiunto al libro mastro). I leader degli slot decidono quale blocco seguire. I nodi passivi che si limitano a sincronizzare i blocchi non prendono decisioni sulla finalitĂ (anche se decidono essi stessi di accettare i blocchi).
Nella maggior parte dei casi (se possibile), il gestore della slot sceglie il blocco precedente (se disponibile). Si tratta del blocco che è stato coniato dal precedente slot leader. Se il leader del blocco corrente non ha ricevuto un blocco precedente, continuerà con quello che considera il blocco più recente. In questo caso si creano delle biforcazioni.
Le biforcazioni vengono risolte secondo semplici regole e, se la maggior parte dei nodi si comporta onestamente, un blocco può essere considerato definitivo se ci sono altri 5 blocchi dietro di esso. La definitività aumenta con ogni ulteriore blocco aggiunto. Un blocco con altri 25 blocchi alle spalle è quasi certamente definitivo (tutte le transazioni in esso contenute sono immutabili). La certezza assoluta è di 2160 blocchi.
Conclusione
Quando un utente invia una transazione alla rete, di solito guarda nell’explorer della blockchain e aspetta che venga visualizzata nel libro mastro. Questa è la latenza transazionale. Dopodiché, di solito si attende il numero di conferme, che è essenzialmente il numero di blocchi che vengono aggiunti al blocco in cui si trova la transazione dell’utente. Questo è di solito il comportamento degli utenti che utilizzano la rete di consenso Nakamoto, quindi processi simili hanno luogo nella rete Bitcoin. Tuttavia, esistono reti con una finalità più rapida, in quanto è possibile che i nodi forniscano “approvazioni” prima o dopo il conio di un blocco.