Danes, 24. novembra 2019, se uradno izda Bitcoin Core 0.19.0, 19. večja izdaja originalnega odjemalca programske opreme Bitcoin, ki jo je pred skoraj 11 leti začel Satoshi Nakamoto in še danes prevladujoča implementacija Bitcoina v omrežju. (Čeprav je zaradi težave, ki je prišla na dan v pozni fazi postopka izdaje Bitcoin Core 0.19.0, različica, objavljena za prenos, dejansko 0.19.0.1.) Bitcoin jedro vodilni vzdrževalec Wladimir van der Laan, je to zadnjo večjo izdajo v približno šestih mesecih razvilo več kot sto sodelavcev.

Rezultat 550 združenih zahtev za vlečenje Bitcoin Core 0.19.0 vključuje vrsto izboljšav zmogljivosti, posodobitev in popravkov napak ter druge spremembe.

Tu je pregled nekaterih teh sprememb.

Bech32 privzeto naslovi v GUI

Oblika naslova „bech32“ (BIP 173) je bil že uveden v Bitcoin Core 0.16.0, izdan v začetku leta 2018, zdaj pa je prvič nastavljen kot privzeta možnost v grafičnem uporabniškem vmesniku (GUI) denarnice Bitcoin Core.

Naslovi Bech32 so naslovi, ki se začnejo z “bc1” (v nasprotju z naslovi, ki se začnejo z 1 ali 3.). Ti naslovi so tudi nekoliko daljši, vendar uporabljajo manj različnih znakov kot trenutna oblika naslova, saj ni več razlike med malimi in velikimi črkami. (To zmanjšuje možnost človeških napak, na primer, ko se naslov bere naglas.) Naslovi Bech32 so zasnovani tudi tako, da omejujejo napake, ki jih povzročijo napačne napake.

Poleg tega bech32 ponuja ugodnosti v okviru SegWita. Nekatere denarnice, ki ponujajo SegWit – vključno z denarnico Bitcoin Core do zdaj privzeto – to storijo tako, da jo »zavijejo« v izhode P2SH (z naslovi, ki se začnejo s »3«). Če želite porabiti bitcoin s takšnega naslova, morajo uporabniki razkriti del kode – »skript za unovčenje« -, da dokažejo, da so bitcoin resnično zaprti v izhodu SegWit. Z novimi naslovi bech32 lahko ta korak preskočimo, kar pomeni, da bo poraba iz izhoda SegWit zahtevala, da se bo malo manj podatkov prenašalo po Bitcoin omrežju in vključevalo v verigo blokov. Zaradi tega so transakcije iz izhoda bech32 še cenejše od transakcij SegWit iz izhoda P2SH.

Ker vse Bitcoin denarnice še ne podpirajo pošiljanja na naslove bech32, bodo uporabniki Bitcoin Core 0.19.0 še vedno lahko po želji ustvarili naslov za prejem PS2H s pomočjo preklopa v GUI.

Dve odhodni povezavi samo za blok sta privzeto dodani

Bitcoin vozlišča se povežejo z več drugimi Bitcoin vozlišči in skupaj tvorijo omrežje peer-to-peer. V tem omrežju vozlišča delijo bloke, transakcije in nekatere dodatne podatke o transakcijah.

Toda omrežje enakovrednih omrežij je lahko predmet napadov, na primer “napadi na particioniranje”. Če napadalec nadzoruje dovolj veliko število Bitcoin vozlišč, lahko s prestrezanjem celotnega prometa na njem lahko “odreže” določene dele Bitcoin omrežja (ali celo določena vozlišča). Razdeljeni del mreže bi se lahko na primer prevaral, da bi sprejel manjšinsko verigo – ne najdaljšo verigo – kot veljavno, kar bi lahko odprlo vrata napadom z dvojno porabo.

Napadu na particioniranje se prepreči, če ima vozlišče v razdeljenem delu omrežja celo samo eno povezavo do poštenega vozlišča v glavnem omrežju. Nato bi prejel in posredoval vse transakcije in bloke ter zavrnil manjšinsko verigo v korist večinske verige.

Eden od načinov za uresničitev tega in za otežitev izvedbe napadov na razdelitev je, da vozlišča vzpostavijo več povezav med seboj. Več povezav ima več zahtev po pomnilniku in pasovni širini; pride do kompromisa.

Bitcoin Core 0.19.0 poveča privzeto vrednost za odhodne povezave za dva, toda – pametno – ti dve dodatni povezavi se uporabljata le za posredovanje blokov – ne posredujeta transakcij ali dodatnih podatkov o transakcijah. To minimalno poveča zahteve po dodani pasovni širini, hkrati pa otežuje uspešno izvedbo napadov na particioniranje.

Bloom filtri so zastareli

Bitcoin Core je izvedba celotnega vozlišča, kar pomeni, da prenaša in preverja vse Bitcoin bloke. Čeprav je to optimalno varno, ni zelo primerno za računalniške naprave z majhnimi viri, kot so mobilni telefoni. Mobilne denarnice (kot tudi nekatere namizne denarnice) so zato običajno „lahki odjemalci“: to so samo transakcije prenosa in (deli) blokov, ki jih posebej zadevajo..

Eden od načinov za to je Bloom Filters, ki jih danes uporablja nekaj denarnic. Skratka, Bloom Filters so kriptografski trik, s katerim lahki odjemalci zahtevajo ustrezne podatke iz bolj ali manj naključnih polnih vozlišč v omrežju. Žal pa je z leti postalo jasno, da so filtri Bloom precej neprijazni do zasebnosti: v bistvu razkrijejo vse svoje naslove na celotno vozlišče. Poleg tega pa podpiranje zahtev Bloom Filter stane tudi v CPU in na disku za polna vozlišča – brez neposredne koristi za samo celo vozlišče.

