Loading Posts...

SegWit2x și controversele puternice despre protecția la replicare

În noiembrie, membrii agreementului de la New York vor lansa bifurcarea hard SegWit2x, care va mări greutatea blocurilor la 8 MB. Conform Bitcoinist.com, întrucât nu este toată lumea de acord cu SegWit2x, există posibilitatea să asistăm la o scindare a rețelei Bitcoin. Însă, de data aceasta va fi mult mai grav decât în cazul Bitcoin – Bitcoin Cash, deoarece cele două Blockchain-uri nu vor mai fi compatibile.

Bifurcarea stârnește și alte controverse. Cum ar fi, deciziile de design luate de echipa de dezvoltare a BTC1 (softul client asociat cu agreementul de la New York). Conducătorul acestei echipe, Jeff Garzik a refuzat până acum să implementeze sistemul de protecție la replicare (replay protection). Spre deosebire de acesta, developerii Bitcoin Cash au implementat respectiva tehnologie. Din acest motiv, cel puțin unul dintre participanții la întrunirea de la New York s-a retras. Este vorba de compania Wayniloans.

Gazeta Bitcoin vă prezintă ce este de fapt acest replay protection, de ce BTC1 ar trebui sa îl implementeze… și, totuși, de ce nu o face.

Ce reprezintă protecția la replicare și atacurile de replicare

Bitcoin s-ar putea confrunta cu încă o rupere în noiembrie. Nodurile și minerii noului lanț vor constitui un Blockchain nou și o criptovalută nouă.

În caz că bifurcarea chiar va avea loc, cele două Blockchain-uri vor fi identice. Toate tranzacțiile anterioare și balanțele financiare vor fi copiate din Blockchain-ul lanțului original și adăugate Blockchain-ului SegWit2x. Toți utilizatorii care vor deține la momentul respectiv fonduri în BTC, vor avea un disponibil identic în noua monedă (numită în continuare B2X).

Fără protecția la replicare, tranzacțiile noi vor putea fi considerate valide pe ambele lanțuri. Totodată aceste tranzacții pot fi copiate (sau replicate) dintr-un lanț în celălalt. Aceste mișcări se numesc “atacuri replay” (replay attacks).

De exemplu, să presupunem că Magda deține BTC la momentul bifurcării, ceea ce înseamnă că ea va deține și B2X după bifurcare. Ulterior bifurcării, ea dorește să îi trimită BTC lui Alin. Pentru aceasta, Magda va trebui să efectueze o tranzacție din adresa ei care conține Bitcoin original, cu destinația către o adresă a lui Alin care să aparțină tot de lanțul original. Apoi, tranzacția este transmisă în rețeaua Bitcoin original pentru ca un miner de Bitcoin (original) să o preia și să o includă într-un bloc de Bitcoin original. Plata va fi confirmată; totul OK până aici.

Însă această tranzacție va fi validă și pe Blockchain-ul SegWit2x. Oricine, inclusiv Alin, poate prelua tranzacția cu Bitcoin original a Magdei și o poate transmite în rețeaua SegWit2x, unde un miner o va introduce într-un bloc SegWit2x. Totul se poate întâmpla și dintr-o greșeală, nu doar din rea intenție. Dacă și această plată este confirmată înseamnă că Magda i-a trimis lui Alin nu doar BTC, ci și B2X.

Desigur, este valabil și invers. Dacă Magda îi trimite B2X lui Alin, este posibil să îi trimită și BTC. Lipsa protecției la replicare este o problemă pentru utilizatorii ambelor lanțuri. Nimeni nu vrea să trimită bani din greșeală. Nici măcar dacă sunt primiți gratis 😊

Din punct de vedere tehnic există mai multe soluții. De exemplu, se poate apela la sigiliu pe timp. Însă ar fi dificil de implementat și foarte complicat de folosit pentru utilizatorii obișnuiți. Aceștia probabil nici nu vor ști ce se întâmplă.

