🇮🇹 "Gestione del tempo su Cardano, parte 1. Informazioni su Ouroboros e sull'importanza del determinismo"

:it: Traduzione italiana di “Time handling on Cardano, part 1. About Ouroboros and the importance of determinism - IOHK Blog”

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


Gestione del tempo su Cardano, parte 1. Informazioni su Ouroboros e sull’importanza del determinismo

La misurazione del tempo on-chain è essenziale per garantire il consenso globale in un ambiente blockchain. Questo post spiega come viene gestito il tempo su Cardano.

img

Immagine di Noor Younis.

Questo post è frutto della collaborazione di Arnaud Bailly, Michael Peyton Jones, Sebastian Nagel, Polina Vinogradova e Brian Bush.

Il tempo è necessariamente relativo a ogni partecipante al sistema blockchain ed è di fondamentale importanza per sostenere e mantenere le proprietà di sicurezza del protocollo di consenso Ouroboros. Ci si aspetta che i blocchi coniati vengano propagati a tutti i nodi del sistema in modo tempestivo, quindi il tempo richiede la costruzione di una rappresentazione accettabile a livello globale per il raggiungimento del consenso.

Gestione del tempo con Ouroboros

Localmente, un nodo calcola il trascorrere del tempo utilizzando un sistema di “orologio a muro”. Il codice per questo orologio è complicato perché la lunghezza dello slot può variare al confine di un hard fork, quindi il tempo deve essere calcolato tenendo conto di questo aspetto.

Il codice esegue quattro passi per ottenere il currentSlot:

  • Attende un certo ritardo corrispondente al tempo rimanente fino al prossimo slot, o un ritardo arbitrario di 60s se lo slot corrente è sconosciuto, cosa che accade durante la sincronizzazione.
  • Ottiene l’ora corrente del sistema e la traduce in un numero di slot in base alla lunghezza dello slot per l’epoca corrente.
  • Se il nuovo slot è maggiore del precedente, “spunta” un nuovo slot corrente.
  • Se quanto sopra non è vero, si attende un po’ di più o si segnala un errore se l’ora corrente è saltata troppo indietro.

Lo slot corrente locale viene confrontato con lo slot riportato dalla cima del ledger del nodo. Se quest’ultimo è più vecchio, viene ignorato perché significa che il nodo sta sincronizzando il suo stato con la catena.

Poiché la lunghezza dello slot può cambiare in caso di hard fork, il consenso può convertire gli slot in tempo solo fino a un punto fisso nel futuro - la “finestra di stabilità” - in cui non possono verificarsi hard fork. In pratica, la finestra di stabilità è essenziale perché fornisce una misura del tempo necessario per garantire la finalizzazione delle transazioni e l’immutabilità dello stato della catena. Durante la finestra di stabilità, la rete deve produrre almeno k blocchi, dove k è il numero di blocchi dopo i quali la catena diventa immutabile. La finestra di stabilità può durare fino a 3k/f, pari a 36 ore con i parametri attuali, ovvero circa un giorno.

Sfide attuali

Esiste un limite fisico fondamentale alla velocità con cui le informazioni possono viaggiare: la velocità della luce. Ciò implica che la sincronizzazione del tempo su una rete di nodi richiede tempo.

Il Network Time Protocol (NTP) esiste per fornire un meccanismo di sincronizzazione che affronta le limitazioni temporali e le differenze di misurazione. D’altra parte, NTP non garantisce un aumento monotono: il tempo può talvolta saltare avanti e indietro di alcuni secondi o addirittura di ore. I sistemi esistenti che forniscono orologi accurati, precisi e affidabili su scala globale sono centralizzati, come l’orologio globale fornito da Spanner, ad esempio.

