Tänään, 24. marraskuuta 2019, on virallinen julkaisu Bitcoin Core 0.19.0, Satoshi Nakamoton lähes 11 vuotta sitten käynnistämä Bitcoinin alkuperäisen ohjelmistoasiakkaan 19. merkittävä julkaisu, joka on edelleen hallitseva Bitcoin-toteutus verkossa. (Vaikka Bitcoin Core 0.19.0 -julkaisuprosessin myöhäisessä vaiheessa esiin tulleesta ongelmasta johtuen ladattavaksi julkaistu versio on itse asiassa 0.19.0.1.) Bitcoin-ydin johtava ylläpitäjä Wladimir van der Laan, tämän viimeisimmän suuren julkaisun kehitti yli sata avustajaa noin kuuden kuukauden ajan.
550 yhdistetyn vetopyynnön tulos, Bitcoin Core 0.19.0, sisältää useita suorituskyvyn parannuksia, modernisointeja ja virhekorjauksia sekä muita muutoksia.
Tässä on yleiskatsaus joihinkin näistä muutoksista.
Bech32-osoitteet oletuksena GUI: ssa
Bech32-osoitemuoto (BIP 173) oli jo otettu käyttöön Bitcoin Core 0.16.0 -versiossa, joka julkaistiin vuoden 2018 alussa, mutta se on nyt ensimmäistä kertaa oletusvaihtoehtona Bitcoin Core -lompakon graafisessa käyttöliittymässä (GUI)..
Bech32-osoitteet ovat osoitteita, jotka alkavat ”bc1” (toisin kuin 1 tai 3 alkavat osoitteet.) Nämä osoitteet ovat myös hieman pidempiä, mutta niissä käytetään vähemmän eri merkkejä kuin nykyisessä osoitemuodossa, koska eroa ei enää ole pienten ja isojen kirjainten välillä. (Tämä vähentää inhimillisten virheiden mahdollisuutta, esimerkiksi kun osoite luetaan ääneen.) Bech32-osoitteet on myös suunniteltu rajoittamaan kirjoitusvirheiden aiheuttamia virheitä.
Lisäksi bech32 tarjoaa etuja SegWitin yhteydessä. Jotkut SegWitiä tarjoavat lompakot – mukaan lukien toistaiseksi oletusarvoisesti Bitcoin Core-lompakko – tekevät niin “käärimällä” sen P2SH-lähtöihin (osoitteet alkavat “3”: lla). Jos haluat käyttää bitcoinia tällaisesta osoitteesta, käyttäjien on paljastettava pala koodia – “lunastuskomentosarja” – osoittaakseen, että bitcoin oli todella lukittu SegWit-lähtöön. Uusien bech32-osoitteiden avulla tämä vaihe voidaan ohittaa, mikä tarkoittaa, että SegWit-tuotoksen käyttäminen vaatii hieman vähemmän tietojen siirtämistä Bitcoin-verkon kautta ja sisällyttämistä lohkoketjuun. Tämä tekee transaktiot bech32-tuotoksesta jopa halvempia kuin SegWit-transaktiot P2SH-lähdöstä.
Koska kaikki bitcoin-lompakot eivät vielä tue lähettämistä bech32-osoitteisiin, Bitcoin Core 0.19.0 -käyttäjät pystyvät silti valinnaisesti luomaan PS2H-vastaanotto-osoitteen GUI: n vaihtokytkimen kautta..
Kaksi vain estolähtöä lähtevää yhteyttä oletusarvoisesti
Bitcoin-solmut muodostavat yhteyden useisiin muihin Bitcoin-solmuihin ja muodostavat yhdessä vertaisverkon. Tämän verkon kautta solmut jakavat lohkoja, tapahtumia ja joitain muita tapahtumia koskevia tietoja.
Mutta vertaisverkkoon voidaan kohdistaa hyökkäyksiä, kuten “osiointihyökkäykset”. Jos hyökkääjä hallitsee riittävän suurta määrää Bitcoin-solmuja, se voi “katkaista” tietyt Bitcoin-verkon osat (tai jopa tietyt solmut) sieppaamalla kaiken liikenteen siihen. Tällöin verkon osioitu osa voidaan esimerkiksi huijata hyväksymällä vähemmistöketju – ei pisin ketju – päteväksi, mikä puolestaan voi avata oven kaksinkertaisille hyökkäyksille.
Osiointihyökkäystä torjutaan, jos verkon osioidussa osassa on edes vain yksi yhteys pääverkon rehelliseen solmuun. Sitten se vastaanottaa ja välittää kaikki liiketoimet ja estot ja hylkää vähemmistöketjun enemmistöketjun hyväksi.
Yksi tapa ymmärtää tämä ja tehdä osiointi-iskuista vaikeampi saada aikaan on saada solmut solmimaan lisää yhteyksiä toisiinsa. Enemmän yhteyksiä tuo kuitenkin enemmän muistia ja kaistanleveysvaatimuksia; on kompromissi.
Bitcoin Core 0.19.0 nostaa lähtevien yhteyksien oletusarvoa kahdella, mutta – älykkäästi – näitä kahta ylimääräistä yhteyttä käytetään vain välityslohkoihin – ne eivät välitä tapahtumia tai muita tapahtumia koskevia tietoja. Tämä lisää lisättyjä kaistanleveysvaatimuksia minimaalisesti, mutta tekee edelleen osiointihyökkäyksiä vaikeammaksi onnistuneesti.
Bloom-suodattimet poistettu käytöstä
Bitcoin Core on täyden solmun toteutus, mikä tarkoittaa, että se lataa ja tarkistaa kaikki Bitcoin-lohkot. Vaikka tämä on optimaalisesti turvallinen, se ei tee siitä kovin sopivaa vähän resursseja käyttäville tietokonelaitteille, kuten matkapuhelimille. Matkapuhelimet (samoin kuin jotkut työpöydän lompakot) ovat siis yleensä “kevyitä asiakkaita”: nämä lataavat vain heitä erityisesti koskevat tapahtumat ja (osia) lohkoja.
Yksi tapa tehdä tämä on Bloom Filters, jota pari lompakkoa käyttää tänään. Lyhyesti sanottuna Bloom-suodattimet ovat salausnippu, jota kevyet asiakkaat käyttävät pyytääkseen asiaankuuluvia tietoja verkon enemmän tai vähemmän satunnaisilta täysi solmuilta. Valitettavasti vuosien varrella on kuitenkin tullut selväksi, että Bloom-suodattimet ovat melko yksityisyyttä epäystävällisiä: Ne paljastavat olennaisesti kaikki osoitteensa koko solmulle. Tämän lisäksi Bloom Filter -pyyntöjen tukemisesta aiheutuu kustannuksia prosessorissa ja levytiloissa koko solmuille – ilman suoraa hyötyä koko solmulle itselleen.
Erityisesti jälkimmäisestä syystä Bitcoin Core 0.19.0 ei enää tue oletuksena Bloom Filter -pyyntöjä. Käyttäjät voivat silti vaihtaa oletusasetuksen tukemaan Bloom-suodattimia, jos he niin haluavat.
On myös syytä huomata, että Bitcoin-verkko kokonaisuudessaan tukee melkein varmasti Bloom Filtersia tulevina vuosina, vaikka kukaan ei vaihtaisi oletusasetuksiaan, yksinkertaisesti siksi, että vanhemmat Bitcoin Core -solmut ovat yleensä käytössä vuosia uusien versioiden jälkeen vapautettu.
Lisää tukea Compact Client-Side Block -suodatukselle
Vaihtoehto Bloom Filtersille on uudempi ratkaisu, jota kutsutaan pienikokoiseksi asiakaspuolen lohkosuodattimeksi (BIP 158). Pienikokoinen asiakaspuolen lohkosuodatus kääntää Bloom Filter -temppun päähänsä. Sen sijaan, että kevyet lompakot luovat suodattimia lähetettäväksi täydellisiin solmuihin, täydet solmut luovat suodattimet jokaiselle lohkolle. Kevyet asiakkaat voivat sitten käyttää näitä suodattimia selvittääkseen, ovatko heille olennaiset tapahtumat tapahtuneet lohkossa. Jos näin on, kevyt lompakko noutaa koko lohkon ja poimii siitä kaikki asiaankuuluvat tapahtumatiedot.
Bitcoin Core 0.19.0 jatkaa siirtymistä kohti kompaktia asiakaspuolen lohkosuodatusta. Bitcoin Core -solmut voisivat jo luoda suodattimet paikallisesti, mutta Bitcoin Core 0.19.0 -käyttäjät voivat nyt myös asettaa ne saataville etäproseduurikutsuilla (RPC) solmun päällä toimiville sovelluksille (kuten lompakolle).
Suodattimet eivät kuitenkaan ole vielä käytettävissä vertaisverkossa. Tämä tarkoittaa, että Bitcoin Core 0.19.0 -solmu ei automaattisesti lähetä suodattimia muiden Bitcoin-käyttäjien lompakkoihin. Tämä ominaisuus voidaan lisätä tulevaan Bitcoin Core -julkaisuun – tai Bitcoin Core 0.19.0 -käyttäjät voivat halutessaan tarjota ominaisuuden mukautetun sovelluksen kautta, joka toimii heidän Bitcoin Core -solmunsa päällä.
Maksuprotokollan tuki poistettu käytöstä käyttöliittymästä
Maksuprotokolla (BIP 70) on suunniteltu useita vuosia sitten parantamaan Bitcoinin maksukokemusta. Bitcoin-verkkoon lähetetyn tavallisen maksun lisäksi käyttäjä ja kauppias ilmoittavat lisätiedot maksusta, kuten ihmisen luettavissa olevan kohdeosoitteen (kauppiaan nimi) ja hyvitysosoitteen, jos jokin meni pieleen oston yhteydessä.
Vaikka Bitcoin Core integroi maksuprotokollan käyttöliittymäänsä, standardia ei koskaan käytetty laajalti. Sen sijaan useimmat lompakot käyttävät edelleen perustavaa URI-järjestelmää (BIP 21) maksujen vastaanottamiseksi: Napsautettava linkki tai skannattava QR-koodimuoto, joka esimerkiksi ilmoittaa maksuosoitteen ja summan. (Ainoa merkittävä poikkeus tänään on maksuprosessori BitPay, joka ei tue URI-järjestelmää, mutta käyttää BIP 70: n muokattua versiota.)
Ehkä tärkeämpää kuin hyväksymisen puute, BIP 70 -maksuprotokolla on kärsinyt useita tietoturva- ja tietosuojahaavoittuvuuksia vuosien saatossa. Jotkut lompakot ovat siis aktiivisesti hylätty protokollan toteuttamiseksi. Myös Bitcoin Core oli suunnitellut BIP 70: n vanhentamista jonkin aikaa, koska sen ylläpitoa ei pidetty ponnistelun arvoisena – mutta BitPayn käyttöönotto esti tämän prosessin.
Bitcoin Core 0.19.0 -käyttöjärjestelmässä BIP 70 on kuitenkin oletuksena poistettu käyttöliittymästä. Bitcoin Core 0.19.0 -käyttäjien olisi koottava solmunsa erityisellä kokoonpanolla voidakseen silti käyttää ominaisuutta.
Muu…
Edellä mainittujen muutosten lisäksi Bitcoin Core 0.19.0 sisältää pitkän luettelon pienemmistä parannuksista ja modernisoinneista.
Nyt on mahdollista käynnistää karsittu solmu esimerkiksi asennuksesta, jolloin käyttäjät, joilla on vähän levytilaa, voivat helposti käynnistää uuden Bitcoin-solmun. Bitcoin Core 0.19.0 sisältää myös uusia ominaisuuksia osittain allekirjoitetuille Bitcoin Transaction (PSBT) -protokollalle, joka on hyödyllinen moniallekirjoitusten ja CoinJoin-tapahtumien yhteydessä. Vastaavasti lompakkokuvaajien alueella on useita parannuksia, mikä on erityisen hyödyllistä ohjelmoijille, jotka työskentelevät Bitcoin-sovellusten parissa. Bitcoin Core 0.19.0 -solmut hyväksyvät ja välittävät myös tulevia SegWit-versioita käyttäviä tapahtumia varmistaakseen, että tulevat päivitykset etenevät sujuvasti.
Laajempi luettelo päivityksistä, katso myös Bitcoin Core 0.19.0.1 -julkaisutiedot.
Kiitos Sjors Provoostille palautteesta tästä artikkelista.