Blockchain

Hard Forks, Soft Forks, Implicite și Coerciție

Unul dintre argumentele importante în spațiul blockchain este acela dacă hard forks sau soft furk sunt mecanismul preferat de actualizare a protocolului. Diferența de bază dintre cele două este că furcile moi modifică regulile unui protocol prin strict reducătoare setul de tranzacții care este valid, astfel încât nodurile care urmează vechile reguli vor intra în continuare pe noul lanț (cu condiția ca majoritatea minerii/validatori să implementeze fork-ul), în timp ce hard fork-urile permit tranzacțiilor și blocurilor anterior nevalide să devină valide, astfel încât clienții trebuie să își actualizeze clienții pentru a rămâne pe lanțul hard-forked. Există, de asemenea, două subtipuri de furci dure: în expansiune strictă hard forks, care extind strict setul de tranzacții care este valabil și, în mod eficient, vechile reguli sunt un soft fork cu privire la noile reguli și bilateral hard forks, unde cele două seturi de reguli sunt incompatibile în ambele sensuri.

Iată o diagramă Venn pentru a ilustra tipurile de furci:

Beneficiile citate în mod obișnuit pentru cele două sunt următoarele.
  • Hard fork-urile permit dezvoltatorilor mult mai multă flexibilitate în efectuarea upgrade-ului de protocol, deoarece nu trebuie să aibă grijă să se asigure că noile reguli „se potrivesc” cu vechile reguli
  • Furcile moi sunt mai convenabile pentru utilizatori, deoarece utilizatorii nu trebuie să facă upgrade pentru a rămâne pe lanț
  • Furcile moi sunt mai puțin probabil să ducă la despicarea lanțului
  • Furcile soft necesită într-adevăr doar consimțământul minerilor/validatorilor (ca și dacă utilizatorii încă folosesc vechile reguli, dacă nodurile care fac lanțul folosesc noile reguli, atunci doar lucrurile valabile conform noilor reguli vor intra în lanț în orice caz); furcile dure necesită opt-in consimțământul utilizatorilor

În afară de aceasta, o critică majoră dată adesea pentru furcile dure este că furcile dure sunt „coercitive”. Tipul de constrângere implicat aici nu este forța fizică; mai degrabă, este constrângere prin efect de rețea. Adică, dacă rețeaua schimbă regulile de la A la B, atunci chiar dacă personal îți place A, dacă celorlalți utilizatori îi plac lui B și trec la B, atunci trebuie să treci la B, în ciuda dezaprobării tale personale față de schimbare, pentru a fi activ. aceeași rețea ca toți ceilalți.

Susținătorii hard forks sunt adesea batjocoriți ca încercând să efectueze o „preluare ostilă” a unei rețele și „forțând” utilizatorii să le însoțească. În plus, riscul de despicare a lanțului este adesea folosit pentru a factura furcile dure drept „nesigure”.


Părerea mea personală este că aceste critici sunt greșite și, în plus, în multe cazuri complet înapoiate. Acest punct de vedere nu este specific pentru Ethereum, sau Bitcoin, sau orice alt blockchain; rezultă din proprietățile generale ale acestor sisteme și este aplicabilă oricăruia dintre ele. În plus, argumentele de mai jos se aplică doar modificărilor controversate, în care o mare parte a cel puțin unui grup (mineri/validatori și utilizatori) le dezaproba; dacă o modificare este necontencioasă, atunci se poate face în general în siguranță, indiferent de formatul furcii.

În primul rând, să discutăm problema constrângerii. Furcile tari și furcile moi modifică protocolul în moduri care ar putea să nu le placă unor utilizatori; Orice modificarea protocolului va face acest lucru dacă are suport mai puțin decât exact 100%. În plus, este aproape inevitabil ca cel puțin unele dintre disidenți, în orice scenariu, prețuiesc efectul de rețea al rămânerii cu grupul mai mare mai mult decât prețuiesc propriile preferințe cu privire la regulile protocolului. Prin urmare, ambele tipuri de furcă sunt coercitive, în sensul de efect de rețea al cuvântului.

Cu toate acestea, există o diferență esențială între furcile dure și furcile moi: furcile dure sunt opt-in, în timp ce furcile moi nu permit utilizatorilor să nu „opteze” deloc. Pentru ca un utilizator să se alăture unui lanț hard forked, trebuie să instaleze personal pachetul software care implementează regulile fork, iar setul de utilizatori care nu sunt de acord cu o modificare a regulii chiar mai mult decât apreciază efectele de rețea poate, teoretic, să rămână pur și simplu pe lanț vechi – și, practic vorbind, un astfel de eveniment sa întâmplat deja.

