I dag markeres den offisielle utgivelsen av Bitcoin Core 0.17.0, 17. generasjon av Bitcoins opprinnelige programvareklient lansert av Satoshi Nakamoto for snart 10 år siden, og fremdeles den dominerende Bitcoin-implementeringen på nettverket i dag. Overvåket av Bitcoin Core hovedansvarlig Wladimir van der Laan, ble denne siste store utgivelsen utviklet av rundt 135 bidragsytere over en periode på omtrent syv måneder..

Resultatet av godt over 700 sammenslåtte trekkforespørsler, Bitcoin Core 0.17.0 inkluderer en rekke ytelsesforbedringer og feilrettinger, samt andre endringer.

Her er en oversikt over noen av disse endringene.

Forbedret valget av mynter

Mynter i en lommebok lagres effektivt som separate biter (“transaksjonsutganger”). Det er vanligvis en del for hver mottatt betaling; derfor representerer de fleste biter forskjellige mengder. Når en betaling gjøres fra en lommebok, legges forskjellige biter sammen for å utgjøre et beløp som er stort nok til å utføre betalingen, pluss avgiften. De forskjellige biter legger ofte ikke opp til det nøyaktige beløpet som trengs, men i så fall blir det lagt til en “endringsadresse” i transaksjonen, noe som sender gjenværende midler tilbake til samme lommebok..

Fram til nå la Bitcoin Core-lommeboken forskjellige biter sammen. Først da ville det beregne og legge til gebyret som kreves for å betale for transaksjonen. Men i noen tilfeller førte gebyret til transaksjonen til at de tilførte bitene ikke lenger utgjorde et stort nok beløp, i så fall måtte en ekstra del inkluderes.

Bitcoin Core 0.17.0 introduserer “Branch and Bound” -algoritmen designet av BitGo ingeniør Mark Erhardt. Dette gir to konkrete forbedringer. Først beregnes avgiften for hver del før den er valgt for å være en del av en transaksjon for å unngå at nye biter må legges til senere. For det andre prøver algoritmen å matche forskjellige biter, slik at de legger opp til den nøyaktige mengden som trengs, og unngår behovet for “endre adresser” (der den resterende “endringen” blir sendt) der det er mulig. (Store lommebøker med mange biter, som de som drives av sentraler eller andre enheter med høy trafikk, trenger mindre sannsynlighet for å bytte adresse enn andre lommebøker.)

I tillegg inkluderer myntvalgalgoritmen i Bitcoin Core 0.17.0 en valgfri forbedring av personvernet.

Selv om det er i mot beste praksis, er det mulig å motta flere betalinger til samme Bitcoin-adresse. (Dette skjer for eksempel mye med donasjonsadresser.) Gjenbruk av adresser er dårlig for personvernet i seg selv, da det er åpenbart at alle myntene på den adressen og alle betalinger fra den adressen er fra samme bruker. Men det er enda verre når de forskjellige biter som er knyttet til samme adresse, brukes i forskjellige transaksjoner, og knytter dem til biter som ikke opprinnelig var tilknyttet den adressen..

For å løse dette siste problemet, gir Bitcoin Core 0.17.0 brukere muligheten til å prioritere å legge til biter bundet til samme adresse sammen i en transaksjon og å la andre biter være utenfor transaksjonen der det er mulig.

Det er enkelt å lage og bruke nye lommebøker

Siden Bitcoin Core 0.15.0 har det vært mulig å lage flere lommebøker som fungerer uavhengig av hverandre. Disse lommebøkene har alle sine egne Bitcoin-adresser, private nøkler og derfor midler. Brukere kan bruke de forskjellige lommebøkene til forskjellige formål; for eksempel kan en lommebok brukes til personlige daglige kjøp, en annen for forretningsrelaterte transaksjoner og en tredje bare for handel. Dette kan gjøre regnskap enklere og mer praktisk, og brukere kan lettere dra nytte av økt personvern, da de forskjellige lommebøkene ikke kan knyttes til hverandre ved blockchain-analyse..

Inntil nå kunne imidlertid nye lommebøker bare opprettes når noden startes, og den var ikke tilgjengelig for brukere av Bitcoin Core lommebok (GUI). Begge disse begrensningene er nå løst. Bitcoin Core 0.17.0 lar brukerne lage nye lommebøker når de vil, og den tilbyr denne funksjonen i GUI.

Som en ekstra fordel introduserer Bitcoin Core 0.17.0 en funksjon kalt “Scantxoutset.” Dette lar brukerne raskt bekrefte om deres nye lommebok allerede inneholder mynter (for eksempel fordi de private nøklene importeres fra en annen lommebok) ved å sjekke det ubrukte transaksjonsutgangssettet (UTXO), i stedet for å skanne hele transaksjonshistorikken på nytt..

