Segregated Witness selkokielellä

Torstai 24.8.2017 on historiallinen päivä Bitcoinille. Tänä päivämääränä, arviolta aamuyöllä Suomen aikaa, aktivoituu kauan odotettu Segregated Witness -skaalauspäivitys, eli SegWit. Skaalauspäivityksen on määrä parantaa Bitcoin-verkon kapasiteettia muuttamalla tapaa, jolla verkko varmistaa Bitcoin-siirtoja. SegWit on vuosia kestäneen Bitcoin-yhteisöä repineen kiistan kulminaatio ja ratkaisu sekä ensimmäinen kerta, kun Bitcoin-verkkoon tehdään näin merkittävä ja laaja päivitys. SegWitin uskotaan sekä tekevän Bitcoinista nopeamman että lisäävän sitä myötä bitcoinien markkina-arvoa ja kasvattavan bitcoinin kurssia.

Tämän artikkelin tarkoituksena on kertoa pääpiirteittäin selkeällä suomella, mistä Segregated Witness -päivityksessä oikein on kyse ja minkä vuoksi se on niin tärkeä Bitcoinille ja Bitcoin-yhteisölle.

SegWit eristää digitaaliset allekirjoitukset

Nimi “Segregated Witness” tulee tavasta, jolla SegWit-päivitys muuttaa Bitcoin-siirtoja. Ennen SegWitiä jokaiseen lohkoketjun lohkoon on kirjattu jokaisen Bitcoin-siirron kohdalle niin sanottu “signature”, eli digitaalinen allekirjoitus, jonka avulla bitcoineja voidaan siirtää yhdeltä tililtä toiselle. Tämä digitaalinen allekirjoitus on kooltaan varsin suuri ja se vie leijonanosan transaktioiden koosta. Digitaalinen allekirjoitus on varsin turvallinen tapa varmentaa, että vain bitcoinien oikea omistaja voi siirtää niitä, mutta se vie paljon tilaa.

Segregated Witness muuttaa tapaa, jolla Bitcoin-järjestelmä varmistaa näitä siirtoja. SegWit “segregoi” (eristää) “todistajat” (allekirjoitukset) aina, kun mahdollista, ja siirtää ne lohkojen loppupäähän uuteen lohko-osaan sen sijaan, että allekirjoitukset olisi kirjattu jokaisen siirron rinnalle. Koska vanhan lohko-osan koko on rajattu yhteen megatavuun, tämä mahdollistaa useamman siirron mahduttamisen mukaan vanhaan osaan. Käytännössä tämä tarkoittaa loppukäyttäjälle sitä, että Bitcoin-siirrot muuttuvat nopeammiksi ja edullisemmiksi verkon kapasiteetin kasvaessa.

segwit.png
Segregated Witness siirtää digitaaliset allekirjoitukset lohkoketjussa siirtojen loppupäähän uudelle alueelle (“witness”) sen sijaan, että ne olisivat vanhalla alueella siirtojen rinnalla. Tämä tekee siirroista nopeampia ja verkosta tehokkaamman.

SegWit korjaa verkon bugeja

Sen lisäksi, että Segregated Witness lisää Bitcoin-verkon kapasiteettia, se myös korjaa järjestelmässä olleen bugin, jonka vuoksi Bitcoin-transaktioiden tunnisteita on periaatteessa ollut mahdollista manipuloida ennen vahvistumista manipuloimalla niiden allekirjoituksia. Tämä bugi kulkee nimellä “transaktioiden muovattavuus” (englanniksi “transaction malleability”). Käytännössä se on tarkoittanut sitä, että vahvistamattomia bitcoin-siirtoketjuja on ollut mahdollista rikkoa kolmansien osapuolien toimesta. Eli muovatun transaktion jatkosiirrot on ollut mahdollista perua kolmansien osapuolien toimesta.

