Pe masura ce inaintam in acumularea de cunostinte despre blockchain si criptomonedele care functioneaza cu ajutorul acestuia, intampinam termeni si concepte de care nu am mai auzit. In acest articol vom introduce termenii de hard fork si soft fork, pentru a intelege mai bine de ce si cum au loc schimbarile de cod din blockchain.

Hard Fork

Un hard fork este o actiune in care se efectueaza o schimbare in protocol in urma careia versiunile precedente devin invalide. Daca acestea continua sa fie efectuate, vor avea un protocol si date diferite fata de noua varianta, ceea ce poate duce la confuzie si chiar erori in retea.

In cazul Bitcoin, de exemplu, un hard fork ar fi necesar pentru a schimba marimea unui bloc, dificultatea calculului matematic pentru mineri, informatiile aditionale etc. Schimbarea oricarei dintre aceste reguli inseamna ca adaugarea unui bloc nou poate fi acceptata de protocolul nou din retelele actualizare, dar respinsa de cele care sustin inca versiunile vechi. Astfel, pot aparea mai multe probleme, printre care si pierderea de fonduri.

De exemplu, sa spunem ca limita marimii unui bloc este de 1 MB si are loc o schimbare in protocol care creste limita la 4 MB, si vrem sa adaugam un bloc in blockchain cu o marime de 2 MB. Blocul va fi adaugat in blockchain de catre protocolul actualizat, dar respins de catre protocolul care mentine limita la 1 MB. De aici si aparitia problemelor, intrucat toti utilizatorii unui blockchain trebuie sa aiba aceeasi versiune pentru ca acesta sa functioneze.

Daca blocul este validat de un nod actualizat si adaugat in blockchain, ce se intampla cand urmatorul bloc este validat de un nod dintr-o versiune precedenta? Acest nod va incerca sa adauge blocul la blockchain dar va detecta faptul ca blocul precenent este invalid pentru versiunea respectiva. Astfel, va ignora acel bloc si va atasa noul bloc la blocul precedent.

Ce se intampla este crearea a doua blockchain-uri, unulatat cu blocuri vechi, cat si noi, si unul numai cu blocuri din versiunea veche. De asemenea, ar putea exista rupturi aditionale, sau cele doua retele ar putea functiona in paralel.

Rupturile de tip hard fork sunt riscante, intrucat monedele cheltuite intr-un bloc de versiune noua ar putea fi cheltuite din nou intr-un bloc de versiune veche.

Solutiile pentru aceste riscuri include abandonarea unei retele in favoarea celeilalte, desi unii mineri ar putea suferi pierderi. De asemenea, un hard fork ar fi rezolvat daca toate nodurile ar schimba versiunea de la cea veche la cea noua in acelasi timp. Avand in vedere ca un blockchain este o retea decentralizata, si acest lucru ar fi dificil. Sau, se pot intampla rupturi Bitcoin, precum crearea retelei Bitcoin Cash dintr-un hark fork cu Bitcoin.

Soft Fork

Un soft fork poate functiona in continuare cu versiunile vechi. Daca un protocol este schimbat astfel incat intareste regulile, implementeaza o schimbare de aspect sau adauga o functie care nu afecteaza structura, noile blocuri vor fi acceptate de nodurile din versiunile vechi. Acest fapt nu este valabil si in sensul invers, astfel nodurile din versiunea noua nu vor accepta blocurile mai vechi.

Intr-un caz ideal in ceea ce priveste Bitcoin, minerii si-ar actualiza versiunea in numere cat mai mari. Cu cat au loc mai multe actualizari, cu atat va fi lantul de blocuri cu mai multe blocuri noi mai lung. Astfel, sistemul se corecteaza singur.

De ecemplu, daca am schimba limita marimii unui bloc de la 0.5 MB la 1 MB, nodurile noi ar respinge blocurile de 0.5 MB si ar construi un bloc nou peste cel respins, ceea ce ar duce la un fork temporar.

Acesta este un soft fork; Bitcoin nu avea o limita a marimii blocurilor, deci introducerea unei limitari la 1 MB a luat loc printr-un soft fork. Acest tip de regula necesita de obicei numai ca majoritatea minerilor da actualizeze platforma, fiind mai realizabila si mai putin distrugatoare decat un hard fork.

Un soft fork nu implica riscurile de a repeta o tranzactie pe care le are un hard fork, din moment ce comerciantii si utilizatorii care efectueaza noduri vechi vor citi atat blocurile noi, cat si cele vechi. (Sursa EN)