Hard Fork vs Soft Fork – Fork-urile par sa fie o caracteristica specifica a peisajului blockchain. Dar ce sunt ele? De ce sunt atat de importante? Si care este diferenta dintre hard fork si soft fork?
In termini de programare, un “fork” este o modificare a unui cod open-source. De regula, codul modificat este similar in mare parte celui original, insa micile modificari au o importanta uriasa. In unele cazuri, un “fork” este folosit pentru a testa un proces, dar in cazul criptomonedelor este cel mai adesea folosit pentru a implementa schimbari fundamentale sau pentru a crea un nou activ cu caracteristici similare (dar nu identice) cu originalul.
Nu toate fork-urile sunt intentionate. Data fiind marimea codului open-source existent, un fork se poate intampla accidental atunci cand nodurile nu reproduc aceeasi informatie. Aceste fork-uri accidentale sunt de regula descoperite si rezolvate, iar majoritatea au drept cauza dezacorduri intre caracteristicile de baza.
Unul din lucrurile de tinut minte atunci cand vine vorba de fork-uri este ca au o “istorie comuna”. Inregistrarea tranzactiilor pe fiecare chain este identica cu cea anterioara.
Exista doua mari categorii de fork-uri: hard si soft
Un hard fork este o schimbare a protocolului care face ca celelalte versiuni sa fie invalide. Daca versiunile vechi continua sa functioneze, acestea vor returna protocoale si date diferite fara de cele noi. Acest lucru poate duce la confuzie si la erori semnificative.
In cazul Bitcoin, ar fi nevoie de un hard fork pentru a schimba parametri definitorii, precum marimea block-urilor, dificultatea criptografica, limitarea informatiilor si asa mai departe. O schimbare a oricarei dintre aceste reguli ar face ca block-urile sa fie acceptate de noul protocol, dar respise de versiunile mai vechi. Acest lucru ar putea conduce la probleme serioase, si chiar pierderea fondurilor.
Spre exemplu, daca limita unui block ar creste de la 1MB la 4MB, un block de 2 MB ar fi acceptat de noua versiune, dar ar fi respins de nodurile versiunilor mai vechi.
Sa presupunem ca acest block de 2 MB este validat de un nod actualizat si adaugat in blockchain. Ce se intampla daca urmatorul block este validat de un nod care ruleaza o versiune mai veche a protocolului? Va incerca sa adauge block-ul la blockchain, dar va detecta ultimul block ca fiind invalid, asa ca il va ignora si va adauga la block-ul de dinaintea acestuia. Dintr-o data avem doua blockchain-uri, unul care cuprinde versiuni vechi si noi de blockuri, si altul care cuprinde doar versiuni vechi. Care dintre aceste chain-uri creste mai repede depinde de care dintre noduri valideaza urmatorul block. Mai mult decat atat, este posibil sa apara chiar mai multe ramificatii. Este fezabil ca doua sau mai multe chain-uri sa creasca in parallel pe termen indefinit.
Acesta este un hard fork, si poate cauza probleme. Este riscant intrucat exista posibilitatea ca monedele cheltuite in noul block sa fie apoi folosite si in cel vechi, din moment ce comerciantii care folosesc codul vechi nu vor putea detecta utilizarea monedelor in codul nou.
Singura solutie este ca o ramura sa fie abandonata in favoarea celeilalte, ceea ce inseamna ca anumiti mineri vor pierde (tranzactiile in sine nu se vor pierde, ci vor fi realocate). O alta solutie ar fi ca toate nodurile sa treaca la noua versiune in acelasi timp, ceea ce este imposibil de indeplinit intr-un sistem extins si descentralizat.
A treia solutie ar fi ca Bitcoin-ul sa se ramifice, vezi Bitcoin Cash.
Un soft fork va functiona in continuare cu versiunile mai vechi.
Daca, spre exemplu, protocolul este schimbat intr-un mod care rigidizeaza regulile, care implementeaza o schimbare vizuala, sau care adauga o functie care nu influenteaza structura, block-urile din versiunea noua vor fi acceptate de catre versiunile vechi de noduri. Insa lucrurile nu vor functiona la fel si invers: versiunile noi, mai rigide, nu vor accepta versiunile vechi de block-uri.
In cazul Bitcoin ar fi ideal ca minerii sa realizeze ca block-urile lor sunt respinse si sa actualizeze versiunea nodurilor. Pe masura ce mai multi mineri actualizeaza, chain-ul in care predomina block-urile noi devine cel mai lung, astfel ca vechiul chain devine invalid. Acest lucru determina si mai multi mineri sa treaca prin actualizare, iar sistemul se corecteaza singur. Din moment ce noile block-uri sunt acceptate si de nodurile vechi, acestea castiga intr-un final.
Spre exemplu, sa presupunem ca in comunitate se ia decizia de a reduce dimensiunea block-ului la 0.5MB de la limita curenta de 1MB. Noile versiuni de noduri vor respinge block-urile de 1MB, si vor construi pe chain-ul anterior, ceea ce ar genera un soft fork temporar.
Soft fork-urile au avut loc de mai multe ori pana acum. Initial, Bitcoin-ul nu avea o limita de marime a block-ului. Introducerea limitei de 1MB a fost facuta printr-un soft fork, din moment ce regulile au devenit mai stricte decat cele anterioare. Functia pay-to-script-hash, care imbunatateste codul fara a schimba structura, a fost de asemenea adaugata printr-un soft fork. Acest tip de adaugire necesita de regula ca jumatate din mineri sa actualizeze.
Soft fork-urile nu poarta riscul de dubla folosire a monedelor, spre deosebire de hard fork-uri, din moment ce comerciantii care folosesc versiuni vechi de noduri vor putea citi atat blockurile vechi cat si cele noi.
Gospodarii din intreaga lume sunt mereu dornici sa gaseasca metode prin care sa isi usureze…
Calatoriile si descoperirea celor mai putin cunoscute colturi ale lumii reprezinta un vis al multor…
Oaspetii apreciaza un hotel sau o pensiune in functie de mai multe criterii. Printre acestea…
Situatia personala, profesionala, politica sau economica din tara te-a determinat sa emigrezi, singur sau alaturi…
Ti-ar placea ca, atunci cand spui cel mai important „Da“ din viata ta – acela…
Turcia este destinatia preferata de majoritatea turistilor. Poarta Orientului, legatura dintre Europa si Asia, aceasta…