Segregated Witness poistaa tämän ongelman siirtämällä nämä digitaaliset allekirjoitukset uudelle alueelle, jota ei enää käytetä Bitcoin-transaktioiden tunnisteen määrittämiseen. Kun Bitcoin-transaktioiden tunnisteet eivät enää muodostu allekirjoitusten pohjalta, niitä ei voi enää manipuloida kolmansien osapuolien toimesta.

Tämä transaktioiden muovattavuus ei ole ollut toistaiseksi kovin merkittävä ongelma, mutta sen korjaaminen on tarpeellista Bitcoinin tulevan kehityksen kannalta. Bugin korjaamisen ansiosta Bitcoin-verkon päälle on mahdollista rakentaa esimerkiksi uusia skaalauspäivityksiä entistä paremmin ja turvallisemmin. Näistä yksi esimerkki on niin kutsuttu salamaverkko (Lightning Network).

malleability.png
Bitcoin-siirtoja on ollut mahdollista manipuloida muokkaamalla transaktioihin liitettäviä allekirjoituksia. Segregated Witnessin jälkeen sen haittavaikutukset poistuvat kokonaan.

Soft fork ja hard fork

Segregated Witnessiä ja muutoinkin digivaluuttoja koskevassa keskustelussa puhutaan usein käsitteistä “soft fork” ja “hard fork”. Näillä käsitteillä tarkoitetaan erilaisia tapoja päivittää Bitcoinia tai muita vastaavia lohkoketjusovelluksia. Yksinkertaisimmillaan soft fork tarkoittaa, että sääntöjä tiukennetaan / lisätään. Hard fork puolestaan tarkoittaa, että sääntöjä löysennetään.

Soft fork on nimensä mukaisesti näistä kahdesta vaihtoehdosta pehmeämpi tapa päivittää verkkoa. Soft fork tarkoittaa, että verkkoa päivitetään siten, että uudet louhitut lohkot ja käytetyt protokollat ovat vielä taaksepäin yhteensopivia (koska mitään vanhoja sääntöjä ei rikota). Tämä tarkoittaa, että vaikka kaikki verkon solmut eivät päivittäisi ohjelmistojaan samaan päivitykseen, lohkoketju ei halkea kahdeksi eri lohkoksi, vaan se pysyy yhtenä lohkoketjuna. SegWit on tällainen soft fork -päivitys.

Hard fork puolestaan tarkoittaa ohjelmistopäivitystä, jonka jälkeen uudet louhitut lohkot ja protokollat eivät ole enää yhteensopivia vanhojen protokollien kanssa. Jos siis kaikki solmut eivät päivitä ohjelmistojaan samanaikaisesti uuteen protokollaan, lohkoketju haarautuu kahtia ja yhden lohkoketjun tilalle syntyy kaksi lohkoketjua. Hyvä esimerkki tällaisesta hard fork -päivityksestä on taannoinen Ethereumin päivitys, jonka myötä Ethereum halkesi kahtia Ethereumiin ja Ethereum Classiciin.

Bitcoin-louhijoiden kannalta sekä soft fork että hard fork -päivitykset vaativat ohjelmistojen päivittämistä, eli heidän kannaltaan näiden välillä ei ole merkittävää teknistä eroa.

splitti.png
Hard fork -päivityksen jälkeen yhden lohkoketjun sijasta on kaksi lohkoketjua.

SegWitin lyhyt historia

Segregated Witness on ollut ilmoilla ajatuksena jo pitkään. Ensimmäisen kerran SegWitiä ideoitiin jo vuonna 2011. Ensimmäisenä sitä ehdotti Bitcoin Coren kehityksen parissa työskennellyt tietokonetieteiden tohtori Pieter Wuille. Wuillen skaalausehdotus sai heti julkaisunsa jälkeen paljon positiivista huomiota ja monet tahto ryhtyivätkin kehittämään omia SegWit-implementaatioitaan. Nykyinen SegWit-implementaatio esiteltiin vuoden 2015 joulukuussa järjestetyssä Scaling Bitcoin -konferenssissa. SegWit-koodi otettiin Bitcoin Core -ohjelmistoon käyttöön vuoden 2016 lokakuussa.

