Spacechains: Cum funcționează această nouă propunere de Bitcoin Sidechain

Nodul sursă: 1544330

Spacechains este un sidechain propus de Bitcoin care oferă un mecanism de fixare unidirecțională utilizând designul minei de îmbinare oarbă.

Ideea de sidechains ca mecanism de scalare și extindere a caracteristicilor pentru Bitcoin este un concept foarte vechi. Un fel de idee de bază de „strămoș” a lanțurilor laterale, fuzionează lanțurile minate, chiar se întoarce la înainte ca Satoshi să dispară.

Acea propunere a fost pur și simplu ideea a două lanțuri complet separate și neînrudite, care sunt exploatate de același grup de mineri, fără posibilitatea de a muta nimic între lanțuri. The propunere originală de sidechain a fost făcută în 2014 de mulți dintre cei care au fondat Blockstream la o săptămână după publicarea lucrării. Ideea de bază a fost să poți face ca monedele să se miște înainte și înapoi între blockchain-ul principal Bitcoin și alte sidechain-uri, cu dovezi simple de verificare a plății (SPV) fiind folosite pentru a dovedi că lucrurile sunt valabile atunci când trimiți monede de la un lanț la altul. Acest lucru nu s-a realizat niciodată din cauza complexității implementării în jurul reorganizărilor în lanț, a potențialului de furt și a riscurilor de centralizare a mineritului (toate acestea pot fi citite în secțiunea a patra a Hârtie albă Bitcoin).

Mecanismele peg pentru lanțuri laterale pot fi de două tipuri, într-un singur sens și în două sensuri. Semnificațiile ar trebui să fie evidente - într-un cuvertură cu două direcții, monedele se pot deplasa înainte și înapoi între lanțul părinte și lanțul lateral, iar într-un cuvertură unidirecțională, ele se pot muta doar de la lanțul părinte la lanțul lateral și nu se pot deplasa niciodată înapoi. În prezent, singura formă de cheie sidechain bidirecțională implementată pe Bitcoin este prin consens federal, ceea ce înseamnă că peg-ul este garantat de un set de încredere de „custozi” care mențin controlul fondurilor atașate în sidechain într-un portofel multisig până când acestea sunt retrase.

Oamenii, totuși, au continuat să lucreze la alte modele pentru șuruburi laterale care nu sunt federate. Aici voi trece prin propunerea Spacechain a lui Ruben Somsen ca un exemplu. Este un mecanism unidirecțional care folosește un design de mine de îmbinare oarbă, similar cu Paul Stztorclui. Aceasta înseamnă că monedele pot intra doar în sidechain-ul și nu pot părăsi niciodată și că minerii nu trebuie să ruleze software nou pentru a obține compensații pentru extragerea sidechain-ului (cu toate acestea, după cum voi discuta mai târziu, aceștia pot beneficia mai mult făcând acest lucru).

Propunerea lanțului spațial

Merge mining cere ca mineri să ruleze nodurile atât ale lanțului Bitcoin, cât și ale oricărui alt lanț pe care îl extrag, pentru a compila blocurile pentru ambele lanțuri și pentru a se angaja în antetul blocului Bitcoin pe care îl extrag. Exploatarea cu fuziune oarbă profită de faptul că, în realitate, minerii Bitcoin chiar trebuie să aibă doar antetul blocului celuilalt lanț pentru a se angaja în blocul lor Bitcoin, altcineva își poate lua de fapt osteneala să pună cap la cap blocul pentru celălalt lanț.

Mecanismul propus de Somsen pentru aceasta poate fi utilizat ORICE PREV (APO) pentru a permite concurența deschisă pentru ca oricine să poată concura pentru a construi următorul bloc sidechain, garantând în același timp că un singur bloc poate fi angajat pe blocul principal al lanțului Bitcoin. Un alt avantaj al propunerii lui Ruben este că nu necesită o furcă moale specifică pentru a permite posibilitatea de a desfășura lanțuri spațiale. Eltoo/ANYPREVOUT este propus pentru beneficiile rețelei Lightning, permițând lanțuri de stat flexibile, precum și fabrici de canale. Lanțurile spațiale sunt pur și simplu o altă posibilitate a numeroaselor lucruri pentru care activarea ANYPREVOUT ar deschide calea.

