Idag markeras den officiella utgåvan av Bitcoin Core 0.12.0, den tolfte generationen av Bitcoins referensklient, som först lanserades av Satoshi Nakamoto för sju år sedan. Den senaste versionen av Bitcoin Core har utvecklats av nästan 100 bidragsgivare under sju månader och innehåller mer än 20 förbättringar, särskilt vad gäller prestanda, säkerhet och användbarhet..
Dessa är de sjätte mest anmärkningsvärda förändringarna.
Memory Pool Limiting
Minnespooler är samlingar av obekräftade transaktioner som lagras individuellt av alla fullständiga noder. Minnespooler fylls i mellan block när nya transaktioner överförs via Bitcoin-nätverket och raderas när dessa transaktioner ingår i block. Men om en serie efterföljande block förblir fulla under en längre period – antingen på grund av legitima transaktioner eller skräppostattacker – kan minnespooler inte tömmas helt och eftersläpningar kan byggas upp. Utan maximal gräns kan eftersläpningen till och med växa till den punkt där noder tar slut på minne och kraschar. (Det här är “kraschlandning”Scenario före detta Bitcoin XT-utvecklare Mike Hearn fruktade.)
Som namnet antyder begränsar minnespoolen en hård gräns för den maximala storleken på minnespooler för att förhindra detta scenario. Om det maximala uppnås, noder avvisar eller rensar sina minnesgrupper av transaktioner som erbjuder lägsta avgift per byte.
Fullständiga nodoperatörer kan konfigurera sina gränser, men den maximala standardstorleken i Bitcoin Core 0.12.0 är inställd på 300 megabyte.
Blockchain-beskärning för plånboksanvändare
En av bördorna med att köra en hel nod är kravet att lagra hela blockchain. Detta lägger till 55 gigabyte när detta skrivs och kan växa ytterligare 50 gigabyte per år under den nuvarande 1 megabyte blockstorleksgränsen.
För att minska detta krav tillåter Bitcoin Core 0.12.0 användare att beskära blockchain, vilket innebär att de kan bli av med äldre data när deras nod har verifierat det. Mängden data som ska sparas är konfigurerbar, men Bitcoin Core 0.12.0 kräver fortfarande minst 2 gigabyte diskutrymme.
Beskärning av blockchain betyder att dessa noder inte längre kommer att kunna dela all blockchain-data med kamrater, till exempel fullständiga noder som synkroniseras med nätverket för första gången.
(Det bör noteras att beskärning av blockchain först introducerades i Bitcoin Core 0.11.0, men det var ännu inte tillgängligt för användare som kör Bitcoin Core som en plånbok.)
Ladda upp trafikbegränsning
Hela noder överför och vidarebefordrar kontinuerligt transaktioner och block till varandra via Bitcoins peer-to-peer-nätverk. Detta kräver vanligtvis en blygsam mängd data som ska laddas ner, men att dela samma data med flera kamrater samtidigt kan ge upp till betydande uppladdningskostnader.
Bitcoin Core 0.12.0 introducerar ett konfigurerbart datatak för uppladdningstrafik. Om detta lock kommer inom räckhåll kommer noden att gripa upp uppladdningsblock som är äldre än en vecka, vilket vanligtvis begärs av noder som först synkroniseras med nätverket. Dessutom kommer alla lätta klienter att kopplas bort och inte längre får några blockdata.
Opt-in Ersätt efter avgift
När antalet transaktioner i Bitcoin-nätverket ökar kanske inte alla transaktioner passar in i block. Som sådan kommer gruvarbetare förmodligen att välja de transaktioner som skickas av användare som inkluderade de flesta avgifterna. Detta innebär att vissa transaktioner – från användare som betalade för låg avgift – aldrig kunde bekräfta alls. Och eftersom många fulla noder och gruvarbetare för närvarande avvisar motstridiga transaktioner (skickas från samma ingångar som en tidigare transaktion) kan transaktioner med låga avgifter fastna i nätverket.
För att lösa detta introducerar Bitcoin Core 0.12.0 opt-in ersättningsavgift. Om en transaktion skickas med opt-in ersättningsavgift kan användare ersätta sin egen transaktion med en nyare transaktion genom att inkludera en högre avgift. (Detta innebär också att gruvarbetare kan öka sina inkomster, eftersom de får välja transaktioner som inkluderar högre avgifter.)
Den “opt-in” del av opt-in ersättningsavgift betyder att dessa typer av transaktioner inte kommer att vara standard, och kommer att flaggas som ersättningsavgiftstransaktioner i Bitcoin-nätverket. Den som förlitar sig på nollbekräftelsetransaktioner bör övervaka efter dessa ersättningsavgifter, eftersom dessa mycket lätt kan återställas tills de bekräftas. (Naturligtvis var nollbekräftelsetransaktioner aldrig säkert.)
Huruvida opt-in ersättningsavgift faktiskt kommer att vara användbart beror på Bitcoin-gruvarbetare; de bestämmer i slutändan vilka transaktioner som ska ingå i block och under vilka policyer.
Tor som standard
Även om Bitcoin ofta hävdas ge användare anonymitet är det inte helt sant. Bitcoin-användare kan de-anonymiseras, till exempel via peer-to-peer-nätverket. Om det bestäms från vilken IP-adress en transaktion härstammar, kan denna information användas för att identifiera Bitcoin-användare.
För att skydda användarnas integritet ansluter Bitcoin Core 0.12.0 automatiskt till Bitcoin-nätverket via anonymiseringsverktyget Tor (The Onion Router) – om Tor är installerat på samma dator. Tor krypterar data och dirigerar dem genom flera noder över hela världen innan de sänds ut. Detta gör det svårt – kanske omöjligt – att spåra var en Bitcoin-transaktion har sitt ursprung.
(Det bör noteras att användning av Tor i sig kanske inte är tillräcklig för att skydda en Bitcoin-användares identitet. Se Bitcoin Magazines nybörjarguide till Bitcoin Privacy för mer information.)
Snabbare signaturvalidering
Signaturer är det kryptografiska tricket där privata nycklar “kombineras” med andra data för att beräkna en unik nummersträng. Motsvarande offentliga nycklar kan användas för att verifiera att signaturerna skapades med de privata nycklarna. I Bitcoins fall används signaturer effektivt för att bevisa ägande av bitcoin och för att validera transaktioner.
Men det finns flera sätt att genomföra detta kryptografiska trick, vilket kan resultera i olika signaturer – alla giltiga på sitt eget sätt. Och om olika Bitcoin-noder tillämpar olika metoder för validering, kan vissa noder betrakta vissa transaktioner som giltiga medan andra noder inte gör det, vilket kan dela upp Bitcoin-nätverket.
Uppföljning av en mjuk gaffel för att lösa detta problem förra året byter nu Bitcoin Core 0.12.0 all validering från kryptografibiblioteket “OpenSSL” till “libsecp256k1”, utvecklat av Dr. Pieter Wuille, Gregory Maxwell och andra Bitcoin Core-utvecklare.
Som en extra fördel kräver det här nya signaturvalideringsschemat mindre CPU-effekt, vilket sänker kostnaden för att köra en hel nod och minskar avsevärt blockeringsvalideringstiden.
För en fullständig lista över förbättringar, se Bitcoin Core 0.12.0: s release notes on GitHub.
Tack till Bitcoin Core-utvecklare Wladimir van der Laan och Ciphrex VD och Bitcoin Core-utvecklare Eric Lombrozo för korrekturläsning och tillagd feedback.