Idag markeras den officiella utgåvan av Bitcoin Core 0.20.0, den 20: e stora utgåvan av Bitcoins ursprungliga programvaruklient som lanserades av Satoshi Nakamoto för över 11 år sedan.
Övervakad av Bitcoin Core ledande underhållare Wladimir van der Laan, den här senaste stora utgåvan utvecklades av över 100 bidragsgivare på cirka sex månader. Resultatet av mer än 500 sammanslagna dragförfrågningar, Bitcoin Core 0.20.0 rensar mestadels upp och hårdnar Bitcoin Core-kodbasen, utvecklar integrationen av hårdvaruplånboken, förbättrar nätverkssäkerheten och innehåller flera andra förbättringar.
Här är några av de mer anmärkningsvärda förändringarna.
Ytterligare integrering av maskinvaruplånbok i GUI
Bitcoin Core har varit kompatibelt med hårdvaruplånböcker sedan version 0.18.0. Användare kan dock ännu inte göra transaktioner med en hårdvaruplånbok från Bitcoin Cores grafiska användargränssnitt (GUI); de måste istället använda kommandoradsgränssnittet (CLI) för att göra det.
Bitcoin Core 0.20.0 tar ett steg mot integrering av hårdvaruplånbok i GUI. Användare kan nu skapa en transaktion utan signatur i Bitcoin Core GUI med hjälp av PSBT-formatet (delvis signerad bitcoin-transaktion) och kopiera den till sitt urklipp. När de har kopierats kan de överföra transaktionen till sin hårdvaruplånbok för att underteckna den – den här överföringen är dock ännu inte automatiserad och för att sända transaktionen krävs fortfarande att CLI används.
Framtida Bitcoin Core-utgåvor kommer att fortsätta att främja integrering av hårdvaruplånbok.
Asmap för mer tillförlitlig nätverksanslutning
Bitcoin Core ansluter till flera kollegor (andra Bitcoin-noder) i Bitcoin-nätverket. Bitcoin Core kartlägger andra noder baserat på deras IP-adresser, med avsikt att upprätta förbindelser med kamrater från olika regioner och Internetleverantörer (ISP). Om en nod tar emot block och transaktioner från kamrater som finns över hela världen minskar risken att vissa data (som en specifik transaktion) hålls kvar.
Bitcoin Core kartlägger för närvarande IP-adresser efter Nätverksoperatörsgrupper. Flera av dessa grupper är dock faktiskt en del av samma Autonoma systemet (AS): kluster av nätverksoperatörsgrupper som delar viktiga internetvägar och därför potentiellt delar samma routingflaskhalsar där data potentiellt kan filtreras.
Bitcoin Core 0.20.0 innehåller ett nytt konfigurationsalternativ som heter Asmap, som kartlägger IP-adresser med autonoma systemnummer (ASN). Detta säkerställer att noden ansluter till kamrater från en rad olika AS, vilket minskar potentiella nätverksflaskhalsar, vilket ytterligare begränsar risken för att specifika data hålls kvar. (Mappning av IP-adresser i nätverksoperatörsgrupper är dock fortfarande standardkonfigurationen.)
Ta bort BIP61 Avvisa meddelanden
Avvisa meddelanden (BIP61) är meddelanden som en nod returnerar när en transaktion som den mottagit från en kollega avvisas och varför. (Kanske för att transaktionen är ogiltig, kanske för att den inte innehåller tillräcklig avgift, kanske det finns en annan anledning till avslaget.)
Bitcoin Core-utvecklare anser dock att avvisningsmeddelanden inte är mycket användbara. Det viktigaste är att kamrater inte ska antas att på ett tillförlitligt sätt returnera ett avvisningsmeddelande. Med andra ord, om en nod inte tar emot ett avvisningsmeddelande betyder det inte nödvändigtvis att transaktionen accepterades. Detta begränsar användbarheten av meddelandena, medan det finns bättre lösningar för att kontrollera att en transaktion är giltig och innehåller tillräckligt med avgifter. Under tiden gjorde meddelandena peer-to-peer-protokollet mer komplicerat och tog upp bandbredd.
BIP61 Avvisa meddelanden hade därför redan inaktiverats i Bitcoin Core 0.18.0. Bitcoin 0.20.0 har nu tagit bort funktionen helt.
Borttagning av BIP70 Payment Protocol (och OpenSSL)
Betalningsprotokollet (BIP 70) designades för flera år sedan för att förbättra Bitcoins betalningsupplevelse. En användare och en säljare kan kommunicera ytterligare information om en betalning, till exempel en läsbar destinationsadress (namnet på säljaren) och en återbetalningsadress om något skulle gå fel med köpet.
Medan Bitcoin Core integrerade betalningsprotokollet antogs standarden aldrig allmänt. Istället använder de flesta plånböcker fortfarande det mer grundläggande URI-schemat (BIP21): Den klickbara länken eller det skannbara QR-kodformatet som till exempel kommunicerar betalningsadress och belopp.
Kanske viktigare än bristen på antagande led BIP70 Payment Protocol ett antal säkerhets- och sekretesssårbarheter över åren. Framför allt krävde dess beroende av OpenSSL-programvarubiblioteket för kryptografiska funktioner en serie kortvariga nöduppgraderingar. Vissa Bitcoin-plånböcker har av dessa skäl, avvisade implementera BIP70 helt och hållet.
Bitcoin Core 0.19.0 tog bort betalningsprotokollet från GUI, men användare kunde fortfarande kompilera sin nod med en speciell konfiguration för att använda funktionen. Bitcoin Core 0.20.0 har nu helt tagit bort betalningsprotokollet.
Med BIP70 borta (och några andra programvarujusteringar för att ta bort beroendet) har Bitcoin Core också kunnat ta bort OpenSSL helt från sitt kodfall.
Dumptxoutset som ett första steg mot Assumeutxo för snabb bootstrapping
Ett nytt fjärrproceduranrop (RPC) låter Bitcoin Core 0.20.0 generera en ögonblicksbild av UTXO-uppsättningen, vilket återspeglar tillståndet för Bitcoin-ägande som registrerats i blockkedjan vid en viss tidpunkt (blockhöjd). Denna ögonblicksbild kan delas.
Framtida Bitcoin Core-utgåvor kommer att dela en sådan ögonblicksbild när kamrater först ansluter sig till nätverket. Detta gör det möjligt för de nya noderna att omedelbart börja delta i nätverket från den tidpunkt då ögonblicksbilden gjordes, medan hela blockchain-historiken kontrolleras i bakgrunden. (Liksom Assumevalid, en liknande genväg, kommer Assumeutxo med förtroendeavvägningar innan hela blockchain kontrolleras, och bör tills dess användas med dessa avvägningar i åtanke.)
För en mer omfattande lista över uppgraderingar, se även Versionsnoteringar för Bitcoin Core 0.20.0.
Tack till Sjors Provoost för information och feedback.