Finalizzazione

Articolo di Dave Hodgson:

Per comprendere meglio il processo di finalizzazione e perché, questo è un fattore importante per la piattaforma Symbol, quindi questo articolo è stato creato come risorsa di informazioni per cercare di chiarire questi fattori.

Prima di iniziare a esplorare quest’area, vorrei sottolineare il fatto che ho appena appreso questo aspetto e non sono un esperto in questo settore. Studiando queste informazioni online, e grazie all’aiuto di @jaguar0625 e @gimer’s, posso spiegarlo a livello superficiale per le persone che non ne sono esperte. Ho cercato di stare lontano dai dettagli tecnici, ove possibile, e di rendere questo articolo più facile da leggere.

Riepilogo dell’articolo:

  • La finalizzazione è un parametro importante, senza di essa, puoi teoricamente ripristinare qualsiasi transazione nella blockchain.
  • Esistono due approcci principali: Deterministico e Probabilistico.
  • Senza finalizzazione deterministica, gli utenti della blockchain rete devono implementare un controllo di gestione dei rischi fino a quando tutti gli utenti considerano questa transazione finalizzata, ovvero sono necessarie 6 conferme per Bitcoin (BTC) e ciò richiede circa ~ 1 ora
  • Le catene più recenti hanno modi per aggiungere determinatistiche per la Finalizzazione, il che significa che sono sicure, più affidabili e richiedono meno soluzioni alternative, ma ci sono compromessi come la suscettibilità agli attacchi DDoS denial of service. Queste reti blockchain sono in qualche modo concorrenti o analoghe alla rete Symbol.
  • Durante le comunicazioni con gli scambi, le organizzazioni di custodia, le organizzazioni regolamentate, la finalizzazione è stata menzionata nelle conversazioni (e deve avere 1 livello) al fine di implementare l’elenco del token XYM.
  • NEM Core Developers hanno sviluppato diverse soluzioni basate su approcci all’avanguardia e ricerche, quindi abbiamo apportato aiuti esterni, ma ci sono aree che devono essere completamente rifatte e impiega più tempo del previsto.
  • In questa fase, c’è un ritardo nella data di lancio di Symbol, gli sviluppatori hanno continuato a svolgere lo sviluppo, ma ora sono al punto finale in cui si fermano i progressi dello stesso.  Quindi, possono essere settimane anziché mesi di attesa.

Per coloro che desiderano maggiori informazioni, continua a leggere questo articolo.

Blockchain 101

Come molti sanno, una blockchain è una catena di blocchi interconnessi. Ogni blocco contiene dati, l’hash del blocco e l’hash del blocco precedente, formando così una rete / registro crittograficamente verificabile, in cui tutti i nodi hanno questa copia dei dati. 

Ci sono alcuni termini di base per definire:

  • Consenso (consensus): il processo per raggiungere un accordo sul valore dei dati distribuiti, mediante il quale tutti i nodi della rete concordano sul fatto che la blockchain sia corretta. Questo si adatta perfettamente alla struttura del registro distribuito della blockchain. La piattaforma NEM utilizza un consenso Proof of Stake modificato da NXT / PeerCoin. Le modifiche sono un indicatore importante della reputazione e dell’hash VRF (funzione di casualità verificabile) per contribuire a garantire la casualità della harvesting.
  • Sicurezza: Come garantire che le parti oneste non siano d’accordo su cose contraddittorie tra loro?
  • Vitalità: Come convincere le parti oneste a concordare qualcosa?
  • Funzione casuale verificabile (VRF): questa è una funzione di output che può essere verificata pubblicamente crittograficamente in modo che l’output sia veramente pseudo-casuale. 

Nel wallet Symbol, così come durante il processo di opt-in (abbonamento), vedrai i tasti VRF (Funzione casuale verificabile) come un’opzione per coloro che desiderano harvesting.

  • Partizionare la rete (teorema di CAP): una dichiarazione euristica secondo cui in qualsiasi implementazione del calcolo distribuito, non possono essere fornite più di due delle seguenti tre proprietà: coerenza dei dati, disponibilità, Tolleranza di partizione.
    • Concordanza e Tolleranza di partizione: Se si verifica una partizione di rete, blocks (blocco) nessun verrà aggiunto fino a quando la condizione non verrà corretta (La vitalità si sta deteriorando), le catene di blocco si fermano.
    • Disponibilità e Tolleranza di partizione  : Se si verifica una divisione della rete, tutte le partizioni procederanno in modo isolato, le catene indipendenti verranno aggiunte separatamente e quando la partizione viene risolta, le catene concorrenti dovranno essere risolte.
  • Finalizzazione: Come possono gli utenti blockchain sapere se una determinata transazione è definitiva e se questa transazione cambierà in futuro (durante un rollback della blockchain).
    • Tolleranza al guasti bizantina (BFT): Come la rete può affrontare un soggetto che diventa ostile e non si comporta onestamente con gli altri. Il compito dei generali bizantini – in crittografia, è il compito di interazione di diversi abbonati remoti che hanno ricevuto ordini da un centro.