Ikke-HD til HD Wallet-oppgradering

Mens Bitcoin Core-versjoner eldre enn 0.13.0 fremdeles krevde brukere å sikkerhetskopiere alle sine private nøkler, har alle Bitcoin Core-versjoner siden tilbudt Hierarkical Deterministic (HD) lommebøker i stedet. Brukere av HD-lommebok trenger bare å lagre en frøsetning (en ordliste) som en sikkerhetskopi.

Imidlertid Bitcoin Core-brukere som oppgradert systemet deres til Bitcoin Core 0.13.0 og nyere kunne ikke lage nye HD-lommebøker. En inkompatibilitet mellom ikke-HD-lommebøker og HD-lommebøker betydde at disse brukerne fortsatt satt fast med å sikkerhetskopiere alle sine private nøkler.

Bitcoin Core 0.17.0 lar nå også disse brukerne oppgradere til HD-format. I tillegg kan brukere av Bitcoin Core-lommebøker som allerede har HD-lommebøker, velge å generere eller importere et nytt HD-frø.

Watch Only – Only Wallets

Bitcoin-lommebøker lagrer vanligvis private nøkler, som lar brukerne bruke myntene sine. Men Bitcoin Core har også støttet “Watch Only” -adresser i noen tid nå. De private nøklene til disse adressene er ikke lagret i lommeboken, men mynter festet til disse adressene er fremdeles synlige i lommeboken. Dette lar brukerne enkelt akseptere betalinger og holde rede på pengene sine mens de for eksempel lagrer private nøkler offline.

Bitcoin Core 0.17.0 tar dette konseptet et skritt videre og lar brukerne lage spesifikke Watch Only-lommebøker der hver adresse er en Watch Only-adresse. Som et konkret eksempel vil dette gjøre det lettere å bruke Bitcoin Core for å holde oversikt over midler i en maskinvarepungebok eller på en papirlommebok i form av et HD-frø.

Delvis signerte Bitcoin-transaksjoner

Mens mange transaksjoner er greie – en bruker betaler en annen – tillater Bitcoin også mer komplekse typer transaksjoner. Disse inkluderer for eksempel multisignature (multisig) transaksjoner der flere brukere må logge av ved å sende midler, samt personvernforbedrende CoinJoin-transaksjoner der forskjellige brukere slår sammen sine uavhengige transaksjoner til en stor transaksjon.

For bedre å tilrettelegge for disse typer transaksjoner introduserer Bitcoin Core 0.17.0 BIP 174 Delvis signert Bitcoin Transaction (PSBT) rammeverk, designet av Andrew Chow. Dette rammeverket lar Bitcoin Core-brukere signere en transaksjon delvis, men legger også til metadata til en slik delvis signert transaksjon. Disse metadataene kan brukes av noen andre til å fullføre transaksjonen.

PSBT vil være spesielt nyttig hvis standarden blir vedtatt av andre lommebøker. Som en potensiell brukssak kan det for eksempel la en bruker beskytte midlene sine ved å låse dem inn i en multisig-konto der en transaksjon vil kreve en signatur opprettet fra Bitcoin Core-lommeboken, samt en signatur fra en maskinvarebok. Eller det kan la Bitcoin Core-brukere delta i CoinJoin-ordninger med (andre) personvernbevarende lommebokbrukere.

For nå er den delvis signerte transaksjonsfunksjonen bare for brukere som driver Bitcoin Core fra kommandolinjen eller gjennom tilkoblede applikasjoner.

Beskjæring fra brukergrensesnittet

Lagring av alle (on-chain) Bitcoin-transaksjoner som noen gang har skjedd, og Bitcoin-blockchain er for tiden godt over 180 gigabyte og vokser hver dag. Nye Bitcoin Core-brukere må laste ned og validere alle disse dataene.

Takket være et triks kalt “blockchain beskjæring” trenger disse brukerne imidlertid ikke nødvendigvis å lagre all denne dataen. I beskjæringsmodus vil noder automatisk glemme eldre transaksjonsdata og beholde bare det som er nødvendig for å fungere sikkert. Inntil nå kunne beskjæringsmodus bare aktiveres via kommandolinjen.

For første gang tilbyr Bitcoin Core 0.17.0 en praktisk GUI-bryter for å aktivere beskjæring fra lommeboken, noe som gjør den mer tilgjengelig for uformelle, ikke-tekniske Bitcoin-brukere som ønsker å kjøre en full node for optimal sikkerhet.

For mer informasjon om hva som er nytt i denne siste versjonen av Bitcoin Core, se Utgivelsesmerknader for Bitcoin Core 0.17.0 eller se på Chaincode Labs ingeniør og Bitcoin Core-bidragsyter John Newberry’s presentasjon på London Bitcoin Devs Meetup.