O soluție mai la îndemână este aceea de a se adăuga un protocol pe cel puțin unul din cele două lanțuri, protocol cu ajutorul căruia noile tranzacții vor fi considerate valide pe lanțul respectiv și invalide pe celălalt. Această variantă se numește protecție la replicare.

De ce ar trebui BTC1 să implementeze protecția la replicare

Cum spuneam mai sus, în cazul unei ruperi, cel puțin unul dintre lanțuri ar trebui să introducă protecția la replicare. Dar mulți sunt de părere că există doar o opțiune, inclusiv developerii Bitcoin Core. Și anume, partea care se rupe ar trebui să fie responsabilă.

Există mai multe argumente în acest sens.

În primul rând, ar fi mult mai ușor ca BTC1 să implementeze această protecție. Fiind un client nou, BTC1 trebuie oricum să implementeze protocoale noi, și nici nu este încă utilizat masiv.

Pe lângă motivul de mai sus, dacă Bitcoin Core va implementa totuși protecția, s-ar putea să nu fie suficient, dacă nu va face același lucru și BTC1. Deși este dominant și considerat drept model de referință, Bitcoin Core nu este singura implementare în rețea. Mai există și alți clienți care ar trebui să implementeze de asemenea protecția la replicare. De exemplu, Bitcoin Knots, Bcoin, Libbitcoin sau alte alternative.

Cel mai important aspect este că, în prezent, niciunul dintre nodurile Bitcoin nu are protecție la replicare. Multe nici nu ar fi putut avea, din moment ce o parte sunt în funcțiune dinainte de apariția agreementului de la New York. Deci, chiar dacă Bitcoin Core și ceilalți clienți ar implementa în versiunile următoare protecția la replicare, tot nu ar fi suficient. În plus, toți utilizatorii ar trebui să își updateze softurile în decurs de două luni.

Dacă nu își vor updata softurile toate nodurile, Bitcoin se poate diviza în trei părți: lanțul Bitcoin original, SegWit2x și lanțul cu protecție la replicare.

Și ar mai fi un argument pentru ca BTC1 să fie responsabil de aplicarea protecției la replicare. Din punct de vedere moral, cine adoptă un nou protocol ar trebui să se asigure că desprinderea de lanțul vechi se va realiza în condiții de siguranță. Ar fi anormal ca această responsabilitate să cadă pe umerii celor care vor să mențină protocolul existent. Aceștia pur și simplu ar trebui să continue să utilizeze protocolul exact așa cum este.

Mulți developeri au afirmat că BTC1 ar trebui să implementeze protecția la replicare. Printre aceștia se numără chiar și Sergio Lerner – fondatorul proiectului RSK – acesta fiind totodată și autorul primului draft SegWit2x. Mai mult, dezvoltatorii sunt de părere că orice bifurcare hard, chiar și una lipsită de polemici, ar trebui să implementeze protecția la replicare.

Însă, poziția dezvoltatorilor BTC1 este diferită. Ei au în vedere doar o protecție opțională la replicare.

Care este problema cu protecția opțională la replicare?

Implementarea protecției opționale a fost propusă la un moment dat și de ex-developerul Bitcoin Gavin Andresen.

Pe scurt, această implementare opțională ar face ca unele tranzacții pe lanțul original (numite “OP_RETURN”) să fie invalide pe lanțul SegWit2x. Apoi, aceste tranzacții vor fi confirmate doar pe Blockchain-ul original, nu și pe lanțul SegWit2x. Mișcarea efectiv ar împărți criptomonedele în adrese diferite pe ambele lanțuri.

O protecție opțională la replicare este mai bine decât nimic, dar nu reprezintă o soluție definitivă.

Una dintre probleme ar fi că Blockchain-ul original va trebui să includă toate tranzacțiile OP_RETURN. Din această cauză vor exista mai multe tranzacții în rețea, ceea ce presupune o cantitate mai mare de date în fiecare tranzacție. Toate datele trebuie să fie transmise, verificate și stocate (cel puțin temporar) de toate nodurile. Ar fi un adevărat obstacol în rețeaua originală.

