Idag markeras den officiella lanseringen av Bitcoin Core 0.14.0, den fjortonde generationen av Bitcoins ursprungliga programvaruklient som lanserades av Satoshi Nakamoto för åtta år sedan. Övervakad av Bitcoin Core huvudansvarig Wladimir van der Laan, den här senaste stora utgåvan utvecklades av nästan 100 bidragsgivare under en sexmånadersperiod.
Bitcoin Core 0.14.0 innehåller en betydande lista över förbättringar. Jämfört med vissa tidigare utgåvor gäller dock de flesta av dessa “internt” i programvaran: prestandaförbättringar som sker under huven men kanske inte är särskilt märkbara för vardagliga användare.
Som sagt, här är några av de mer anmärkningsvärda förändringarna.
“Assumevalid” -block
När en ny nod startar om i nätverket synkroniserar den hela blockchain. Den hämtar och verifierar alla block som någonsin bryts ut och verifierar alla transaktioner i alla dessa block. Tyvärr kan det ta ganska lång tid. Även nya avancerade bärbara datorer kräver ofta mer än en hel dag för att komma ikapp. För äldre eller lägre maskiner tar det ännu längre tid.
“Assumevalid” påskyndar denna process avsevärt. I huvudsak antar Bitcoin Core 0.14.0-noder att alla transaktioner upp till ett visst block är giltiga. Medan en synkroniseringsnod fortfarande verifierar beviset på arbete för alla block och registrerar hela transaktionshistoriken, kontrollerar den inte längre signaturer och liknande data för varje enskild transaktion.
Antagandet om vilket block som är giltigt är konfigurerbart. Som standard är det block 453354 för Bitcoin Core 0.14.0. Men användare som verkligen vill verifiera varje enskild transaktion, även de som daterar år tillbaka, kan fortfarande.
Det är också värt att notera att, i motsats till ett kontrollpunktsystem som fastställer att ett specifikt block måste vara en del av blockchain, är det antagna giltiga blocket inte nödvändigtvis bindande. En Bitcoin Core 0.14.0-nod växlar lätt till en alternativ blockchain utan det antagna giltiga blocket, om det alternativa blockchain är längre.
Förbättrad avgiftsberäkning
Eftersom Bitcoin-block har fyllts, särskilt under det senaste året, passar inte alla transaktioner som skickas över nätverket in i nästa block. Som ett resultat prioriterar gruvarbetare vanligtvis transaktioner som innehåller de flesta avgifterna. Transaktioner som inkluderar fler avgifter har större chans att inkluderas i nästa block eller strax därefter. Transaktioner som inkluderar lägre avgifter överbjuds och det tar längre tid att bekräfta.
Naturligtvis behöver inte alla sina transaktioner för att bekräfta så snabbt. Användare som skickar bitcoins till ett börs på grund av snabba prisrörelser kan ha bråttom för att få sina transaktioner bekräftade. Under tiden kan användare som flyttar bitcoins mellan sina egna plånböcker vara mer tålmodiga.
Sedan Bitcoin Core 0.10.0 har användare kunnat justera sina avgifter därefter. De kan manuellt inkludera högre avgifter om de har mer brådska och lägre avgifter om de inte gör det. Bitcoin Core 0.11.0 och 0.12.0 förfinade båda avgiftsuppskattningsprogrammet och Bitcoin 0.14.0 innehåller nu en annan uppsättning förbättringar, vilket särskilt gör algoritmen mer robust i kantfallssituationer.
Dessutom minskade standardbekräftelsemålet från 25 block till 6 block; de flesta transaktioner gjorda av Bitcoin Core bör bekräftas inom en timme även om användaren inte berör avgiftsinställningarna.
Opt-In Ersätt-för-avgift för att skicka
Förutom den förbättrade avgiftsuppskattningen har användare av Bitcoin Core 0.14.0 ett annat alternativ för att påskynda sina transaktioner.
Först introducerad för ett år sedan med lanseringen av Bitcoin Core 0.12.0, kan Bitcoin-transaktioner markeras med en “ersättningsavgift” -flagga. Avsändare av en transaktion kan ersätta sin ursprungliga transaktion med en nyare transaktion som inkluderar en högre avgift. Detta gör att de kan “hoppa över raden” och få sin transaktion bekräftad snabbare.
Fram till denna tidpunkt inkluderade Bitcoin Core endast opt-in ersättningsavgift i nodbeteendet: den accepterade och vidarebefordrade transaktioner med ersättningsavgiftsflaggor (istället för att avvisa dem som dubbla utgifter). Men Bitcoin Core-användare kunde inte använda opt-in ersättningsavgift för att stöta på sina egna avgifter; hittills bara användare av plånböcker som Electrum eller GreenAddress skulle kunna.
Nu har opt-in ersättningsavgift lagts till som ett RPC-alternativ (Remote Procedure Call) i Bitcoin Core 0.14.0. Detta innebär att användare som arbetar från kommandoraden eller på applikationer som bygger på Bitcoin Core kan använda ersättningsavgift också.
Manuell beskärning
Bitcoins blockchain är över 100 gigabyte i storlek och i sin nuvarande takt växer cirka 50 gigabyte varje år. All den informationen måste lagras, vilket kan utgöra en betydande börda för användare som kör en fullständig nod.
Därför introducerade Bitcoin Core 0.11.0 blockchain-beskärning. Användare kan bli av med äldre block när de har verifierats, så att köra en hel nod kräver inte så mycket diskutrymme.
Men hittills kunde användare bara beskära från ett fast antal block. Med beskärning inställd på 1000 block, till exempel, behöll Bitcoin Core exakt de senaste 1000 blocken. När ett nytt block lades till kastades det äldsta blocket för att hålla summan på 1000.
Tyvärr innebar detta att vissa applikationer som förlitar sig på Bitcoin Core inte riktigt kunde använda beskärning. Till exempel kan en betalningsbehandlingsapplikation – för handlare som vill acceptera bitcoin men föredrar att inte förlita sig på externa tjänster som BitPay eller Coinbase – i vissa fall behöva ta reda på om en giltig betalning gjordes i ett äldre block. Om blocket redan beskärs kan programmet inte göra sitt jobb.
Bitcoin Core 0.14.0 möjliggör därför mer specifik beskärning. Istället för att behålla ett visst antal block kan användare beskära blockkedjan från en viss tidpunkt, en specifik blockhöjd och behålla alla block som skapades sedan.
I kombination med en annan ny funktion som kallas “importmulti” kan Bitcoin Core 0.14.0 importera och tidsstämpla adresser, till exempel från den tidigare nämnda betalningsbehandlingsapplikationen. Med hjälp av tidsstämplarna för att fastställa när en specifik adress skapades vet Bitcoin Core från vilken tidpunkt block är relevanta för applikationen och kommer inte att beskära dessa block.
Blockera reläförbättringar
Närhelst ett nytt block bryts överförs det över Bitcoins peer-to-peer-nätverk tills varje nod fick det. Tyvärr kan latens i detta nätverk gynna poolad gruvdrift samt geografiska kluster av gruvarbetare, vilket stimulerar en mer central gruvtopologi.
Ökande blockutbredningshastighet har därför varit en central fokus för Bitcoin Core-utvecklingsteamet i några år nu, och Bitcoin Core 0.14.0 innehåller ytterligare ett antal förbättringar.
Kanske det viktigaste, Bitcoin Core 0.14.0 noder framåt block till sina kamrater tidigare. Där noder tidigare skulle verifiera ett block i sin helhet innan de skickades till anslutna noder, startar Bitcoin Core 0.14.0 vidarebefordran så snart beviset på arbetet checkar ut.
Medan många gruvarbetare idag använder alternativa relänätverk, minskar ökningen av hastigheten på Bitcoins peer-to-peer-nätverk beroendet av dessa nätverk och till och med gynnar dessa relänät där de ansluter till peer-to-peer-nätverket.
Och …
Som nämnts är de förbättringar som anges ovan bara toppen av isberget. Bitcoin Core 0.14.0 innehåller en lista över ytterligare prestandaförbättringar, varierande från RPC-ändringar på låg nivå, till förändringar i det grafiska användargränssnittet (GUI) och allt däremellan. För en fullständig översikt över alla förbättringar, se Versionsnoteringar för Bitcoin Core 0.14.0.
Du kan ladda ner Bitcoin Core 0.14.0 från bitcoincore.org eller bitcoin.org.