Acest lucru este valabil atât în ​​cazul furcilor rigide cu expansiune strictă, cât și în cazul furcilor dure bilaterale. În cazul furcilor moi, însă, daca furca reuseste lantul nefurcat nu exista. Prin urmare, furcile moi în mod clar favorizează din punct de vedere instituțional constrângerea în detrimentul secesiunii, în timp ce furcile dure au tendința opusă. Părerile mele morale mă determină să prefer secesiunea în detrimentul constrângerii, deși altele pot fi diferite (argumentul cel mai frecvent invocat este că efectele de rețea sunt cu adevărat importante și este esențial ca „o monedă le conduce pe toate„, deși există și versiuni mai moderate ale acestuia).

Dacă ar fi să ghicesc de ce, în ciuda acestor argumente, soft furk-urile sunt adesea catalogate ca fiind „mai puțin coercitive” decât hard furk-urile, aș spune că este pentru că se simte ca și cum un hard furk „forțează” utilizatorul să instaleze o actualizare de software, în timp ce cu o furcă moale, utilizatorii nu „trebuie” să facă absolut nimic. Cu toate acestea, această intuiție este greșită: ceea ce contează nu este dacă utilizatorii individuali trebuie să efectueze sau nu simplul pas birocratic de a face clic pe un buton de „descărcare”, ci mai degrabă dacă utilizatorul este sau nu. constrâns să accepte o modificare a regulilor protocolului că ei ar prefera să nu accepte. Și prin această măsurătoare, așa cum am menționat mai sus, ambele tipuri de furci sunt în cele din urmă coercitive și furcile dure sunt oarecum mai bune în păstrarea libertății utilizatorului.

Acum, să ne uităm la furci extrem de controversate, în special la furcături în care preferințele miner/validator și preferințele utilizatorului sunt în conflict. Există trei cazuri aici: (i) furci rigide bilaterale, (ii) furci rigide cu extindere strictă și (iii) așa-numitele „furci moale activate de utilizator” (UASF). O a patra categorie este cea în care minerii activează o furcă moale fără acordul utilizatorului; vom ajunge la asta mai târziu.

În primul rând, furcile dure bilaterale. În cel mai bun caz, situația este simplă. Cele două monede tranzacționează pe piață, iar comercianții decid valoarea relativă a celor două. Din cazul ETC/ETH, avem dovezi copleșitoare că minerii sunt foarte probabil să-și atribuie pur și simplu hashratul monedelor pe baza raportului dintre prețuri, pentru a-și maximiza profitul, indiferent de propriile opinii ideologice.

Chiar dacă unii mineri mărturisesc preferințe ideologice față de o parte sau cealaltă, este foarte probabil să existe destui mineri care vor fi dispuși să arbitreze orice nepotrivire între raportul preț și raportul hashpower și să le alinieze pe cele două. Dacă un cartel de mineri încearcă să se formeze pentru a nu mine într-un singur lanț, există stimulente copleșitoare pentru a dezerta.

Există două cazuri marginale aici. Prima este posibilitatea ca, din cauza unui algoritm ineficient de ajustare a dificultății, valoarea extragerii monedei să scadă pentru că prețul scade, dar dificultatea să nu scadă pentru a compensa, făcând mineritul foarte neprofitabil și nu există mineri dispuși să exploateze la un moment dat. pierderea de a continua să împingă lanțul înainte până când dificultatea acestuia revine la echilibru. Acesta nu a fost cazul cu Ethereum, dar se poate fi cazul Bitcoin. Prin urmare, lanțul minoritar s-ar putea pur și simplu să nu iasă niciodată de la sol și astfel va muri. Rețineți că problema normativă a indiferent dacă acesta este un lucru bun sau nu depinde de opiniile tale despre constrângere versus secesiune; după cum vă puteți imagina din ceea ce am scris mai sus, personal cred că astfel de algoritmi de ajustare a dificultății minoritare-lanț-ostili sunt răi.

Al doilea caz de margine este că, dacă diferența este foarte mare, lanțul mare poate ataca în proporție de 51% lanțul mai mic. Chiar și în cazul unei scindări ETH/ETC cu un raport de 10:1, acest lucru nu s-a întâmplat; deci cu siguranță nu este un dat. Cu toate acestea, este întotdeauna o posibilitate dacă minerii din lanțul dominant preferă constrângerea în locul permiterii secesiunii și acționează pe baza acestor valori.