Mai grav este că această opțiune nu va fi ușor de utilizat. Ar putea fi ceva accesibil doar pentru utilizatorii profesioniști (experții în tehnologie, exchange-urile, furnizorii de portofele sau alți furnizorii de servicii). Dar, în fond, acești utilizatori ar putea să își manipuleze monedele și fără protecția la replicare. Pentru oamenii obișnuiți ar fi însă foarte complicat. Chiar și în cazul în care ar înțelege ce se întâmplă.

Cu alte cuvinte, protecția opțională îi ajută fix pe cei care nu au nevoie de ajutor și îi lasă baltă pe cei care chiar au nevoie de sprijin.

Agreementul de la New York exclude protecția la replicare?

Deși nu se știe cu exactitate ce s-a discutat în spatele ușilor închise, agreementul de la New York pare unul minimalist. Ce s-a publicat la data 23 mai 2017 conținea doar două puncte:

  • activarea update-ului Segregated Witness la atingerea pragului de 80%, prin semnalizarea bitului 4
  • activarea in decurs de șase luni a unei bifurcări hard care va mări blocurile la 2 MB.

Dacă primul punct s-a îndeplinit prin intermediul BIP91, ce a rămas de efectuat este bifurcarea care ar trebui completață înainte de 23 noiembrie. Nu a fost luată în calcul bifurcarea din vară, în urma căreia a apărut BCH, chiar dacă a fost susținută de unii membri participanți la întrunirea de la New York.

Însă multe detalii nu au fost deloc tratate. De exemplu, agreementul nu stipulează nici măcar dacă participanții trebuie să ruleze clientul BTC1. De asemenea, nu s-a specificat nicăieri că BTC1 este exonerat de implementarea protecției la replicare.

De ce BTC1 nu va implementa protecția la replicare

Există mai multe motive, atât unele declarate oficial, cât și unele speculate, pentru care BTC1 nu ar fi dispus să introducă protecția la replicare.

Un prim motiv ar fi că protecția la replicare va solicita deținătorilor de portofele SPV (simplified payment verification), dar și altora (portofelele care nu copiază întreg Blockchain-ul) să își upgradeze softurile pentru a putea primi și transmite tranzacții SegWit2x. Ca să îl cităm pe developerul Jeff Garzik, protecția la replicare “va ruina” portofelele SPV; acestea nu vor fi compatibile cu SegWit2x fără upgrade.

Exprimarea lui Garzik a dat naştere la noi dispute. Dacă SegWit2x ar implementa protecţia (iar portofelele SPV nu ar fi upgradate), portofelele ar putea să trimită şi să primească în continuare tranzacţii pe (şi respectiv de pe) lanţul original. Însă nu s-ar cheltui accidental fonduri B2X.

În situaţia în care lanţul SegWit2x nu va implementa totuşi protecţia la replicare (coroborat cu ne-upgradarea portofelelor SPV), utilizatorii nu vor putea şti cu siguranţă dacă portofelele lor realizează tranzacţii cu BTC, B2X ori cu ambele. De asemenea, nu vor putea şti nici ce reprezintă balanţele afişate – dacă sumele sunt exprimate în BTC, în B2X sau în ambele. În plus, dacă puterea de hash s-ar muta în timp de pe un lanţ pe celălalt, portofelele ar putea să schimbe fondurile afişate. Adică în loc de BTC să afişeze de fapt B2X şi invers. Şi totul fără ştirea utilizatorilor!

Iată de ce portofelele SPV ar putea fi “ruinate” de lipsa de implementare a protecţiei la replicare pe lanţul SegWit2x.

