Blockchains - Come vengono risolti i conflitti tra 2 o più server che ospitano la stessa blockchain?

3

Contesto

Supponiamo che io programmi una blockchain che non richiede prove di lavoro e la distribuisca su 3 server A, B e C.

Ora supponiamo che i server A e B ricevano richieste per inserire un nuovo blocco con alcuni dati nella blockchain. Sia A che B modificano le loro copie locali di blockchain. Prima delle modifiche, le copie locali della blockchain sono sincronizzate. Dopo il blocco di modifica, a1 viene inserito nella copia della blockchain A e il blocco b1 viene inserito nella copia della blockchain B.

Domanda

Come faccio a sincronizzare i blockchain in A e B, e come sarà la blockchain su C dopo una sincronizzazione riuscita?

Gli hash dei blocchi precedenti su a1 e b1 saranno uguali. Tuttavia, dopo una sincronizzazione, quale va per primo? quale hash precedente del blocco è stato modificato? E, cosa più importante, esiste un protocollo stabilito per eseguire questa sincronizzazione?

Spero che la mia domanda sia stata chiara, posso aggiornare la domanda con maggiori dettagli in base a commenti e risposte. Grazie.

    
posta kapv89 22.02.2018 - 06:16
fonte

1 risposta

2

la soluzione dipende dalla specifica implementazione di blockchain. in generale questa situazione è chiamata " fork ".

la soluzione classica semplice (e probabilmente più implementata) è la seguente:

il primo blocco trasmesso (ad es. a1) "vince". il secondo blocco (es. b1) è chiamato " blocco orfano ". nel tempo che intercorre tra la trasmissione di a1 e di b1 tutti gli altri minatori vedono solo a1 e verranno estratti sulla base di a1 perché a1 rappresenta la blockchain più lunga. b1 può essere trasmesso, ma b1 non sarà accettato come "La vera blockchain" fintanto che b1 non avrà la blockchain più lunga. poiché il minatore sarà basato su a1, la blockchain con contiene a1 avrà la blockchain più lunga dopo il blocco successivo (che quindi si basa su a1). b1 sarà ignorato ("orfano") da tutti gli altri nodi e minatore. (questo è il motivo, per esempio, che devi aspettare più di una conferma se vuoi essere sicuro che la tua transazione sia in "LA vera blockchain" e non in un blocco che sarà orfano.) non esiste un protocollo di fusione per orfani- blocchi: i blocchi orfani non fanno parte di THE real blockchain in modo che vengano ignorati da altri (ad esempio da C). quindi il contenuto dei blocchi orfani è di fatto perso.

nota: questo approccio è in realtà non dipendente dall'algoritmo in cui vengono creati i blocchi . un blocco può essere creato dalla prova di lavoro o da qualsiasi altro algoritmo di creazione di blocchi in cui non sia prevedibile chi crea il blocco successivo. la soluzione banale sopra è ancora applicabile.

    
risposta data 22.02.2018 - 12:03
fonte

Leggi altre domande sui tag