Mikä on Segregated Witness (SegWit)?

Aloittelijan opas Bitcoin SegWitiin 💭
Segregated Witness (SegWit) oli Bitcoinin lähdekoodiin tehty päivitys 1. elokuuta 2017.
Vaikka monet pitivät sitä parannuksena Bitcoin-lohkoketjuun, SegWit kohtasi voimakasta vastustusta, joka jakoi yhteisön.
Ongelman ytimessä oli ristiriita louhijoiden kannattavuuden ja verkon kehittäjien välillä, jotka pyrkivät tekemään Bitcoinista halvempaa ja nopeampaa käyttää.
Jännite aiheutti repeämän yhteisössä, mikä johti verkon ensimmäiseen käyttäjän aktivoimaan soft forkiin ja vihamieliseen jakautumiseen. Jakautuminen synnytti sarjan uusia Bitcoinista haarautuneita projekteja, mukaan lukien Bitcoin Cashin.
Tähän mennessä SegWit on edelleen yksi Bitcoinin historian kiistanalaisimmista tapahtumista. Se on kuitenkin osoittautunut myös yhdeksi tärkeimmistä päivityksistä protokollan pitkän aikavälin elinkelpoisuuden kannalta.
Joka vuosi monet Bitcoin-yhteisössä juhlivat 1. elokuuta ”Bitcoinin itsenäisyyspäivänä”. Tämä tapahtuma merkitsee tilaisuutta, jolloin ihmisten tahto voitti vakiintuneiden bitcoin-louhintayritysten keskitetyt intressit.
Katsotaanpa kutakin näistä tapahtumista sellaisina kuin ne tapahtuivat ja puretaan SegWitin historiaa.
Bitcoin ennen SegWitiä ⏮️
Ennen SegWitin aktivointia Bitcoinin lohkokapasiteetti oli pysynyt muuttumattomana useita vuosia. Lohkokapasiteetti viittaa enimmäismäärään transaktioita, jotka voidaan tallentaa tiettyyn lohkoon.
Kun Bitcoin lanseerattiin vuonna 2009, sen luoja(t) Satoshi Nakamoto eivät asettaneet parametreja sille, kuinka suuria bitcoin-lohkot voisivat olla.
Vuonna 2010 Nakamoto kuitenkin lisäsi salaa 1 megatavun (MB) lohkokoon rajoituksen ilman muiden Bitcoin-osallistujien hyväksyntää.
Monet uskoivat Nakamoton sisällyttäneen rajoituksen estääkseen tulevat hajautetut palvelunestohyökkäykset (DDoS), jotka voisivat vaikuttaa verkkoon.
Tällä kiinteällä lohkokapasiteetin rajalla oli ei-toivottu vaikutus Bitcoinin skaalautumispotentiaalin rajoittamiseen monin tavoin.
Alhainen suorituskyky ja hitaat transaktioajat
Vain rajallinen määrä transaktioita mahtuu suhteellisen pieneen 1 Mt:n lohkoon, jonka Bitcoin nyt otti käyttöön. Tämä pieni kapasiteetti tarkoitti, että Bitcoin-verkko pystyi käsittelemään vain noin 2–3 bitcoin (BTC) -transaktiota sekunnissa – kaukana perinteisistä digitaalisista maksuverkoista, jotka voivat käsitellä kymmeniä tuhansia transaktioita sekunnissa.
Lisäksi, jotta transaktiolohko voidaan katsoa päteväksi osana bitcoinin louhintaprosessia, sen on saatava kuusi vahvistusta. Toisin sanoen kuusi uutta lohkoa on lisättävä lohkoketjuun kyseisen lohkon jälkeen, ennen kuin se viimeistellään. Keskimääräisen kymmenen minuutin lohkoajan vuoksi tämä tarkoittaa, että bitcoin-lohkovahvistukset kestävät noin tunnin.
Tuolloin, kun vain kourallinen ”Cypherpunk”-kryptografeja oli tietoisia bitcoinista, se ei ollut välttämättä valtava ongelma. Mutta jos Bitcoin-verkosta oli tarkoitus tulla globaali ”vertaisyhteisön sähköinen käteisjärjestelmä”, kuten Satoshi visioi Bitcoinin white paperissa, asioiden oli muututtava.
Suuret maksut
Bitcoinin alhainen suorituskyky, jota rajoitti sen pieni lohkokapasiteetti, tarkoitti, että maksut olivat myös suhteellisesti paljon korkeampia kuin nykyään.
Tässä on helppo tapa ymmärtää tämä ongelma. Kuvittele, että seisot ulkona ihmisjoukossa teatteriesityksen jälkeen. Kaikki teatterista haluavat ottaa taksin kotiin samanaikaisesti. Jos takseja on runsaasti, kaikkien pitäisi olla helppo päästä kotiin. Mutta jos takseja on vain kourallinen, ihmiset saattavat yrittää maksaa korkeamman hinnan taksinkuljettajille kannustaakseen kuljettajaa viemään heidät kotiin ensin. Kysynnästä riippuen taksien hinnat voivat nousta huomattavasti normaalia korkeammiksi.
Bitcoin-maksut toimivat samojen kysynnän ja tarjonnan periaatteiden mukaisesti. Jos monet ihmiset haluavat transaktioidensa käsiteltävän samanaikaisesti, jotkut saattavat päättää maksaa enemmän maksuja saadakseen transaktionsa käsitellyksi nopeammin louhijoiden toimesta. Bitcoin-verkon korkean käytön aikoina ruuhka voi johtaa käyttäjien väliseen kilpailuun, mikä voi aiheuttaa transaktiomaksujen jyrkän nousun.
Transaktion muunneltavuus
Toinen Bitcoin-lohkojen toimintaan liittyvä luontainen vivahde tunnettiin transaktion muunneltavuutena. Ennen SegWitiä ihmiset pystyivät muuttamaan transaktion tunnusta ennen kuin se sai riittävästi vahvistuksia lohkoketjussa.
Tietyn transaktion tietojen ottaminen ja niiden ajaminen hajautusfunktion läpi luo transaktion tunnuksen. Voit oppia lisää hajautusfunktioista artikkelistamme Miten kryptovaluutat käyttävät kryptografiaa?
Mutta yksinkertaisuuden vuoksi voit ajatella näitä transaktion tunnuksia digitaalisina sormenjälkinä, joita käytetään transaktioiden tunnistamiseen ja viittaamiseen lohkoketjussa.
Transaktion tunnuksen muuttaminen luo täysin uuden hajautuksen, joka saattoi joskus hämmentää lohkoketjun asiakasohjelmistoa. Kaikki solmut käyttävät asiakasohjelmistoa vuorovaikutukseen lohkoketjun kanssa ja suorittavat tärkeitä tehtäviä, kuten tietojen tarkistusta.
Tämä Bitcoinin koodin muunneltavuusvirhe avasi oven haitallisille hyökkäyksille. Yksi tunnetuimmista esimerkeistä transaktion muunneltavuushyökkäyksestä oli Mt. Goxin pörssin hakkerointi vuonna 2014 – tunnettu historian suurimpana bitcoin-hakkerointina.
Asiantuntijat raportoivat, että hakkeri tai hakkeriryhmä tyhjensi Mt. Goxin pörssin bitcoin-lompakon. He tekivät tämän osittain muuttamalla nostojensa transaktion tunnusta.
Transaktion muunneltavuushyökkäys sai näyttämään siltä, että nostoja ei vahvistettu lohkoketjussa, vaikka ne todellisuudessa olivat.
Tämä haavoittuvuus yhdessä muiden hyökkäysvektorien kanssa mahdollisti hakkerin (hakkerien) siirtää yli 840 000 BTC:tä pörssistä.
Mitä parannuksia SegWit toi? ⚙️
Bitcoin-kehittäjä Pieter Wuille esitteli SegWit-päivityksen ensimmäisen kerran Bitcoin Hong Kong -tapahtumassa vuonna 2015.
Hänen ratkaisunsa oli innovatiivinen kolmella rintamalla. SegWit paransi Bitcoinin skaalautuvuutta, poisti muunneltavuuden ja antoi solmujen ottaa käyttöön uuden transaktiorakenteen. Parasta kaikessa, tämä voitiin toteuttaa ilman verkon hard forkia.
Erilliset digitaalisen allekirjoituksen ja transaktion tiedot
Wuillen ehdotus lisäsi Bitcoinin lohkokapasiteettia "erottamalla" "todistus"-tiedot lohkosta ja siirtämällä ne coinbase-transaktioon. Coinbase-transaktiot ovat ensimmäisiä transaktioita jokaisessa uudessa Bitcoin-lohkossa. Coinbase-transaktio vastaa vasta luodun kryptovaluutan liikkeellelaskusta palkkiona bitcoinin louhintaprosessista.
Louhijat, jotka onnistuvat voittamaan Bitcoinin kryptografiaan perustuvan proof-of-work -kilpailun, ansaitsevat nämä vasta luodut tokenit "lohkon palkkioina".
Todistustiedot, jotka tunnetaan myös nimellä ScriptSig tai Unlocking Script, sisältävät digitaalisen allekirjoituksen ja julkisen avaimen tiedot, joita tarvitaan siirretyn bitcoinin avaamiseen. SegWit-päivitys esitteli erillisen "todistuskentän" transaktion ScriptSig-osalle.
Käsittelemällä digitaalisen allekirjoituksen tiedot erillään transaktion syöttökentästä, jokaiseen lohkoon mahtui enemmän transaktioita.
Enemmän transaktioita lohkoa kohden tarkoittaa suurempaa transaktioiden suorituskykyä. Joten 2–3 transaktion sijaan sekunnissa Bitcoin voi käsitellä 7–10 SegWit-transaktiota sekunnissa. Lisääntynyt kapasiteetti tarkoittaa myös alhaisempia maksuja, koska Bitcoin-lohkoketju pystyy käsittelemään suuremman määrän transaktioita.
Erottelusta huolimatta on tärkeää huomata, että solmut käsittelevät edelleen sekä transaktiotiedot että todistustiedot ketjussa. Sivuketjuja tai Layer 2 -protokollia ei käytetä.
Lohkopaino
Ennen SegWitiä louhijat mittasivat bitcoin-lohkoja koon (tavujen) mukaan. Tämä järjestelmä toimi hyvin, kun lohkot sisälsivät sekä todistus- että transaktiotietoja, mutta kohtasi ongelmia, kun ne erotettiin.
Tämän ratkaisemiseksi päivitys esitteli lohkopainon nimisen mittarin lohkojen koon hallintaan.
Tämän konseptin mukaan jokainen 1 megatavun lohko koostuu 4 000 000 painoyksiköstä (WU). Jokaiselle transaktiolle annetaan paino seuraavan kaavan perusteella:
Perustransaktion koko tavuina (ilman todistustietoja) * 3 + Transaktion kokonaiskoko tavuina.
Poistamalla todistuskentän tiedot laskelmasta SegWit-transaktioilla on paljon pienempi paino. Toisaalta ei-SegWit-transaktio sisältää edelleen todistustietoja. Tämä tarkoittaa, että ei-SegWit-transaktiot painavat aina 4 kertaa enemmän kuin SegWit-transaktiot.
Tämä konsepti teoreettisesti kasvattaa bitcoin-lohkon koon 1 Mt:stä 4 Mt:iin, jos lohko koostuu lähes kokonaan todistustiedoista. Tämä ei kuitenkaan ole mahdollista käytännössä.
Painotetun järjestelmän tärkein etu on, että se kannustaa louhijoita käsittelemään lohkoja, jotka sisältävät enimmäkseen SegWit-transaktioita. Olettaen, että SegWit-transaktiot sisältävät samat maksut kuin vanhat lohkot, louhija voi käsitellä paljon enemmän SegWit-transaktioita lohkoa kohden. Mitä enemmän transaktioita he käsittelevät lohkoa kohden, sitä enemmän he ansaitsevat maksuja.
Win-win molemmille osapuolille. Tai niin voisi luulla.
Ei enää transaktion muunneltavuusongelmia
SegWit-rakenteessa hajautettu transaktion tunnus sisältää vain transaktiotiedot, ei todistuskentän tietoja.
Tämä muutos poistaa bitcoin-transaktion muokattavan osan, joka aiemmin mahdollisti muunneltavuushyökkäykset.
Tämän seurauksena toissijaiset skaalausratkaisut, kuten Bitcoin Lightning Network, tulivat mahdollisiksi.
Miksi SegWit oli kiistanalainen? 🤔
Monet kehitysyhteisössä kokivat, että SegWit ei mennyt tarpeeksi pitkälle Bitcoinin skaalausongelmien ratkaisemisessa.
Tärkeimmät argumentit SegWitin aktivointia vastaan ovat:
- Bitcoinin lisääntynyt suorituskyky 7–10 transaktiota sekunnissa ei ole vieläkään läheskään riittävän korkea hajautetulle, globaalille maksujärjestelmälle.
- Maksut pysyisivät suhteellisen korkeina, mikä tekisi mikrotapahtumista taloudellisesti epäkäytännöllisiä.
- Louhijat voivat edelleen käsitellä vanhoja transaktiolohkoja, mikä tarkoittaa, että muunneltavuus on edelleen uhka.
- Myöhemmin havaittiin, että SegWit kumoaisi Bitmainin ASICBOOST-mekanismin; hyväksikäytön, jota käytettiin louhintalaitteiston tehokkuuden merkittävään lisäämiseen.
Noin vuosi Wuillen ehdotuksen jälkeen hän ja muut Bitcoin Core -kehittäjät, mukaan lukien Eric Lombrozo, olivat valmistelleet koodin julkaistavaksi tulevassa Bitcoin Core 0.13.1 -päivityksessä. Ainoa jäljellä oleva vaihe SegWitin aktivoimiseksi oli, että louhijat aloittaisivat uusien SegWit-lohkojen käsittelyn.
Sen toteutuksen vakiinnuttamiseksi yli 95 % kaikista bitcoin-louhijoista olisi pitänyt osoittaa tukensa SegWitille kahden ensimmäisen viikon kuluessa sen aloittamisesta – mikä oli suuri este ottaen huomioon tuolloiset olosuhteet.
Käyttäjän aktivoima soft fork
Tarpeetonta sanoa, että suuret louhintayritykset, kuten Bitmain, olivat edelleen tyytymättömiä ehdotettuihin muutoksiin ja kieltäytyivät tukemasta SegWitin aktivointia.
Alkuvuodesta 2017 salanimellä ”Shaolinfry” esiintyvä kehittäjä esitti mahdollisuuden, että Bitcoin-solmut voisivat pakottaa soft forkin online bitcoin-dev -postauksessa.
Käyttäjän aktivoimaa soft forkia ei ollut koskaan aiemmin yritetty Bitcoin-verkossa, mutta se antaisi kehittäjille mahdollisuuden viedä SegWit läpi noin 51 %:n tuella louhijoilta. Ne, jotka kieltäytyivät tukemasta uusia lohkoja, ottivat riskin, että solmut hylkäävät heidän lohkonsa. Ratkaisu ei ollut riskitön. Jos SegWit ei saanut riittävää tukea louhijoilta, lopputulos johtaisi väistämättä ketjun jakautumiseen.
SegWitiä vastustavat ehdottivat sen sijaan erilaista SegWit 2X hard fork -päivitystä. Sellaisen, joka toteuttaisi SegWitin ja kasvattaisi Bitcoinin lohkokoon 2 megatavuun.
Toisin kuin edellinen päivitys, SegWit 2X ei olisi taaksepäin yhteensopiva Bitcoin-asiakasohjelman aiempien versioiden kanssa. Nämä muutokset tarkoittivat, että solmujen olisi päivitettävä ohjelmistonsa jatkaakseen toimintaansa verkossa.
SegWit ja New Yorkin sopimus 🗽
Alan johtavat yritykset tapasivat Consensus 2017 -tapahtumassa ja allekirjoittivat yhdessä muistion, jota kutsuttiin "New Yorkin sopimukseksi". Tämä asiakirja esitti suunnitelmat SegWitin käyttöönotosta kesällä ja Bitcoinin lohkokoon kasvattamisesta 2 megatavuun marraskuuhun mennessä.
Ennen marraskuuta Shaolinfry laati kaksi Bitcoin Improvement Proposal -ehdotusta (BIP); BIP148 ja BIP149. Edellinen edusti nopeaa ja tehokasta ratkaisua; ilmoita tuesta SegWit-lohkoille tai solmut hylkäävät lohkosi. Jälkimmäinen tarjosi louhijoille pidemmän aikajänteen käyttöönottoon, asettaen aktivoinnin määräajaksi seuraavan vuoden heinäkuun.
Kun päivämäärä lähestyi, Bitmainin takuuinsinööri James Hillard ehdotti uutta BIP:tä; BIP91. Hänen ratkaisunsa pyrki tekemään sekä SegWit 2X:stä että BIP148:sta yhteensopivia keskenään. Miksi riskeerata ketjun jakautuminen kahden kilpailevan SegWit-päivityksen vuoksi, kun ne voi tehdä yhteensopiviksi?
Elokuun 1. päivänä riittävä louhintatuki vahvisti SegWitin aktivoinnin. New Yorkin sopimuksen toinen vaihe ei kuitenkaan saanut samaa tukea.
Bitcoinin lohkokoon kasvattamisen epäonnistuminen 2 megatavuun johti Bitcoin Cashin (BCH) muodostumiseen — uuteen haarautuneeseen projektiin Bitcoin-lohkoketjusta.
Bitcoinin itsenäisyyspäivän merkitys
SegWitin käyttöönotto ja yhteisön päätös hylätä lohkokoon kasvattaminen edustivat merkittävää hetkeä laajemmalle Bitcoin-yhteisölle.
SegWit osoitti konsensuksen tärkeyden Bitcoin-lohkoketjun muutoksissa sekä Bitcoinin tarjoaman vallan hajauttamisen laajuuden.
Yksikään henkilö ei pystynyt ottamaan verkkoa haltuunsa ja viemään ehdotustaan läpi.
Sen sijaan yhteisö keskusteli, toisti ja jatkoi pitkää prosessia konsensuksen saavuttamiseksi kollektiivisena ryhmänä — ei yhden yksilön ohjauksessa.
Aloita Bitcoinin ostaminen
Nyt kun olet oppinut kaiken SegWitistä, oletko valmis jatkamaan kryptomatkaasi ja ostamaan Bitcoinia?
Tutustu Krakenin oppimiskeskuksen oppaaseen saadaksesi lisätietoja Bitcoinin (BTC) ostamisesta ja rekisteröidy Kraken-tilille jo tänään.