Che cos’è la Finalizzazione?

La finalizzazione nella blockchain è il processo mediante il quale una transazione nella rete blockchain può essere considerata definitiva. Utilizzando la finalizzazione, è possibile determinare se esiste un rischio di falsificazione (modifica) di una transazione o blocco nella blockchain.

La maggior parte delle blockchain hanno micro-forks e vengono costantemente ricostruite da uno stato a uno stato blockchain precedente. Ad esempio, in alcune micro-forcelle, i nodi hanno il blocco A e sono il successivo blocco valido, altri nodi pensano che il blocco B sia il prossimo blocco valido e le forcelle di rete per creare 2 catene parallele, per diversi blocchi che possono continuare a essere creati durante uno o diversi blocchi.

Le reti blockchain hanno bisogno di un modo per raggiungere un consenso sul fatto che un’altra catena parallela è corretta e ripristinare la rete blockchain sbagliata in modo che tutti i nodi ritornino alla stessa rete blockchain (e quindi un unico libro mastro distribuito).

Quali tipi di Finalizzazione ci sono?

Esistono 2 tipi principali di finalizzazione: Probabilistica o Deterministica.

  • Probabilistico si basa su un numero sufficiente di blocchi di passaggio, quindi è proibitivamente costoso / poco pratico avviare deliberatamente una rete blockchain parallela e provare a riportarla su una vera rete blockchain. Probabilistico si basa su un numero sufficiente di blocchi di passaggio, quindi è proibitivamente costoso / poco pratico avviare deliberatamente una rete blockchain parallela e provare a riportarla su una vera rete blockchain.
  • L’approccio deterministico significa che la rete è d’accordo e il blocco o la transazione sono contrassegnati come finali nella rete blockchain. Deterministico è un approccio progettuale o costruttivo basato su dati completamente definiti sui parametri di azioni e proprietà di un oggetto.

Bitcoin (BTC) e la maggior parte delle altre blockchain con algoritmo di consenso PoW utilizzano un approccio probalistico, gli algoritmi di consenso PoS più moderni tendono verso un approccio deterministico, principalmente perché la sicurezza è fondamentale e hanno tempi di blocco più rapidi / o target specifici casi d’uso … In definitiva, ciò significa che le loro transazioni e i loro saldi possono essere considerati più affidabili, oltre che sicuri e più veloci.

La finalizzazione probabilistica è il motivo per cui, ad esempio, lo scambio di criptovaluta Binance richiede 6 conferme di rete per accreditare token Bitcoin (BTC) sul tuo deposito, questo viene fatto per ridurre il rischio di controparte, poiché è generalmente accettato che sono necessarie 6 conferme di rete ( 1 ora), quindi è improbabile il rischio di un attacco del 51%.

Perché la finalizzazione è importante?

Chiunque utilizzi una blockchain non dovrebbe fidarsi delle transazioni in un blocco, a meno che non siano contrassegnate come probolisticamente finalizzate (finale). Perché altrimenti, le persone devono “indovinare” quando la transazione verrà finalizzata.

Ad esempio, cosa può accadere senza finalizzazione:

  • Mando 100 Bitcoin (BTC) allo scambio di Binance e questo scambio accredita 100 Bitcoin, dopo 1 conferma della transazione
  • Commercio e cambio i miei bitcoin con Ethereum (Eth) e esco immediatamente da Ethereum su un altro portafoglio crittografico (impiega 10-20 minuti)
  • Con quattro (4) conferme di rete, la transazione Bitcoin (BTC) viene ripristinata a causa della “catena sbagliata”

La conclusione di cui sopra è che il mio trasferimento allo scambio di Binance non è mai avvenuto e i miei 100 Bitcoin (BTC) sono ancora nel mio account, ma le mie transazioni con Ethereum (Eth) e l’invio al mio portafoglio sono state inizializzate, quindi Ho anche un asset digitale Ethereum (Eth) nel mio portafoglio personale e i miei 100 Bitcoin (BTC).

