Spacechains: come funziona questa nuova proposta di sidechain Bitcoin

Nodo di origine: 1544330

Spacechains è una sidechain Bitcoin proposta che offre un meccanismo di ancoraggio unidirezionale che utilizza il design della mia unione cieca.

L'idea di sidechain come meccanismo di ridimensionamento e di estensione delle funzionalità per Bitcoin è un concetto molto vecchio. Una sorta di idea di base "antenata" di sidechain, unire catene minate, risale addirittura a prima della scomparsa di Satoshi.

Quella proposta era semplicemente l'idea di due catene completamente separate e non correlate estratte dallo stesso gruppo di minatori, senza la possibilità di spostare nulla tra le catene. Il proposta originale di sidechain è stato realizzato nel 2014 da molte delle persone che hanno fondato Blockstream letteralmente una settimana dopo la pubblicazione del documento. L'idea di base era quella di poter far muovere le monete avanti e indietro tra la blockchain principale di Bitcoin e altre catene laterali, con semplici prove di verifica del pagamento (SPV) utilizzate per dimostrare che le cose sono valide quando invii monete da una catena all'altra. Ciò non è mai stato realizzato a causa delle complessità nell'attuazione delle riorganizzazioni della catena, del potenziale di furto e dei rischi della centralizzazione dell'attività mineraria (tutti i quali possono essere letti nella sezione quattro del Carta bianca bitcoin).

I meccanismi a pioli per le catene laterali possono essere di due varietà, unidirezionale e bidirezionale. I significati dovrebbero essere ovvi: in un piolo a due vie le monete possono spostarsi avanti e indietro tra la catena madre e la catena laterale, e in un piolo unidirezionale, possono solo spostarsi dalla catena madre alla catena laterale e non tornare mai indietro. Attualmente, l'unica forma di peg sidechain a due vie implementata su Bitcoin è attraverso il consenso federato, il che significa che il peg è garantito da un gruppo fidato di "custodi" che mantengono il controllo dei fondi ancorati alla sidechain in un portafoglio multisig fino a quando non vengono ritirati.

Le persone, tuttavia, hanno continuato a lavorare su altri progetti per pioli sidechain che non sono federati. Qui esaminerò la proposta Spacechain di Ruben Somsen come esempio. È un meccanismo di piolo unidirezionale che utilizza un design di mine a fusione cieca, simile a Paolo Stztorc'S. Ciò significa che le monete possono solo entrare nella sidechain e non andarsene mai, e che i minatori non devono eseguire un nuovo software per ottenere un compenso per il mining della sidechain (tuttavia, come parlerò più avanti, possono beneficiare di più in questo modo).

La proposta della catena spaziale

Il merge mining richiede ai minatori di eseguire i nodi sia della catena Bitcoin che di qualsiasi altra catena stiano estraendo, al fine di compilare i blocchi per entrambe le catene e impegnarsi su di essi nell'intestazione del blocco Bitcoin che stanno estraendo. Il blind merge mining sfrutta il fatto che, in realtà, i miner Bitcoin devono solo avere l'intestazione del blocco dell'altra catena su cui impegnarsi nel loro blocco Bitcoin, qualcun altro può effettivamente prendersi la briga di mettere insieme il blocco per l'altra catena.

Il meccanismo proposto da Somsen per questo può essere utilizzato QUALSIASI PREVENTIVO (APO) per consentire a chiunque di essere in grado di competere per costruire il blocco sidechain successivo, garantendo al contempo che un solo blocco possa essere impegnato per il blocco della catena principale Bitcoin. Un altro vantaggio della proposta di Ruben è che non richiede uno specifico soft fork per consentire la possibilità di distribuire le catene spaziali. Eltoo/ANYPREVOUT viene proposto per i vantaggi della rete Lightning, consentendo catene di stato flessibili e fabbriche di canali. Le catene spaziali sono semplicemente un'altra possibilità delle molte cose a cui abilitare ANYPREVOUT aprirebbe la strada.