Zlasti zaradi zadnjega razloga Bitcoin Core 0.19.0 privzeto ne podpira več zahtev za Bloom Filter. Uporabniki lahko še vedno privzeto preklopijo na podporo Bloom Filters, če se tako odločijo.

Prav tako je treba omeniti, da bo Bitcoin omrežje kot celota skoraj zagotovo še naprej podpiralo Bloom Filters v prihodnjih letih, tudi če nihče ne bo zamenjal privzetih nastavitev, preprosto zato, ker so starejša vozlišča Bitcoin Core običajno v uporabi že leta po tem, ko nove različice izpuščeni.

Več podpore za kompaktno filtriranje blokov na strani odjemalca

Alternativa Bloom Filters je novejša rešitev, imenovana »kompaktno filtriranje blokov na strani odjemalca« (BIP 158). Kompaktno filtriranje blokov na strani odjemalca v bistvu spremeni trik Bloom Filter. Namesto da lahke denarnice ustvarjajo filtre za pošiljanje celotnim vozliščem, polna vozlišča ustvarijo filtre za vsak blok. Lahki odjemalci lahko nato s pomočjo teh filtrov ugotovijo, ali so se zanje pomembne transakcije morda zgodile v bloku. V tem primeru bo lahka denarnica prinesla celoten blok in iz njega izbrala vse ustrezne podatke o transakcijah.

Bitcoin Core 0.19.0 se še naprej usmerja k podpiranju kompaktnega filtriranja blokov na strani odjemalca. Vozlišča Bitcoin Core bi lahko filtre že ustvarila lokalno, vendar jih lahko uporabniki Bitcoin Core 0.19.0 zdaj omogočijo tudi prek oddaljenega klica postopka (RPC) za aplikacije, ki se izvajajo na vrhu vozlišča (kot je denarnica)..

Vendar filtri še niso na voljo v omrežju peer-to-peer. To pomeni, da vozlišče Bitcoin Core 0.19.0 ne bo samodejno pošiljalo filtrov v denarnice drugih uporabnikov Bitcoinov. To funkcijo bi lahko dodali v prihodnjo izdajo Bitcoin Core – ali pa bi se uporabniki Bitcoin Core 0.19.0 lahko odločili, da bodo funkcijo ponudili prek aplikacije po meri, ki se izvaja na vrhu njihovega vozlišča Bitcoin Core.

Podpora plačilnega protokola onemogočena iz GUI

Protokol o plačilu (BIP 70) je bil zasnovan pred nekaj leti za izboljšanje plačilne izkušnje Bitcoinov. Poleg rednega plačila, ki se predvaja v omrežju Bitcoin, bi uporabnik in trgovec sporočil še dodatne podrobnosti o plačilu, na primer razumljiv ciljni naslov (ime trgovca) in naslov za vračilo, če bi šlo kaj narobe. z nakupom.

Medtem ko je Bitcoin Core v svoj GUI vključil plačilni protokol, standard ni bil nikoli široko sprejet. Namesto tega večina denarnic še vedno uporablja bolj osnovno shemo URI (BIP 21) za prejemanje plačil: klikljiva povezava ali oblika QR-kode, ki jo je mogoče optično prebrati, ki na primer sporoča naslov in znesek plačila. (Edina pomembna izjema je danes plačilni procesor BitPay, ki ne podpira sheme URI, vendar uporablja spremenjeno različico BIP 70.)

Morda še pomembneje kot pomanjkanje sprejetja, trpi protokol o plačilih BIP 70 številne ranljivosti na področju varnosti in zasebnosti skozi leta. Nekatere denarnice torej aktivno delujejo zavrnjeno za izvajanje protokola. Tudi Bitcoin Core je že nekaj časa načrtoval opustitev BIP 70, saj se njegovo vzdrževanje ni zdelo vredno truda – vendar je sprejetje BitPay-a zaustavilo ta postopek.

V Bitcoin Core 0.19.0 je bil BIP 70 privzeto odstranjen iz GUI-ja. Uporabniki Bitcoin Core 0.19.0 bi morali svoje vozlišče sestaviti s posebno konfiguracijo, da bi funkcijo še vedno lahko uporabili.

Drugo …

Poleg zgoraj omenjenih sprememb ima Bitcoin Core 0.19.0 še dolg seznam manjših izboljšav in posodobitev. 

Zdaj je na primer mogoče takoj po namestitvi zagnati obrezano vozlišče, ki uporabnikom z malo prostora na disku omogoča enostavno zagon novega Bitcoin vozlišča. Bitcoin Core 0.19.0 vključuje tudi nove funkcije za protokol delno podpisanih bitcoin transakcij (PSBT), ki je uporaben za transakcije z več podpisi in CoinJoin. Prav tako obstaja več izboljšav na področju deskriptorjev denarnice, kar je še posebej koristno za programerje, ki delajo na Bitcoin aplikacijah. Vozlišča Bitcoin Core 0.19.0 bodo prav tako sprejemala in posredovala transakcije, ki uporabljajo prihodnjo različico SegWit, da se zagotovi, da bodo prihajajoče nadgradnje potekale nemoteno.

Za obsežnejši seznam nadgradenj glejte tudi Opombe ob izdaji Bitcoin Core 0.19.0.1.

Hvala Sjors Provoost za povratne informacije o tem članku.