În continuare, să ne uităm la furcile dure care se extind strict. Într-un SEHF, există proprietatea că lanțul fără bifurcație este valabil în conformitate cu regulile bifurcate și, prin urmare, dacă furculița are un preț mai mic decât lanțul fără bifurcație, va avea mai puțină putere hash decât lanțul fără bifurcație și astfel încât lanțul nefurcat va ajunge să fie acceptat ca fiind cel mai lung lanț atât prin regulile clientului inițial, cât și după regulile clientului bifurcat – și așa lanțul bifurcat”va fi anihilat".

Există un argument că există astfel o părtinire inerentă puternică împotriva reușirii unei astfel de furci, deoarece posibilitatea ca lanțul bifurcat să fie anihiliat va fi inclusă în preț, împingând prețul mai jos, făcând și mai probabil ca lanțul să fie anihilat... Acest argument mi se pare puternic și, prin urmare, este un motiv foarte bun pentru a face Orice conflictuală hard furk bilaterală, mai degrabă decât în ​​extindere strictă.

Dezvoltatorii Bitcoin Unlimited sugerează să rezolvați această problemă prin realizarea manuală a furcii dure bilaterale după ce se întâmplă, dar o alegere mai bună ar fi să se integreze bilateralitatea; de exemplu, în cazul bitcoin, se poate adăuga o regulă pentru a interzice un cod operațional nefolosit și apoi se poate face o tranzacție care să conțină acel cod operațional pe lanțul non-furcat, astfel încât, în conformitate cu regulile bifurcate, lanțul non-furcat va fi de atunci încolo. considerat invalid pentru totdeauna. În cazul Ethereum, din cauza diferitelor detalii despre modul în care funcționează calculul de stat, aproape toate hard fork-urile sunt bilaterale aproape automat. Alte lanțuri pot avea proprietăți diferite în funcție de arhitectura lor.

Ultimul tip de furcă care a fost menționat mai sus este furca moale activată de utilizator. Într-un UASF, utilizatorii activează regulile soft fork fără a se deranja să obțină consens de la mineri; se așteaptă ca minerii să se încadreze pur și simplu din interes economic. Dacă mulți utilizatori nu sunt de acord cu UASF, atunci va exista o împărțire a monedelor, iar acest lucru va duce la un scenariu identic cu hard furk-ul care se extinde cu strictețe, cu excepția – și aceasta este partea cu adevărat inteligentă și vicleană a conceptului – aceeași presiune de „risc de anihilare” care defavorizează puternic lanțul bifurcat într-o furcă rigidă care se extinde strict, favorizează în schimb lanțul bifurcat într-un UASF. Chiar dacă un UASF este opt-in, folosește asimetria economică pentru a se orienta spre succes (deși părtinirea nu este absolută; dacă un UASF este hotărât nepopular, atunci nu va reuși și va duce pur și simplu la o scindare în lanț).

Cu toate acestea, UASF-urile sunt un joc periculos. De exemplu, să presupunem că dezvoltatorii unui proiect doresc să creeze un patch UASF care convertește un cod operațional neutilizat care a acceptat anterior toate tranzacțiile într-un cod operațional care acceptă doar tranzacții care respectă regulile unei noi caracteristici interesante, deși unul care este controversate din punct de vedere politic sau tehnic, iar minerilor nu le plac. Minerii au un mod inteligent și viclean de a riposta: ei pot implementa unilateral un soft furk activat de miner care face ca toate tranzacțiile folosind funcția creată de soft furk să eșueze întotdeauna.

Acum, avem trei seturi de reguli:

  1. Regulile originale în care codul operațional X este întotdeauna valabil.
  2. Regulile în care opcode X este valabil numai dacă restul tranzacției respectă noile reguli
  3. Regulile în care codul operațional X este întotdeauna invalid.

Rețineți că (2) este o furcă moale în raport cu (1) și (3) este o furcă moale în raport cu (2). Acum, există o presiune economică puternică în favoarea lui (3), și astfel soft-furk nu reușește să-și atingă obiectivul.

Concluzia este aceasta. Furcile moi sunt un joc periculos și devin și mai periculoase dacă sunt certați și minerii încep să riposteze. Furcile tari cu extindere strictă sunt, de asemenea, un joc periculos. Furcile moi activate de miner sunt coercitive; Furcile moi activate de utilizator sunt mai puțin coercitive, deși încă destul de coercitive din cauza presiunii economice și au și pericolele lor. Dacă într-adevăr doriți să faceți o schimbare controversată și ați decis că costurile sociale mari de a face acest lucru merită, trebuie doar să faceți un hard fork bilateral curat, să petreceți ceva timp pentru a adăuga o protecție adecvată la reluare și lăsați piața să rezolve problema .

Sursa: https://vitalik.eth.limo/general/2017/03/14/forks_and_markets.html