L'idea generale della sua proposta di mining blind merge è che, facendo uso di APO, puoi predefinire una lunga serie di transazioni che prendono lo stesso UTXO iniziale immesso in esse e si impegnano a ricrearlo sempre. Quindi, immagina un singolo satoshi UTXO, con ogni transazione pre-creata che garantisce che lo stesso UTXO venga ricreato come output una volta confermato. Pensalo come una sorta di indicatore, questo UTXO speciale è l'identificatore che consente a chiunque guardi la blockchain principale di Bitcoin di sapere: "È qui che trovo un impegno per il sidechain dei blocchi di X". Questo lascia aperto un problema però: le tasse dei minatori. Se quell'UTXO deve essere ricreato con lo stesso importo, non ci sono fondi con cui pagare le commissioni.

Questo può essere affrontato utilizzando SIGHASH_SINGOLO (la firma di un input firma solo quel singolo input e l'output corrispondente) e SIGHASH_ANYONECAPAGA (le persone sono liberamente in grado di aggiungere ulteriori input e output senza invalidare la firma purché l'input/output utilizzando SIGHASH_SINGLE sia lasciato così com'è, per non invalidare quella firma). Quindi chiunque può aggiungere un input e modificare l'output per pagare le commissioni dei minatori per la transazione.

Questo è anche il meccanismo utilizzato per impegnarsi nell'intestazione del blocco del blocco sidechain. Allo stesso modo in cui Taproot si impegna nell'albero delle diverse condizioni di spesa modificando la normale chiave pubblica con la radice Merkle dell'albero, chiunque può modificare la normale chiave pubblica con l'hash dell'intestazione del blocco del blocco sidechain. I nodi sidechain possono quindi rivelare e trasmettere quell'intestazione del blocco con un puntatore alla transazione nella catena principale per dimostrare che è stata effettivamente minata. Da lì, i nodi sidechain eseguirebbero tutta la normale convalida per garantire che il blocco sidechain segua le regole di consenso appropriate e ritrasmettano i blocchi effettivi attraverso la rete sidechain proprio come sulla catena principale.

Se una delle transazioni utilizzate per eseguire il commit sui blocchi sidechain sulla catena principale è stata utilizzata per eseguire il commit in un blocco non valido, o anche dati completamente obsoleti, quando i nodi sidechain vedono la transazione di commit utilizzata sulla catena, possono accadere due cose: uno, un blocco non valido verrà propagato attraverso la rete sidechain e quando non supera i controlli di convalida sarà orfano; o due, i dati non vengono mai rivelati, nel qual caso il blocco della sidechain successivo si baserà e si impegnerà nell'ultimo blocco effettivamente rivelato e l'impegno non rivelato verrà ignorato. Questa seconda possibilità segue lo stesso tipo di logica della catena più lunga della catena principale, quindi anche se qualcosa è stato rivelato in seguito, sarà comunque orfano a causa di blocchi futuri che non si sono basati su di essa.

Ma c'è ancora il problema della doppia spesa. Chiunque abbia la chiave privata utilizzata per generare il marker UTXO potrebbe potenzialmente spendere due volte una qualsiasi delle transazioni predefinite utilizzate per impegnarsi in blocchi sidechain e invalidare l'intero set da quel momento in poi.

Questo viene risolto inserendo effettivamente la firma nello script di blocco dell'UTXO stesso. Questo blocca la firma sull'input e sull'output, garantendo la ricreazione del marker UTXO nella transazione successiva che lo utilizza. Poiché quella firma verrà automaticamente passata e controllata quando l'UTXO viene esaurito, non è possibile semplicemente sostituirla con un'altra e spenderla in una destinazione diversa.

Questo lascia un ultimo problema in sospeso. Sarebbe possibile, in teoria, inviare più transazioni tutte di seguito in un unico blocco Bitcoin, in modo che un vasto numero di blocchi sidechain siano confermati dai miner tutti in un unico blocco della catena principale. Questo potrebbe essere abusato per attaccare il denial-of-service alla rete sidechain.

Per risolvere questo problema, è possibile inserire un blocco temporale relativo CHECKSEQUENCEVERIFY (CSV) nello script UTXO del marker per garantire che una sola transazione che utilizza il marker UTXO possa essere confermata all'interno di un singolo blocco di catena principale dato.

Complessivamente si presenta così: 

Fonte

Vale anche la pena notare che due varianti di questo design possono essere implementate con CHECKTEMPLATEVERIFY (CTV) o senza alcuna modifica. Queste due varianti di design hanno semplicemente dei compromessi non ottimali.

La variante CTV utilizzerebbe tale funzionalità per impegnarsi nella catena di transazioni utilizzando CTV anziché APO con l'hacking che include la firma all'interno dello script di blocco UTXO. CTV si impegna a tutti gli output di una transazione spendendo il CTV UTXO, ma non si impegna a nessun input oltre a se stesso.

Ciò significa che puoi aggiungere input, ma non output, a una transazione CTV. Quindi puoi portare la tua quota proprio come nel design APO, ma non puoi aggiungere un impegno all'intestazione del blocco sidechain.

Quindi, quello che dobbiamo fare qui è creare una transazione completamente al di fuori della catena delle transazioni CTV per l'impegno della sidechain di creare un UTXO che sia appena sufficiente per pagare la commissione per la transazione CTV (perché non puoi creare un nuovo output di modifica in quella transazione, il 100% dell'input che aggiungi va alle commissioni) e all'interno della transazione che prepara la commissione UTXO è dove ci impegniamo per un'intestazione di blocco sidechain. Quindi, primo passo: una transazione che crea un output a pagamento e un impegno per un'intestazione di blocco sidechain. Secondo passaggio: prendiamo l'output della commissione e lo aggiungiamo come input alla transazione CTV, che una volta confermata, "estrae" il nostro blocco sidechain specifico. Questa variante si presenta così:

