I dag markerer den officielle frigivelse af Bitcoin Core 0.21.0, den 21. største udgivelse af Bitcoins originale softwareklient, der blev lanceret af Satoshi Nakamoto for ca. 12 år siden.
Overvåget af Bitcoin Core hovedopretholder Wladimir van der Laan, blev denne seneste store frigivelse udviklet af godt hundrede bidragydere i løbet af cirka seks måneder. Resultatet af over 600 fusionerede pullanmodninger, Bitcoin Core 0.21.0 er en af de største Bitcoin Core-udgivelser i de senere år, der introducerer forskellige nye funktioner samt forbedringer af privatlivets fred og ydeevne, samtidig med at man tager et stort skridt mod opgraderingen af Schnorr / Taproot-protokollen..
Nedenfor er nogle af de mere bemærkelsesværdige ændringer.
Descriptor tegnebøger
Når mønter sendes til en Bitcoin-adresse, hvad der faktisk sker under emhætten er, at de er “låst” i en ubrugt transaktionsoutput (UTXO) for kun at være “låst op” (brugt) i en senere transaktion, hvis betingelserne er skjult i UTXO er opfyldt. En typisk betingelse er inkluderingen af en gyldig signatur svarende til en bestemt offentlig nøgle. Men forhold kan f.eks. Også bestå af medtagelse af en hemmelig kode, bortfald af en timelås eller en kombination af signaturer (multisig).
Indtil nu var Bitcoin Core designet til at styre UTXO’erne i sin tegnebog omkring deres tilsvarende private nøgler – selvom private nøgler kun er en af flere potentielle betingelser for at bruge mønter. Bitcoin Core 0.21.0 introducerer i stedet “deskriptor wallets.” Descriptor-tegnebøger giver brugerne mulighed for at kategorisere deres UTXO’er baseret på de typer betingelser, der kræves for at bruge dem. (For eksempel: en tegnebog til UTXO’er, der bare kræver en gyldig signatur, og en tegnebog til multisig UTXO’er.)
Descriptor-tegnebøger er især nyttige for applikationsudviklere, der designer software oven på Bitcoin Core. En bestemt applikation kan nu let designes til kun at bruge en bestemt type UTXO, som multisig UTXO’er, og ignorere alle ikke-multisig UTXO’er.
Almindelige brugere kan også bemærke en forskel nu, når deskriptor-tegnebøger er implementeret. Måske især, oprettes der ingen standard tegnebog, når en ny Bitcoin Core-node startes. I stedet oprettes en ny tegnebog kun, når en bruger specifikt vælger at gøre det, så de kun kan oprette den specifikt ønskede type tegnebog. Descriptor-tegnebøger understøtter også bedre Watch Only-tegnebøger: tegnebøger, der holder styr på visse UTXO’er, selvom noden ikke har de private nøgler, der er nødvendige for at bruge dem.
Bitcoin Core-brugere, der opgraderer til Bitcoin Core 0.21.0, kan stadig bruge deres ældre tegnebog indtil videre. (Ældre tegnebøger bliver til sidst udfaset, hvilket betyder, at brugerne bliver nødt til at migrere deres ældre tegnebog til en deskriptor-tegnebog, men dette er ikke strengt nødvendigt før en fremtidig Bitcoin Core-frigivelse.)
Servering af kompakte blokfiltre over peer-to-peer-netværket
“Lette klienter” er Bitcoin-tegnebøger og applikationer, der ikke downloader og validerer hele Bitcoin-blockchain, men i stedet kun downloader og validerer dele af blokke og transaktioner, der specifikt vedrører dem. Dette er ikke optimalt sikkert, men er meget mindre ressourceintensivt.
En populær måde at gøre dette på er med Bloom Filters. Kort sagt er Bloom Filters et kryptografisk trick til at anmode om relevante data fra mere eller mindre tilfældige peer-noder på netværket. Desværre er det dog gennem årene blevet klart, at Bloom Filters er temmelig uvenlige med privatlivets fred: De afslører i det væsentlige alle brugerens adresser til (mere eller mindre tilfældig) peer-node, som naturligvis kunne betjenes af en privatlivsinvaderende snok.
Et nyere og meget mere fortroligt bevarende alternativ til Bloom Filter-løsningen kaldes “kompakt klientsides blokfiltrering” (BIP 157/158). Kompakt blokfiltrering på klientsiden vender i det væsentlige Bloom Filter-tricket på hovedet. I stedet for at lette tegnebøger opretter filtre til at sende til fulde noder, opretter fulde noder filtre til hver blok og sender disse til lette klienter efter anmodning. Lette klienter bruger derefter disse filtre til at finde ud af, om transaktioner, der er relevante for dem, muligvis er inkluderet i en blok. I så fald vil den lette tegnebog hente hele blokken og vælge relevante transaktionsdata ud af den. (Der vil være nogle falske positive; blokke, der ikke har relevante transaktionsdata, selvom filteret foreslog, at de måske.)
Eksisterende Bitcoin Core-udgivelser kunne allerede oprette filtre lokalt og gøre dem tilgængelige gennem et RPC (Remote Procedure Call) til applikationer, der kører oven på noden (som tegnebøger). Bitcoin Core 0.21.0 inkluderer nu også muligheden for at gøre disse filtre tilgængelige over Bitcoins peer-to-peer-netværk efter anmodning. Dette gør det muligt at nu betjene enkeltstående lysklienter, der bruger blomstringsfiltre.
Færre forsøg på genudsendelse
Udover Bloom Filters kan snoops også bryde privatlivets fred for Bitcoin-brugere gennem netværksanalyse. Hvis de kan finde ud af, hvilken knude en bestemt transaktion stammer fra, kan knudens Bitcoin-adresse (r) knyttes til dens IP-adresse, som igen kan tilknyttes en reel identitet.
Indtil nu, da Bitcoin Core-noder udsendte en transaktion til Bitcoin-netværket, ville de forsøge at udsende transaktionen igen hvert 15. minut, indtil transaktionen var inkluderet i en blok. Dette betød, at hvis disse Bitcoin Core-noder var forbundet til en snooping-peer, ville det være indlysende for snoopet, at Bitcoin Core-noden, der forsøgte at genudsende en bestemt transaktion hvert 15. minut, også var den node, hvor transaktionen stammer fra.
Bitcoin Core 0.21.0 mindsker i høj grad frekvensen, hvormed den forsøger at genudsende transaktioner: kun en gang hver 12. til 36. time. At skulle udsende mindre hyppigt gør det meget mere sandsynligt, at transaktionen er blevet bekræftet siden den første udsendelse, så det er mindre sandsynligt, at noden overhovedet bliver nødt til at udsende igen.
I fremtidige Bitcoin Core-udgivelser vil denne privatlivslækage blive løst fuldstændigt. En Bitcoin Core-node udsender derefter kun transaktioner, der burde have været bekræftet baseret på dens egne mempool- og gebyrberegninger. Desuden udsender den også andre transaktioner, ikke kun dens egne.
Tor V3 support
På grund af en nylig opgradering af den fortrolighedsbeskyttende Tor-protokol er nye V3 (version 3) Tor-adresser længere end de V2 (version 2) adresser, der kom før dem. V2-adresser er stadig i brug, men afvikles om et år fra nu.
Afvikling af V2-adresser ville have udgjort et problem for Bitcoin Core-brugere, der ønsker at bruge Bitcoin over privatlivsnetværket. Bitcoin Core-noder finder jævnaldrende ved at dele med hinanden Tor-adresser på kendte Tor-bruger Bitcoin-noder. De delte dette gennem den samme besked, som de bruger til at dele andre nodes almindelige IP-adresser. Mens Tor V2-adresser kunne være “skjult” i det almindelige IP-adresseformat (IPV6), er Tor V3-adresserne for lange til det; med andre ord, de aktuelle meddelelser er for begrænsede til at være kompatible med Tor-opgraderingen.
Bitcoin Core 0.21.0 introducerer derfor et nyt format til deling af IP / Tor-adresser med jævnaldrende. Disse meddelelser kan være store nok til at dele Tor V3-adresserne.
Schnorr / Taproot-kode og Signet / Regtest-implementering
Schnorr / Taproot er klar til at være Bitcoins første protokolopgradering siden Segregated Witness (SegWit) i august 2017. Efter at have været under udvikling i godt over to år betragtes Schnorr-signaturalgoritmen som en alsidig forbedring i forhold til Bitcoins nuværende ECDSA-signaturalgoritme. I kombination med Taproot – et smart trick til at skjule forskellige betingelser for at bruge mønter i et kryptografisk hash-træ – opgraderingen lover at tilbyde mere smart kontraktfleksibilitet på en skalerbar og privatlivsbevarende måde.
Schnorr / Taproot-koden er nu inkluderet i Bitcoin Core 0.21.0. Udelukkende uventet udvikling betyder det, at det ikke vil blive ændret mere, hvilket f.eks. Betyder, at applikationsudviklere kan begynde at designe software omkring opgraderingen. Derudover er Schnorr / Taproot nu tilgængelig på Signet (en nyere og mere pålidelig variant af testnet, der bruges af udviklere til at teste ny Bitcoin-software) og potentielt også på Regtests (yderligere lokale testnetvarianter).
Schnorr / Taproot vil dog ikke være tilgængelig på Bitcoins mainnet endnu. Til dette skal opgraderingen først aktiveres, hvilket kræver aktiveringslogik, der endnu ikke er inkluderet i denne Bitcoin Core-udgivelse. Aktiveringslogik forventes at blive inkluderet i en mindre Bitcoin Core-udgivelse, muligvis et eller andet sted i de næste måneder.
Andet…
Ud over ovenstående ændringer inkluderer Bitcoin Core 0.21.0 forskellige fejlrettelser og forbedringer af ydeevnen, der ikke vil være så tydelige for almindelige brugere. Bitcoin Core-tegnebogen skifter for eksempel fra at bruge Berkeley DB til SQLite-databasen, som er bedre egnet som en applikationsdatafil og giver flere garantier med hensyn til kompatibilitet, support og test. Af interesse er også, at Bitcoin Core 0.21.0 inkluderer en revision af transaktionsanmodninger: den nye beskedprotokol, som Bitcoin-noder bruger til at lære om nye transaktioner, er bedre testet, bedre specificeret og lettere at vedligeholde og gennemgå.
For en mere omfattende liste over opgraderinger, se også Udgivelsesnoter for Bitcoin Core 0.21.0, eller se dette blogindlæg af Bitcoin Core-bidragyder Andrew Chow for en mere omfattende forklaring af deskriptor-tegnebøger (såvel som ældre tegnebøger) og SQLite (såvel som Berkeley DB).
Tak til John Newbery for information og feedback.