Ideea generală a propunerii sale de minerit de fuziune oarbă este că, utilizând APO, puteți predefini un set lung de tranzacții care preia același UTXO inițial introdus în ele și vă angajați să îl recreați întotdeauna. Așadar, imaginați-vă un singur satoshi UTXO, cu fiecare tranzacție pre-creată garantând că același UTXO este recreat ca ieșire atunci când este confirmat. Gândiți-vă la asta ca la un fel de marker, acest UTXO special este identificatorul care permite oricui se uită la blockchain-ul principal Bitcoin să știe: „Aici găsesc un angajament față de blocurile sidechain-ului X.” Acest lucru lasă totuși deschisă o problemă: taxele pentru mineri. Dacă acel UTXO trebuie să fie recreat cu aceeași sumă, nu există fonduri cu care să plătească taxe.

Acest lucru poate fi rezolvat prin utilizarea SIGHASH_SINGLE (semnătura dintr-o intrare semnează doar acea intrare unică și ieșirea corespunzătoare) și SIGHASH_ANYONECANPAY (oamenii pot adăuga liber intrări și ieșiri suplimentare fără a invalida semnătura, atâta timp cât intrarea/ieșirea folosind SIGHASH_SINGLE este lăsată așa cum este, pentru a nu invalida acea semnătură). Apoi oricine poate adăuga o intrare și poate modifica ieșirea pentru a plăti taxele minerului pentru tranzacție.

Acesta este, de asemenea, mecanismul folosit pentru a se angaja în antetul blocului blocului sidechain. În același mod în care Taproot se angajează în arborele diferitelor condiții de cheltuieli prin modificarea cheii publice normale cu rădăcina Merkle a arborelui, oricine poate modifica cheia publică normală cu hash-ul antetului blocului blocului sidechain. Nodurile sidechain pot apoi să dezvăluie și să transmită acel antet de bloc cu un pointer către tranzacția din lanțul principal pentru a dovedi că a fost de fapt extras. De acolo, nodurile sidechain ar face toată validarea normală pentru a se asigura că blocul sidechain urmează regulile de consens adecvate și ar transmite blocurile reale în rețeaua sidechain la fel ca în lanțul principal.

Dacă una dintre tranzacțiile folosite pentru a se comita în blocurile sidechain din lanțul principal a fost folosită pentru a se comita într-un bloc invalid, sau chiar date complet gunoi, atunci când nodurile sidechain văd tranzacția de angajament folosită pe lanț, se pot întâmpla două lucruri: unul, un bloc invalid va fi propagat în rețeaua sidechain, iar atunci când nu reușește să treacă verificările de validare, va fi orfan; sau două, datele nu sunt niciodată dezvăluite, caz în care următorul bloc sidechain se va construi pe deasupra și se va angaja la ultimul bloc dezvăluit efectiv, iar angajamentul nedezvăluit va fi ignorat. Această a doua posibilitate urmează același tip de logică cu cel mai lung lanț ca și lanțul principal, așa că, chiar dacă ceva a fost dezvăluit mai târziu, va fi în continuare orfan din cauza blocurilor viitoare care nu s-au construit pe el.

Dar mai rămâne problema cheltuielilor duble. Oricine are cheia privată folosită pentru a genera markerul UTXO ar putea cheltui dublu oricare dintre tranzacțiile predefinite utilizate pentru a se angaja în blocurile sidechain și pentru a invalida întregul set din acel moment înainte.

Acest lucru este rezolvat prin introducerea efectivă a semnăturii în scriptul de blocare al UTXO însuși. Aceasta blochează semnătura la intrare și la ieșire, garantând recrearea markerului UTXO în următoarea tranzacție care îl folosește. Deoarece semnătura respectivă va fi transmisă și verificată automat când UTXO este cheltuit, nu este posibil să o înlocuiți pur și simplu cu alta și să o cheltuiți într-o altă destinație.

Aceasta lasă o ultimă problemă restante. Ar fi posibil, teoretic, să depunem mai multe tranzacții, toate la rând într-un singur bloc Bitcoin, astfel încât un număr mare de blocuri sidechain să fie confirmate de mineri, toate într-un singur bloc principal de lanț. Acest lucru ar putea fi abuzat pentru a ataca prin denial-of-service rețeaua sidechain.