Singurul scenariu plauzibil în care portofelele SPV nu ar avea de suferit este acela în care nu ar mai exista lanţul original. Într-adevăr, agreementul de la New York avea ca scop un upgrade al Bitcoinului şi nu ruperea acestuia în două, cum s-a întâmplat în cazul Bitcoin Cash. În acest sens, unii dintre participanţii la întrunire au afirmat că lanţul original nu va putea supravieţui. Declaraţiile aveau ca bază susţinerea din partea minerilor şi intenţiile exprimate de unele companii.

Astfel, dacă s-ar implementa protecţia la replicare, practic s-ar admite că SegWit2x va crea două reţele distincte, iar noul lanţ nu ar reprezenta un upgrade pentru Bitcoin, ci o reţea nouă.

Însă o astfel de presupunere – că lanţul original nu va supravieţui – este extrem de hazardată. În mod cert, Bitcoin Core nu va susţine bifurcarea hard. De asemenea, multe companii nu au declarat că susţin bifurcarea, inclusiv pool-urile de minat din Top 10. Similar, nu se ştie nici dacă utilizatorii vor fi pro-SegWit2x. Aşadar, implementarea protecţiei ar indica faptul că nici developerii BTC1 nu au încredere că va rămâne un singur lanţ în funcţiune.

În final, poate cel mai important de notat, dacă minerii, developerii, companiile şi utilizatorii vor considera lanţul SegWit2x ca un upgrade al reţelei Bitcoin, ei îl vor adopta şi cu şi fără protecţie la replicare.

Din acest motiv se presupune că BTC1 respinge protecţia la replicare cu atâta îndârjire. Dacă lanţul original nu va mai fi utilizat deloc, SegWit2x va fi considerat drept adevăratul “Bitcoin”.

Cum vi s-a părut acest articol? Gazeta Bitcoin vă invită să ne scrieţi un comentariu pe iBitcoin.ro!

2
WowWow
1
SadSad
1
HahaHaha
0
HeartHeart
0
AngryAngry
Voted Thanks!

Gazeta Bitcoin

Redacția de știri.

Show 4 comments

November 8, 2017
0

Să presupunem că după 16 noiembrie vor fi 2 criptomonede, să le zicem Bicoin clasic și bitcoin segwit. Eu practic voi deține și bitcoin clasic și bitcoin segwit după momentul splituirii. Dacă voi decide să îmi fac o nouă adresă și voi transfera toată valoarea bitcoin clasic ce o dețin în noua adresă din rețeaua bitcoin clasic, atunci teoretic vorbind, mai pot fi afectat de această replicare? Noua adresă bitcoin clasic pe care am creat-o și am transferat valoarea nu mai poate conține și bitcoin segwit pentru că momentul splituirii a trecut. De asemenea pe vechea adresă a rămas doar bitcoin segwit.

November 11, 2017
0

Răspunsul e tardiv. Dar pentru viitor și pentru un eventual update fără protecție la replicare, răspunsul este că, teoretic, te poți apăra nefăcând tranzacții și facând cold storage. Sau, te duci în altă monedă cum ar fi USD, USDT, ETH, ce consideri tu că ar menține o valoare apropiată a portofoliului tău pentru momentul când s-ar fi disipat incertitudinile. Problema ar fi apărut la tranzacțiile ulterioare update-ului și, oricum, ar fi depins și de portofelul unde stochezi monedele, de securitatea acestuia, de suportul pentru bitcoin segwit etc. S-ar fi creat un haos din care doar unii ar fi avut de câștigat. Dezvoltatorii SegWit2x n-au vrut să implementeze protecția la replicare, mă întreb oare de ce? Pe lângă alte interese pe care le-au urmarit, creând un mediu ambiguu care lăsa mereu loc interpretărilor.

November 8, 2017
0

Segwit2x nu va mai avea loc. Interesante vremuri, mai ales dacă faci predicții corecte.

November 11, 2017
0

Corect. În orice caz, Bitcoin nu va fi lăsat în pace. Se vor găsi alții care să aibă interese meschine, și să-l atace cu prima ocazie. SegWit2x ar fi fost nociv pentru întreaga comunitate crypto, în opinia mea.

Leave a Reply

Loading Posts...