SegWitin taival laajimmin hyväksytyksi Bitcoin-päivitykseksi ei ole ollut helppo. Bitcoin-yhteisö on miettinyt erilaisia tapoja Bitcoinin skaalaamiseksi suuremmalle yleisölle siitä saakka, kun huomattiin, että Bitcoinin suosio räjähtää käsiin ja kasvaa nopeammin kuin kukaan olisi koskaan osannut odottaa. Monet eri tahot ehdottivat erilaisia tapoja digivaluutan skaalaamiseksi ja noista erilaisista tavoista käytiin paikoittain varsin kiivastakin keskustelua. Ajoittain keskustelun sijasta nähtiin jopa rumaa peliä, kuten erilaisia verkkohyökkäyksiä ja mustamaalausta. Tätä vääntöä kutsuttiin skaalauskiistaksi ja se kesti jopa vuosien ajan. SegWitin uskotaan olevan merkittävä askel tämän kiistan ratkaisemiseksi.

Bitcoin ei ole ensimmäinen digivaluutta, jossa SegWit on otettu käyttöön. Ensimmäisenä SegWit aktivoitui Bitcoinin pohjalta rakennetussa Litecoin-digivaluutassa. Litecoinin SegWit aktivoitui vuoden 2017 toukokuussa. Aktivoituminen ei aiheuttanut Litecoiniin mitään ongelmia, vaan se sai Litecoin-verkon toimimaan tehokkaammin ja sen kapasiteetin nousemaan. Myös litecoinien kurssi lähti päivityksen aktivoitumisen jälkeen nopeaan nousuun.

SegWit2X ei ole sama asia kuin SegWit

Segregated Witnessin lisäksi Bitcoinia ollaan tahdottu päivittää niin kutsutulla SegWit2X-suunnitelmalla. SegWit2X on vuoden 2017 toukokuussa ensimmäisen kerran ehdotettu päivitys, jonka takana on monia merkittäviä Bitcoin-yrityksiä ja joka SegWitin tapaan pyrkii skaalaamaan Bitcoinin entistä suuremmalle määrälle ihmisiä.

Tämä suunnitelma eroaa tavallisesta SegWitistä siten, että se menee pidemmälle kuin SegWit. SegWit2X:n tarkoituksena on, että SegWitin aktivoitumisen jälkeen Bitcoin-verkkoon tehdään marraskuussa hard fork -päivitys, joka kaksinkertaistaa Bitcoinin lohkoketjun lohkojen maksimikoon yhdestä megasta kahteen megaan.

Siinä missä nykyinen SegWit-päivitys on soft fork -päivitys, joka ei edellytä lohkoketjun haarauttamista, SegWit2X puolestaan on hard fork -päivitys, jonka jälkeen olisi olemassa kaksi eri Bitcoinia, koska kaikki operoijat eivät käytännössä edes pysty päivittämään ohjelmistojaan tähän uuteen versioon tällä aikajänteellä, ja lisäksi SegWit2X:llä on paljon vastustajia, joilla ei ole aikomusta päivittää tähän versioon koskaan.

Segregated Witnessillä on laaja tuki, mutta SegWit2X:ään puolestaan suhtaudutaan ristiriitaisemmin. Monet näkevät, että SegWit2X on hyödyllinen päivitys, koska se kaksinkertaistaa lohkojen maksimikoon. Lohkojen maksimikoon kasvattamista pidetään eräänlaisena “pikakorjauksena”, jonka uskotaan nopeuttavan Bitcoin-verkon toimintaa nopealla aikataululla.