Il doppio problema di spesa affrontato dalla maggior parte dei sistemi di pagamento crittografico e l’uso di Bitcoin (BTC) è un altro esempio. L’acquirente non aspetta 1 ora per acquistare il caffè e la caffetteria non vuole rischiare di perdere fondi dopo che l’utente se ne va a causa di un rollback della transazione. La rete Lightning è una soluzione di livello 2 che affronta il problema della scalabilità del bitcoin. La caratteristica principale di Lightning Network è la capacità di inviare denaro attraverso i canali di pagamento. Questo fa parte di ciò che Lightning fa su BTC, e l’altra soluzione è che i fornitori di servizi di pagamento corrono il rischio e detraggono le perdite dai loro guadagni, quindi le commissioni finiscono per aumentare; i fornitori creano soluzioni di gestione dei rischi al di fuori della rete blockchain.

Il modo in cui viene considerato (applicato) nelle vecchie catene è di attendere un certo periodo di tempo fino a quando la catena a blocchi è completamente definitiva e non codificata per attendere.

Esistono altri casi d’uso, come il trasferimento di proprietà o token di sicurezza, ecc. Nelle reti precedenti, è necessario attendere un determinato periodo di tempo affinché una transazione venga finalizzata probabilisticamente. Le nuove catene hanno iniziato ad affrontare questo problema andando verso la finalizzazione deterministica, motivo per cui le reti blockchain rivali hanno questo.

La questione della finalizzazione non è emersa quando il token XEM è stato elencato (aggiunto) agli scambi, ma ciò è accaduto, recentemente dagli scambi stessi, quando si è tentato di elencare (aggiungere) il token XYM agli scambi. Pertanto, gli scambi (e i sistemi di deposito) sanno già che ci sono questi problemi.

Ciò è in gran parte irrilevante per le reti private, tranne in alcuni casi.

Quali sono gli approcci di Finalizzazione generali?

Esistono diversi approcci principali alla finalizzazione deterministica (finalità) che vengono utilizzati in altre reti blockchain:

  • Polkadot: un algoritmo basato su (PBFT) convalida le catene e crea blocchi candidati per espandere la completezza della blockchain
  • Ethereum 2.0: Casper FFG (PBFT), 20 minuti di finalizzazione, si tratta di un aggiornamento alla rete Ethereum che prevede il passaggio dell’algoritmo a Proof of Stake (PoS) (noto anche come Ethereum 2.0)
  • Blockchain multipiattaforma Cosmos / Tendermint: PBFT, finalizzazione rapida, sezione sequenziale
  • Algorand: Finalizzazione rapida, ma utilizza un partizionamento coerente e presuppone la sincronicità. Il progetto Algorand ha lanciato una versione aggiornata del suo protocollo che amplierà l’elenco delle applicazioni decentralizzate (dApps) e dei processi che possono essere eseguiti sulla sua piattaforma.

Il Cosmos Project / (Tendermint Team) sono stati i primi a implementare una soluzione di produzione (si basa su validatori). Algorand è generalmente considerato uno dei modi più avanzati per farlo al momento, tuttavia si basa su alcuni presupposti che devono ancora essere testati.

Se si desidera contrassegnare un blocco o la transazione stessa come finalizzata (finale), vengono identificati 2 problemi principali (fasi):

  1. Chi dovrebbe essere idoneo a votare sulla finalizzazione
  2. Tutti gli elettori sanno chi deve avere fiducia e chi non dovrebbe e sapere quando hanno votato tutti.

Esistono due sottotipi di finalizzazione deterministica:

Semi decentralizzato

Queste decisioni si basano su un pool noto di nodi che sono preselezionati in modo che questi nodi possano votare che un determinato blocco o transazione sia finalizzato. Questo è utilizzato nella maggior parte delle soluzioni che applicano la terminologia validatori (Cosmos, Steem, Eth 2.0, Polkadot, ecc.). Vengono utilizzati modelli comuni, ad esempio la tolleranza agli errori bizantina delegata (DBFT) e la tolleranza agli errori bizantina pratica (PBFT).

(DBFT) La tolleranza agli errori bizantina delegata può contrastare i partecipanti blockchain inaffidabili o inaffidabili in modo più efficiente rispetto ad altri algoritmi.

Practical Byzantine Fault Tolerance (PBFT) è un pratico algoritmo di consenso bizantino per la tolleranza agli errori che è responsabile del rendimento efficiente su reti asincrone.

La maggior parte delle soluzioni ha limiti teorici di ridimensionamento e non è stata ampiamente adottata dopo il voto di 250 nodi, principalmente a causa del punto 2 sopra.

Per quanto riguarda l’opzione NEM, ciò significa che potremmo aver bisogno di parlare con alcuni supernodi sull’equità e l’affidabilità di questo approccio, se randomizzato. Pertanto, esiste il rischio che il numero di nodi per la votazione aumenti e la finalizzazione inizia a non corrispondere ai dati corretti. Questo è un rischio ipotetico, perché i problemi non erano un dato problema nel mondo reale e dovrebbero essere testati su testnet. Queste soluzioni possono includere un approccio accessibile o coerente.