Fonte

La variante successiva utilizza semplicemente transazioni prefirmate. Potrebbe essere implementato oggi, ma a causa dei limiti di ciò che lo script può fare, richiede che tutte le commissioni per le transazioni vengano pagate in anticipo da chiunque crei la catena spaziale.

La catena di transazioni inizia con un singolo UTXO e in una catena crea due output. Il primo output è il marker UTXO, che segnala che la catena di transazioni è correlata a una specifica catena spaziale, il secondo è un UTXO di piccolo valore che è spendibile apertamente da chiunque consenta di allegare un altro input/output ad esso. Questa seconda transazione è dove chiunque può impegnarsi apertamente per essere il primo a spendere quel secondo output dalla catena di transazioni della catena spaziale e usarlo per impegnarsi nell'intestazione del blocco della catena laterale.

Nella variante CTV, il blocco sidechain doveva essere impegnato in una transazione secondaria perché CTV non consente di aggiungere nuovi output in una transazione spendendo un input bloccato da CTV. Questa variante richiede l'utilizzo di una transazione secondaria perché se si aggiungono nuovi input o output alla catena prefirmata, si altera il TXID della transazione e si invalidano tutte le transazioni prefirmate successive. Questa variante si presenta così: 

Fonte

L'unico aspetto negativo di quest'ultima variante è che se chi ha pre-firmato tutte le transazioni da utilizzare per impegni di blocco sidechain non elimina le chiavi private utilizzate per farlo, può effettivamente fermare la catena spendendo il doppio dell'attuale marker UTXO in qualsiasi volta.

E il gioco è fatto. Questa è la proposta più recente per un design sidechain su Bitcoin e può essere implementata in tre modi diversi, con l'ovvio avvertimento che il percorso di implementazione che può essere fatto ora ha il problema di richiedere a qualcuno di eliminare una chiave privata.

Questo articolo è semplicemente il primo di una serie relativa alle principali proposte di design sidechain che sono state pubblicate per Bitcoin dal design originale del 2014. Tieni d'occhio il resto.

Questo è un guest post di Shinobi. Le opinioni espresse sono interamente proprie e non riflettono necessariamente quelle di BTC Inc o Bitcoin Magazine.

Timestamp:

Di più da Bitcoin Magazine