SegWit2X:n kriitikot puolestaan katsovat, että SegWit2X ei ole tarpeellinen, vaan se voi olla jopa vahingollinen. Mitä suurempia lohkojen maksimikoot ovat, sitä raskaampaa ja kalliimpaa lohkoketjun käsittely on. Lohkojen maksimikoon kasvattamista pidetään myös sen vuoksi huonona ratkaisuna, että se nähdään lähinnä oireiden korjaamisena sen sijaan, että siinä perehdyttäisiin itse ongelmaan. Lisäksi SegWit2X:n aikataulu nähdään aivan liian nopeana.

Segregated Witnessin aktivoituminen on välttämätöntä SegWit2X:n aktivoitumiselle, mutta SegWit2X:n aktivoituminen ei ole välttämätöntä SegWitille. SegWit aktivoituu Bitcoinissa nyt varmasti ja riippumatta siitä, mikä tulee olemaan SegWit2X:n kohtalo. SegWit2X:n on tarkoitus aktivoitua lohkon 494784 jälkeen, arviolta marraskuussa, jos se ylipäätään tulee aktivoitumaan.

800px-Nilgiri_tahr_kid_anxious_look_by_N_A_Nazeer.jpg
Tämän asiaan liittymättömän söpön kuvan funktiona on pehmentää muutoin raskaslukuista artikkelia sekä parantaa lukijan mielialaa. (KUVA: N.A.Nazeer)

Aktivoituminen, lukittuminen ja signalointi

Segregated Witnessin implementointi on moniportainen ja pitkä prosessi. Tämä on tarkoituksellista, jotta Bitcoin-verkon käyttäjillä ja -palveluntarjoajilla on riittävästi aikaa päivittää omat järjestelmänsä yhteensopiviksi SegWitin kanssa.

Ensimmäinen askel SegWitin aktivoimisessa on niin sanottu “signalointiperiodi”. Tällä tarkoitetaan vuonna 2016 alkanutta ajanjaksoa, jolloin Bitcoin-louhijat saivat mahdollisuuden ryhtyä signaloimaan SegWit-päivityksen hyväksymisen puolesta. Käytännössä signalointi tarkoittaa vain sitä, että louhijat ilmoittavat olevansa valmiita päivittämään SegWitiin.

Bitcoin-verkko seuraa tätä signalointia automaattisesti. Kun yli 95% verkon louhijoista ovat kertoneet verkolle kannattavansa SegWit-päivitystä vähintään kahden viikon ajan, SegWit menee lukittuun tilaan. Tämä lukittuminen tapahtui 9. päivä elokuuta. Lukittu tila tarkoittaa, että päivitys aktivoituu 2016 lohkon (n. kaksi viikkoa) päästä.

Kahden viikon odotusajan tarkoituksena on, että louhijat, käyttäjät ja muut Bitcoin-toimijat voivat rauhassa ja turvallisesti päivittää järjestelmiään SegWit-yhteensopiviksi. Tämä odotusaika on nyt päättymässä.

800px-Barack_Obama_20110501.jpg
Segregated Witnessiä on odotettu kuin Joulupukkia aattona, ja vihdoin ja viimein tuo pitkä ja tuskallinen odotusperiodi on ohi. (KUVA: White House)

Mitä Sinun tulee tehdä?

Tavalliselle käyttäjälle SegWitiin päivittäminen ei tuota minkäänlaisia ongelmia tai ylimääräistä vaivaa. Suurin osa käyttäjistä todennäköisesti ei edes huomaa SegWitin aktivoitumista muutoin kuin verkon nopeutumisena ja siirtohintojen laskuna. On kuitenkin järkevää varmistaa, että oma lompakko tukee Segwit päivitystä, että saa täyden hyödyn alemmista siirtomaksuista.

SegWit-päivityksen aktivoituminen tuottaa työtä pääasiallisesti erilaisia Bitcoin-palveluja tarjoaville yrityksille. Suurimmassa osassa Bitcoin-palveluja ja -sovelluksia SegWit-päivitys on jo tehty ja käyttäjän osaksi jää nauttia paremmasta, nopeammasta ja edullisemmasta Bitcoinista.