Idag markeras den officiella utgåvan av Bitcoin Core 0.17.0, den 17: e generationen av Bitcoins ursprungliga mjukvaruklient som lanserades av Satoshi Nakamoto för nästan 10 år sedan och fortfarande den dominerande Bitcoin-implementeringen i nätverket idag. Övervakad av Bitcoin Core ledande underhållare Wladimir van der Laan, den senaste stora utgåvan utvecklades av cirka 135 bidragsgivare under en period av cirka sju månader.
Resultatet av över 700 sammanslagna dragförfrågningar, Bitcoin Core 0.17.0 inkluderar en rad prestandaförbättringar och buggfixar, liksom andra ändringar.
Här är en översikt över några av dessa förändringar.
Förbättrat val av mynt
Mynt i en plånbok lagras effektivt som separata bitar (“transaktionsutgångar”). Det finns vanligtvis en bit för varje mottagen betalning; därför representerar de flesta bitar olika mängder. När en betalning görs från en plånbok läggs olika bitar samman för att utgöra ett belopp som är tillräckligt stort för att göra betalningen plus avgiften. De olika bitarna uppgår ofta inte till det exakta belopp som behövs, men i så fall läggs en “ändra adress” till transaktionen, vilket skickar återstående medel tillbaka till samma plånbok.
Hittills har Bitcoin Core-plånboken lagt till olika bitar tillsammans. Först då skulle den beräkna och lägga till den avgift som krävs för att betala för transaktionen. Men i vissa fall innebar att tilläggsavgiften till transaktionen innebar att de tillagda bitarna inte längre utgjorde en tillräckligt stor mängd, i vilket fall ytterligare en bit fick inkluderas.
Bitcoin Core 0.17.0 introducerar “Branch and Bound” -algoritmen designad av BitGo ingenjör Mark Erhardt. Detta erbjuder två konkreta förbättringar. Först beräknas avgiften för varje bit innan den väljs som en del av en transaktion för att undvika att nya bitar måste läggas till senare. För det andra försöker algoritmen att matcha olika bitar så att de summerar den exakta mängden som behövs, och undviker behovet av “byta adresser” (där den kvarvarande “bytet” skickas) där det är möjligt. (Stora plånböcker med massor av bitar, som de som drivs av växlar eller andra enheter med hög trafik, är mindre benägna att behöva byta adresser än andra plånböcker.)
Dessutom innehåller myntvalalgoritmen i Bitcoin Core 0.17.0 en valfri förbättring av integriteten.
Även om det strider mot bästa praxis är det möjligt att få flera betalningar till samma Bitcoin-adress. (Detta händer till exempel mycket med donationsadresser.) Återanvändning av adresser är dåligt för integriteten i sig eftersom det är uppenbart att alla mynt på den adressen och alla betalningar som görs från den adressen kommer från samma användare. Men det är ännu värre när de olika bitarna som är knutna till samma adress används i olika transaktioner, och länkar dem till bitar som ursprungligen inte var associerade med den adressen.
För att åtgärda detta sista problem ger Bitcoin Core 0.17.0 användarna möjlighet att prioritera att lägga till bitar som är bundna till samma adress tillsammans i en transaktion och att lämna andra bitar utanför transaktionen där det är möjligt.
Skapa enkelt och använd nya plånböcker
Sedan Bitcoin Core 0.15.0 har det varit möjligt att skapa flera plånböcker som fungerar oberoende av varandra. Dessa plånböcker har alla sina egna separata Bitcoin-adresser, privata nycklar och därför pengar. Användare kan använda de olika plånböckerna för olika ändamål; Till exempel kan en plånbok användas för personliga dagliga köp, en annan för affärsrelaterade transaktioner och en tredje bara för handel. Detta kan göra bokföring enklare och bekvämare, och användare kan lättare dra nytta av ökad integritet eftersom de olika plånböckerna inte kan länkas till varandra genom blockchain-analys..
Fram till nu kunde dock nya plånböcker bara skapas när noden startades, och den var inte tillgänglig för Bitcoin Core-plånbok (GUI) -användare. Båda dessa begränsningar är nu lösta. Bitcoin Core 0.17.0 låter användare skapa nya plånböcker närhelst de vill, och den erbjuder den här funktionen i GUI.
Som en extra fördel introducerar Bitcoin Core 0.17.0 en funktion som heter “Scantxoutset.” Detta låter användarna snabbt verifiera om deras nya plånbok redan innehåller mynt (till exempel eftersom de privata nycklarna importeras från en annan plånbok) genom att kontrollera den outnyttjade transaktionsutmatningsuppsättningen (UTXO), istället för att genomsöka hela transaktionshistoriken.
Icke-HD till HD Wallet Upgrade
Medan Bitcoin Core-versioner äldre än 0.13.0 fortfarande krävde att användare säkerhetskopierade alla sina privata nycklar, har alla Bitcoin Core-versioner sedan erbjudit hierarkiska deterministiska (HD) plånböcker istället. Användare av HD-plånbok behöver bara lagra en frasfras (en lista med ord) som säkerhetskopia.
Men Bitcoin Core-användare som uppgraderad deras system till Bitcoin Core 0.13.0 och nyare kunde inte skapa nya HD-plånböcker. En inkompatibilitet mellan icke-HD-plånböcker och HD-plånböcker innebar att dessa användare fortfarande fastnade med säkerhetskopiering av alla sina privata nycklar.
Bitcoin Core 0.17.0 låter nu dessa användare också uppgradera till HD-format. Dessutom kan Bitcoin Core-plånbokanvändare som redan har HD-plånböcker nu välja att generera eller importera ett nytt HD-frö.
Watch Only – Only Wallets
Bitcoin-plånböcker lagrar vanligtvis privata nycklar, som tillåter användare att spendera sina mynt. Men Bitcoin Core har också stött “Watch Only” -adresser under en tid nu. De privata nycklarna till dessa adresser lagras inte i plånboken, men mynt kopplade till dessa adresser syns fortfarande i plånboken. Detta gör det möjligt för användare att enkelt acceptera betalningar och hålla koll på sina pengar medan de till exempel lagrar sina privata nycklar offline.
Bitcoin Core 0.17.0 tar detta koncept ett steg längre och låter användare skapa specifika Watch Only-plånböcker där varje adress är en Watch Only-adress. Som ett konkret exempel kommer detta att göra det lättare att använda Bitcoin Core för att hålla reda på medel i en hårdvaruplånbok eller på en pappersplånbok i form av ett HD-frö.
Delvis undertecknade Bitcoin-transaktioner
Medan många transaktioner är enkla – en användare betalar en annan – möjliggör Bitcoin också mer komplexa typer av transaktioner. Dessa inkluderar till exempel multisignature (multisig) -transaktioner där flera användare behöver logga ut för att skicka pengar, samt sekretessförbättrande CoinJoin-transaktioner där olika användare slår samman sina oberoende transaktioner till en stor transaktion.
För att bättre underlätta dessa typer av transaktioner introducerar Bitcoin Core 0.17.0 BIP 174 Delvis undertecknad ram för Bitcoin Transaction (PSBT), designad av Andrew Chow. Detta ramverk låter Bitcoin Core-användare underteckna en transaktion delvis, men lägger också till metadata till en sådan delvis signerad transaktion. Denna metadata kan användas av någon annan för att slutföra transaktionen.
PSBT kommer att vara särskilt användbart om standarden antas av andra plånböcker. Som ett potentiellt användningsfall kan det till exempel låta en användare skydda sina medel genom att låsa dem till ett multisig-konto där en transaktion kräver en signatur skapad från Bitcoin Core-plånboken, samt en signatur från en hårdvaruplånbok. Eller så kan Bitcoin Core-användare delta i CoinJoin-system med (andra) sekretessbevarande plånbokanvändare.
För närvarande är den delvis undertecknade transaktionsfunktionen endast för användare som driver Bitcoin Core från kommandoraden eller via anslutna applikationer.
Beskärning från användargränssnittet
Lagring av alla (on-chain) Bitcoin-transaktioner som någonsin har hänt, Bitcoin-blockchain är för närvarande över 180 gigabyte och växer varje dag. Nya användare av Bitcoin Core måste ladda ner och validera all denna information.
Tack vare ett trick som kallas “blockchain beskärning” behöver dessa användare inte nödvändigtvis lagra all denna information. I beskärningsläget glömmer noder automatiskt äldre transaktionsdata och behåller bara det som är nödvändigt för att fungera säkert. Hittills kan beskärningsläget endast aktiveras via kommandoraden.
För första gången erbjuder Bitcoin Core 0.17.0 en praktisk GUI-växling för att möjliggöra beskärning från plånboken, vilket gör den mer tillgänglig för avslappnade, icke-tekniska Bitcoin-användare som vill köra en fullständig nod för optimal säkerhet.
Mer information om vad som är nytt i den senaste versionen av Bitcoin Core finns i Versionsnoteringar för Bitcoin Core 0.17.0 eller titta Chaincode Labs ingenjör och Bitcoin Core-bidragsgivare John Newberry presentation vid London Bitcoin Devs Meetup.