Pitkäaikainen lohkokoko-riita ja useiden uusien Bitcoin-käyttöönottojen äskettäinen käyttöönotto korostivat, että kaikki Bitcoin-solmut eivät sovellu täsmälleen samaa sääntöä – ja ehkä vielä tärkeämpää, että kaikki kehitystiimit eivät noudata samanlaisia käytäntöjä näiden sääntöjen täytäntöönpanossa.
Kehitystiimi takana Bitcoin-ydin, Bitcoinin historiallinen “viiteasiakas” vaatii laajaa yhteisymmärrystä yhteisymmärryksestä ennen sääntömuutosten toteuttamista, kuten lohkon kokorajan nostaminen, kun taas muut muutokset eivät ole samojen standardien mukaisia.
Samaan aikaan jotkut Bitcoin-haarukat, kuten Bitcoin LJR, ovat yleensä kehitysyhteisön hyväksymiä, kun taas toiset, kuten Bitcoin Classic, herättää paljon kiistoja. Jotkut pitävät tätä epäjohdonmukaisena.
Mutta tämä ero voidaan selittää. Tietyt sääntömuutokset, jotka on toteutettu tietyissä haarukoissa, vaikuttavat Bitcoin-verkkoon aivan eri tavalla kuin toiset. Tai tarkemmin: Tietyt sääntömuutokset vaikuttavat hyvin erilaisiin Bitcoin-verkon kerroksiin. Ja jotkut näistä sääntömuutoksista voivat jakaa Bitcoin-verkon, kun taas toiset eivät.
Näiden erojen selventämiseksi, Bitcoin-ydin kehittäjä ja Ciphrex Toimitusjohtaja Eric Lombrozo ehdotti äskettäin merkitsemään asiaankuuluvat kerrokset kaikkiin Bitcoin-parannusehdotuksiin. Nämä ovat neljä pääkerrosta Bitcoin-verkossa, kuten hän on määritellyt BIP 123, ja konsensuksen merkitys kullekin.
Konsensussäännöt
Konsensussäännöt ovat Bitcoinin tärkeimmät säännöt. Ne määrittävät – muun muassa – lohkopalkkioon sisältyvien bitcoinien määrän, kaivostoiminnan vaikeuden, vaaditun työtodistuksen tyypin ja todellakin lohkon kokorajoituksen.
Nämä säännöt ovat niin tärkeitä, koska ne määrittävät, mitkä lohkot katsotaan kelvollisiksi täysien solmujen avulla. Ja jos kaikki täydet solmut soveltavat samoja konsensussääntöjä, se varmistaa, että ne kaikki ylläpitävät samanlaista kopiota lohkoketjusta.
Jos eri solmut soveltavat erilaisia konsensussääntöjä, ne kuitenkin hyväksyvät lohkot, jotka muut solmut hylkäävät. Tällainen ristiriita voi johtaa siihen, että eri solmut ylläpitävät lohkoketjun täysin yhteensopimattomia versioita, jakavat tehokkaasti Bitcoin-verkon.
Bitcoinin konsensussääntöjä voidaan muuttaa kahdella tavalla. Muutosta, joka lisää pöytäkirjaan ylimääräisiä sääntöjä (jolloin aikaisemmat kelvolliset lohkot eivät kelpaa), kutsutaan pehmeäksi haarukaksi. Pehmeät haarukat vaativat suurimman osan hajautusvoimasta muutoksen tukemiseksi. Uusien sääntöjen mukaan tuotetut lohkot pätevät myös vanhojen sääntöjen mukaan, joten solmut, jotka eivät päivittäneet, seuraavat silti pisintä ketjua.
Päivittämättömät kaivostyöläiset saattavat kuitenkin tuottaa lohkoja, jotka ovat uusien sääntöjen mukaan virheellisiä, tuhlaen hajautusvoimaa. Ja päivittämättömät täydet solmut eivät enää pystyisi tarkistamaan, noudattavatko lohkot uusia sääntöjä, ja vaaditaan niitä odottamaan lisävahvistuksia saavuttaakseen saman suojaustason.
Näistä ja muista syistä Bitcoin Core -kehitystiimi on sanonut, että se tarvitsee tyypillisesti 95 prosentin hash-voiman suurimman enemmistön sopiakseen pehmeistä haarukoista.
Konsensussääntömuutosta, joka poistaa säännöt protokollasta (jolloin aiemmin virheelliset lohkot ovat kelvollisia), kutsutaan kovaksi haarukaksi. Kova haarukka vaatii kaikkien verkon täysien solmujen hyväksymisen. Mikään solmu, joka ei toteuta muutosta, ei välttämättä seuraa pisintä ketjua ollenkaan, koska se voi pitää ketjua kelpaamattomana ja pysyä sen sijaan “vanhalla” ketjulla. Tämä voi jakaa Bitcoin-verkon yllä kuvatulla tavalla. Kuinka kauan tällainen jako jatkuisi, ei oikeastaan ole tekninen kysymys, vaan pikemminkin keskustelu politiikasta, sosiologiasta, taloustieteestä, peliteoriasta ja muusta.
Pehmeät haarukkamuutokset konsensussääntöihin ilman yksimielisyyttä voivat pahimmassa tapauksessa saada vähemmistön kaivostyöläisistä hukkaan hajautusvoiman ja (hieman) heikentää täyssolmujen turvallisuutta.
Kova haarukan muutokset konsensussääntöihin ilman yksimielisyyttä voivat – pahimmassa tapauksessa – jakaa Bitcoin-verkon.
Peer-to-Peer-kerros
Bitcoin-verkon peer-to-peer-kerros kattaa, kuinka täydet solmut jakavat tietoja ja mitä tietoja he jakavat. Tämä sisältää protokollasäännöt tapahtumien ja estojen lähettämiseksi ja vastaanottamiseksi sekä erityiset tietopaketit, kuten erilliset todistajat tai Invertible Bloom -taulukot.
Tärkeintä on, että peer-to-peer-kerroksen on varmistettava, että uudet lohkot löytävät tiensä koko verkon kautta, sekä lohkojen tarkistamiseen tarvittavat datapaketit. Jos tämä välityskäytäntö epäonnistuu, se voi johtaa verkon jakamiseen, jossa eri solmut pitävät lohkoketjun eri versioita – ainakin kunnes lohkot löytävät tiensä koko verkon läpi uudelleen.
Mutta päinvastoin kuin konsensussäännöissä, se ei ole välttämättä suuri ongelma, jos kaikki solmut eivät sovella samaa relekäytäntöä. Koska suurin osa solmuista välittää lohkoja vähintään kahdeksalle vertaiselle, tämän vahvistimen tulisi varmistaa, että kaikki solmut vastaanottavat kaikki lohkot, vaikka jotkut niistä eivät välittäisi kunnolla.
Solmuilla on vielä enemmän liikkumavaraa tapahtumien välittämisessä. Suurin osa Bitcoin-verkon solmuista käyttää nykyään “ensin nähty” -käytäntöä: Jos he saavat vähintään kaksi ristiriitaista tapahtumaa, he hylkäävät jälkimmäisen. Mutta yhä useampi solmu soveltaa vaihtoja palkkio -käytäntöihin, mikä tarkoittaa, että ne valitsevat liiketoimet, jotka sisältävät korkeimmat maksut – riippumatta siitä, kumpi tuli ensin. Lisäksi jotkut solmut hylkäävät tietyntyyppiset tapahtumat kokonaan tai eivät välitä lainkaan tapahtumia.
Kaivostyöläiset päättävät lopulta, mitkä liiketoimet ne sisältävät lohkoina ja miksi. Vasta kun tapahtumien välityskäytännöt vaihtelevat rajusti tai ovat riittävän rajoittavia, voi olla arvaamatonta, mitkä tapahtumat vahvistetaan pelkästään näistä syistä.
Peer-to-peer-kerrokseen tehdyt muutokset ilman yksimielisyyttä voivat – pahimmassa tapauksessa – jakaa verkon. Tämä riski on olemassa, jos lohkot eivät löydä tiensä koko verkossa. Jako ratkaisee kuitenkin automaattisesti, kun verkko on muodostettu uudelleen.
Jos muutokset koskevat vain tapahtumia, ne voivat pahimmassa tapauksessa estää tiettyjen tapahtumien vahvistamisen. Se voi myös heikentää vahvistamattomien tapahtumien luotettavuutta. Mutta se ei voi jakaa verkkoa.
Sovellusohjelmointirajapinnat ja etäkäyttökutsu
Sovellusohjelmointirajapinnan (API) ja etäkäytön kutsun (RPC) kerrokset ovat tietoliikennekerroksia vertaisyhteyskäytännön päällä. Monet Bitcoin-ohjelmistosovellukset – kuten mobiililompakot ja lohkotutkijat – kommunikoivat lohkoketjun kanssa näiden kerrosten kautta muodostamalla yhteyden API: han tai ohjelmistokirjastoon.
Jos jokin näistä kerroksista epäonnistuu, kaikki liitetyt ohjelmistosovellukset eivät pysty kommunikoimaan luotettavasti Bitcoin-verkon kanssa. Matkapuhelimet eivät tiedä, saivatko he Bitcoinin, ja blockchain-tutkijat eivät voi kertoa löytyykö uusi lohko. Kaikki muut Bitcoinin käyttäjät eivät kuitenkaan huomaa mitään; itse verkko toimii edelleen hyvin.
API- ja RPC-tasojen muutokset ilman yksimielisyyttä voisivat – pahimmassa tapauksessa – irrottaa näiden kerrosten käyttäjät kokonaan Bitcoin-verkosta. Tällaiset muutokset eivät kuitenkaan voi jakaa verkkoa itse.
Sovellukset
Viimeiseksi sovelluskerros viittaa siihen, kuinka Bitcoin-ohjelmistosovellukset luovat ja käyttävät tietyntyyppisiä tietoja, jotka eivät todellakaan kosketa verkkoa suoraan, mutta jotka on hyödyllistä synkronoida sovellusten välillä.
Tämä sisältää esimerkiksi osoitemuodot, yksityisten avainten luomisen tai lompakon varmuuskopiot. Jos yksi lompakko luo osoitteen, jota toinen lompakko ei pidä kelvollisena, kaupankäynti niiden välillä on mahdotonta. Tai jos yksi lompakko käyttää yhtä tapaa luoda varmuuskopiosoitteen siemen ja toinen lompakko käyttää toista, käyttäjät eivät voi palauttaa yksityisiä avaimiaan jokaisen lompakon kanssa. Sama koskee lompakon varmuuskopioita.
Muutokset sovelluskerroksiin ilman yksimielisyyttä voivat – pahimmassa tapauksessa – estää joitain käyttäjiä toimimasta keskenään ja aiheuttaa muita haittoja. Tällaiset muutokset eivät voi jakaa verkkoa. Kiitos Lombrozolle teknisestä ohjauksesta.