Attualmente, su Cardano:

  • I parametri di rete sono impostati in modo tale che la granularità degli intervalli di tempo osservabili (ad esempio, il tempo di blocco) sulla catena sia di 20s, pari alla lunghezza dello slot (1s) divisa per il coefficiente di blocco f (la frequenza di blocco prevista, 0,05). È improbabile che questi parametri cambino nel futuro a breve termine.
  • Questi 20 secondi sono stati determinati come budget ottimale per garantire la sicurezza del protocollo, dati i vincoli per replicare le nuove transazioni e i blocchi attraverso la rete (300 ms di ritardo TCP in tutto il mondo, con migliaia di nodi). Sebbene il throughput dei blocchi possa essere aumentato in futuro, è improbabile che ciò riduca la granularità del tempo osservabile sulla catena.
  • La finalizzazione delle transazioni può essere raggiunta in circa un giorno e non può avvenire in meno di un giorno, secondo il progetto di consenso di Ouroboros. Si noti che, sebbene un alto livello di fiducia sia già raggiunto in pochi minuti o ore, la probabilità che un blocco venga scartato alla fine diminuisce esponenzialmente con la sua profondità e il numero di nodi che devono adottare questo blocco.

Infine, a lungo termine, si prevede di sostituire l’attuale protocollo Ouroboros con Ouroboros Chronos. Ouroboros Chronos affronta le sfide del timekeeping fornendo la prima fonte temporale crittografica ad alta resilienza basata sulla tecnologia blockchain.

L’importanza del determinismo in un ambiente blockchain

Nel contesto attuale, determinismo significa che una determinata transazione ha un “effetto fisso” sullo stato del libro mastro. Ma è importante distinguere tra i concetti di determinismo storico e determinismo prospettico.

Le blockchain si basano sul principio di replicare una sequenza fissa di transazioni (raggruppate in blocchi) per raggiungere un consenso sullo stato del mondo. Tutte le blockchain hanno un determinismo storico, il che significa che le transazioni nella catena hanno un effetto fisso, altrimenti i risultati della convalida della catena sarebbero non-deterministici, con conseguente rottura del consenso.

Ma poche blockchain hanno un determinismo prospettico, il che significa che una transazione non ancora aggiunta alla catena ha un effetto fisso (o non si applica). Cardano ha un determinismo prospettico (con l’attuale eccezione dei pointer address, che si propone di rimuovere in questo CIP). Per saperne di più sul determinismo del costo delle transazioni di Cardano, si veda qui.

Sulle blockchain prive di determinismo prospettico gli utenti non possono sapere a quanto ammontano le commissioni per il gas che devono pagare per le transazioni, con il risultato che tali utenti pagano in eccesso per le transazioni. La mancanza di determinismo prospettico è anche il motivo per cui esiste il rischio che una transazione su queste blockchain possa fallire e consumare molto gas.

Il potere del determinismo prospettico

Il determinismo prospettico è una caratteristica molto potente di Cardano, per molteplici ragioni:

  • Gli utenti sanno in anticipo cosa farà una transazione, quindi non ci sono sorprese. Questo è particolarmente importante per gli script, perché gli utenti sanno esattamente

    • come si comporteranno gli script e
    • quanto budget di esecuzione è necessario.
  • Le transazioni proposte possono essere tranquillamente elaborate in parallelo. Il parallelismo è una delle ragioni della velocità di Hydra.

  • Poiché gli utenti sanno in anticipo se una transazione fallirà o meno, i fallimenti degli script possono essere puniti duramente (perché non accadranno mai a utenti non malintenzionati).

  • In generale, rende più facile e prevedibile l’interazione e l’evoluzione della blockchain.

Il determinismo prospettico delle transazioni richiede che ogni parte della convalida delle transazioni, compresa l’esecuzione degli script, sia completamente deterministica. Questo è il motivo per cui Cardano non può avere operazioni non deterministiche negli script.

Uno dei modi per ottenere il determinismo prospettico è che l’effetto di una transazione sia interamente determinato dalla transazione stessa e dagli output a cui fa riferimento. Nel contesto di Cardano, questo è chiamato locality. La località è anche un grande vantaggio per gli utenti, poiché significa che chiunque può sapere cosa fa una transazione semplicemente guardando la transazione stessa.

La seconda parte di questo blog post tratterà i casi d’uso della gestione del tempo su Cardano con Plutus, Marlowe e Hydra.

1 Like