Completamente decentralizzato

Questo approccio si basa su un pool dinamico di voti, in cui qualsiasi nodo può unirsi per votare per un blocco / transazione o, al contrario, lasciare questo pool di voti. Tutti i nodi dovrebbero avere un modo per scoprire automaticamente quale dei nodi ha il diritto di voto e quando il voto sarà considerato completo.

Queste soluzioni sono più complesse, ma più affidabili, sicure e scalabili. Esistono diverse catene che hanno approcci ben documentati a questo problema, ad esempio uno di questi è il progetto, Algorand.

Algorand utilizza specificamente un approccio di condivisione coerente in caso di interruzione della rete e richiederà il ripristino automatico. Il progetto Algorand conferma le transazioni nell’ordine di un minuto con una probabilità di biforcazione trascurabile. La progettazione tecnica del progetto Algorand si basa su un meccanismo di ordinamento crittografico combinato con il protocollo di accordo bizantino. Questo progetto evita attacchi mirati ai partecipanti selezionati, usando la sostituzione dei partecipanti in ogni fase. I risultati sperimentali con il prototipo Algorand dimostrano che raggiunge una latenza sub-minuto e un throughput di bitcoin 125x e si adatta bene a 500.000 utenti.

Dove siamo con il progetto Symbol ?

ОLa principale buona notizia è che alcune blockchain, inclusi progetti open source, hanno iniziato a risolvere questo problema, quindi il nostro processo di progettazione è un po ‘più semplice in teoria. Inoltre, nessuna delle altre catene blockchain utilizza la stessa base di consenso + varie modifiche che utilizziamo.

I principali sviluppatori hanno lavorato per diversi mesi alla ricerca sulla progettazione di una soluzione e capire dove si trova l’area problematica. Di recente abbiamo assunto una società di sicurezza specializzata che ha lavorato a numerosi progetti simili in settori come la due diligence legale sugli scambi quotati. Il loro capo crittografo sta lavorando attivamente con il nostro team e nel complesso il feedback è positivo, ma c’è ancora molto da fare. Il loro capo crittografo sta lavorando attivamente con il nostro team e nel complesso il feedback è positivo, ma c’è ancora molto da fare.

Vorrei anche notare che è stato preso in considerazione l’approccio del progetto Algorand e fino a poco tempo fa sembrava possibile implementarlo, ma verso la fine dell’inizializzazione, è stato identificato un problema relativo alla riduzione. In particolare, l’approccio si basa sulla convalida dei blocchi, tuttavia (come il progetto Polkadot) convalidiamo blockchain, micro-forks (> 1 blocchi), come menzionato in precedenza. Reconciling the two would require a complete rewrite of the code and a decision in favor of a sequential separation approach that NEM chose not to follow in the early stages of development.

Il prossimo passo è rivalutare le soluzioni PBFT (Practical Byzantine Error Tolerance) per il launcher, e gli sviluppatori core (core-devs) stanno attualmente lavorando attivamente su questo con varie simulazioni. Questo approccio (PBFT) è stato precedentemente sviluppato, quindi il lavoro di ricerca non inizia da zero e la società di sicurezza sta attivamente aiutando con questo approccio.

Se questo approccio risulta giustificato (fruttuoso) e supera i controlli di progettazione, allora questo approccio sarà in grado di fornire un approccio simile a catene blockchain come (Eth 2.0, Polkadot, ecc.), Che potrebbero essere considerati concorrenti diretti della piattaforma blockchain Symbol. Il processo di progettazione ha richiesto più tempo di quanto si pensasse in precedenza, poiché i set di funzionalità sono in prima linea nella ricerca accademica blockchain, basandosi su soluzioni come PBFT che esistono da diversi anni. Ottenere la soluzione giusta pone la rete pubblica Symbol all’avanguardia nelle soluzioni tecnologiche.

Gli sviluppatori del kernel hanno raggiunto un endpoint di progettazione in cui non è più possibile andare avanti. I prossimi passi sono per completare il progetto, che speriamo di fare nelle prossime 1-2 settimane (questa è ancora una stima approssimativa, non una data esatta).

In questa fase sembra che ciò possa influenzare il lancio di testnet, quindi la data del lancio principale, ma ci sono alcune opzioni che stiamo prendendo in considerazione ora per cercare di evitare o almeno ridurre al minimo i tempi. Saranno necessarie alcune settimane, non alcuni mesi, se ciò accade.

Materiali utili aggiuntivi

Di seguito sono riportate alcune risorse (materiali) che mi hanno aiutato a capire questo problema e le opzioni per risolverlo:

 

Articolo originale: https://forum.nem.io/t/finality-what-is-it-and-why-is-it-important/