Pentru a rezolva această problemă, o blocare de timp relativă CHECKSEQUENCEVERIFY (CSV) poate fi inserată în scriptul marker UTXO pentru a garanta că o singură tranzacție folosind markerul UTXO poate fi confirmată în interiorul unui singur bloc principal dat.

În total, arată așa: 

Sursă

De asemenea, este de remarcat faptul că două variante ale acestui design pot fi implementate cu CHECKTEMPLATEVERIFY (CTV) sau fără nicio modificare. Aceste două variante de design au pur și simplu compromisuri suboptime.

Varianta CTV ar folosi această funcționalitate pentru a se angaja în lanțul de tranzacții folosind CTV în loc de APO, cu hack-ul incluzând semnătura în interiorul scriptului de blocare UTXO. CTV se angajează la toate ieșirile unei tranzacții cheltuind CTV UTXO, dar nu se angajează la nicio intrare în afară de ea însăși.

Aceasta înseamnă că puteți adăuga intrări, dar nu și ieșiri, la o tranzacție CTV. Deci, vă puteți aduce propria taxă la fel ca în designul APO, dar nu puteți adăuga un angajament la antetul blocului sidechain.

Deci, ceea ce trebuie să facem aici este să creăm o tranzacție complet în afara lanțului de tranzacții CTV pentru angajamentul sidechain de a crea un UTXO care este suficient pentru a plăti taxa pentru tranzacția CTV (pentru că nu puteți crea o nouă ieșire de modificare în acea tranzacție, 100% din intrarea pe care o adăugați este destinată taxelor), iar în interiorul tranzacției pregătirea taxei UTXO este locul în care ne angajăm pentru un antet bloc sidechain. Deci, primul pas: o tranzacție care creează o ieșire de plată a taxei și un angajament față de un antet de bloc sidechain. Al doilea pas: luăm rezultatul taxei și o adăugăm ca intrare la tranzacția CTV, care, atunci când este confirmată, „exploatează” blocul nostru specific sidechain. Această variantă arată astfel:

Sursă

Următoarea variantă folosește pur și simplu tranzacții presemnate. Ar putea fi implementat astăzi, dar din cauza limitărilor a ceea ce poate face scriptul, necesită ca toate taxele pentru tranzacții să fie plătite în avans de către oricine creează lanțul spațial.

Lanțul de tranzacții începe cu un singur UTXO, iar într-un lanț creează două ieșiri. Prima ieșire este markerul UTXO, care semnalează că lanțul de tranzacții este legat de un anumit lanț spațial, a doua este un UTXO de valoare mică, care poate fi cheltuit în mod deschis de oricine, permițând să-i atașeze o altă intrare/ieșire. Această a doua tranzacție este în cazul în care oricine se poate angaja în mod deschis să fie primul care cheltuie a doua ieșire din lanțul de tranzacții din lanțul spațial și să o folosească pentru a se angaja în antetul blocului sidechain.

În varianta CTV, blocul sidechain a trebuit să fie angajat într-o tranzacție secundară, deoarece CTV nu permite adăugarea de noi ieșiri într-o tranzacție cheltuind o intrare blocată de CTV. Această variantă necesită utilizarea unei tranzacții secundare, deoarece dacă adăugați noi intrări sau ieșiri în lanțul presemnat, veți modifica TXID-ul tranzacției și veți invalida toate tranzacțiile presemnate care vin după aceasta. Această variantă arată astfel: 

Sursă

Singurul dezavantaj al acestei ultime variante este că, dacă oricine a presemnat toate tranzacțiile pentru a le utiliza pentru angajamentele blocului sidechain nu șterge cheile private folosite pentru a face acest lucru, poate opri efectiv lanțul cheltuind dublu markerul actual UTXO la orice. timp.

Și iată-l. Aceasta este cea mai recentă propunere pentru un design sidechain pe Bitcoin și poate fi implementat în trei moduri diferite, cu avertismentul evident că calea de implementare care poate fi făcută acum are problema de a solicita cuiva să șterge o cheie privată.

Acest articol este pur și simplu primul dintr-o serie referitoare la propunerile majore de design sidechain care au fost publicate pentru Bitcoin începând cu designul original din 2014. Fii cu ochii pe restul.

Aceasta este o postare pentru oaspeți de Shinobi. Opiniile exprimate sunt în întregime proprii și nu reflectă neapărat cele ale BTC Inc sau Bitcoin Magazine.

Timestamp-ul:

Mai mult de la Revista Bitcoin