I dag markerer den officielle frigivelse af Bitcoin Core 0.14.0, den fjortende generation af Bitcoins originale softwareklient, der blev lanceret af Satoshi Nakamoto for otte år siden. Overvåget af Bitcoin Core hovedopretholder Wladimir van der Laan, denne seneste store udgivelse blev udviklet af næsten 100 bidragydere over en periode på seks måneder.
Bitcoin Core 0.14.0 indeholder en betydelig liste over forbedringer. Sammenlignet med nogle tidligere udgivelser vedrører de fleste af disse imidlertid “internt” i softwaren: forbedringer af ydeevnen, der finder sted under emhætten, men som måske ikke er særlig mærkbar for hverdagsbrugere.
Når det er sagt, her er nogle af de mere bemærkelsesværdige ændringer.
“Assumevalid” -blokke
Hver gang en ny node starter på netværket, synkroniserer den hele blockchain. Det downloader og verificerer alle blokke, der nogensinde blev udvundet, og verificerer alle transaktioner i alle disse blokke. Desværre kan dette tage lang tid. Selv nye, avancerede bærbare computere kræver ofte mere end en hel dag for at indhente. For ældre eller lavere maskiner tager det endnu længere tid.
“Assumevalid” fremskynder denne proces betydeligt. I det væsentlige antager Bitcoin Core 0.14.0-noder, at alle transaktioner op til en bestemt blok er gyldige. Mens en synkroniseringsknude stadig verificerer beviset for arbejde for alle blokke og registrerer hele transaktionshistorikken, kontrollerer den ikke længere signaturer og lignende data for hver enkelt transaktion.
Antagelsen om, hvilken blok der er gyldig, kan konfigureres. Som standard er det blok 453354 til Bitcoin Core 0.14.0. Men brugere, der ønsker at bekræfte hver eneste transaktion fuldt ud, selv de der går år tilbage, kan stadig.
Det er også værd at bemærke, at i modsætning til et kontrolpunktsystem, der fastslår, at en bestemt blok skal være en del af blockchain, er den antagne gyldige blok ikke nødvendigvis bindende. En Bitcoin Core 0.14.0-knude skifter let til en alternativ blockchain uden den antagne gyldige blok, hvis den alternative blockchain er længere.
Forbedret skøn over gebyrer
Da Bitcoin-blokke er blevet fyldt op, især i løbet af det sidste år, passer ikke alle transaktioner sendt over netværket ind i den næste blok. Som et resultat prioriterer minearbejdere normalt transaktioner, der inkluderer de fleste gebyrer. Transaktioner, der inkluderer flere gebyrer, har større chance for at blive inkluderet i den næste blok eller kort derefter. Transaktioner, der inkluderer lavere gebyrer, overbydes og det tager længere tid at bekræfte.
Selvfølgelig har ikke alle brug for deres transaktioner for at bekræfte så hurtigt. Brugere, der sender bitcoins til en børs på grund af hurtige prisbevægelser, kan have travlt med at få deres transaktioner bekræftet. I mellemtiden kan brugere, der flytter bitcoins mellem deres egne tegnebøger, være mere tålmodige.
Siden Bitcoin Core 0.10.0 har brugere været i stand til at justere deres gebyrer i overensstemmelse hermed. De kan manuelt inkludere højere gebyrer, hvis de har mere travlt, og lavere gebyrer, hvis de ikke er. Bitcoin Core 0.11.0 og 0.12.0 raffinerede begge gebyrestimeringssoftwaren, og Bitcoin 0.14.0 inkluderer nu et andet sæt forbedringer, hvilket især gør algoritmen mere robust i edge case-situationer.
Derudover blev standardbekræftelsesmålet reduceret fra 25 blokke til 6 blokke; de fleste transaktioner foretaget fra Bitcoin Core skal bekræfte inden for en time, selvom brugeren ikke rører gebyrindstillingerne.
Opt-in Erstat efter gebyr for afsendelse
Ud over den forbedrede gebyrestimering har Bitcoin Core 0.14.0-brugere en anden mulighed for at fremskynde deres transaktioner.
Først introduceret for et år siden med frigivelsen af Bitcoin Core 0.12.0, kan Bitcoin-transaktioner markeres med et “udskiftningsgebyr” -flag. Afsendere af en transaktion kan erstatte deres oprindelige transaktion med en nyere transaktion, der inkluderer et højere gebyr. Dette giver dem mulighed for at “springe køen over” og få deres transaktion bekræftet hurtigere.
Indtil dette tidspunkt inkluderede Bitcoin Core kun opt-in-udskiftningsgebyr i nodeadfærden: det accepterede og videresendte transaktioner med udskiftningsflag (i stedet for at afvise dem som dobbeltudgifter). Men Bitcoin Core-brugere kunne ikke bruge opt-in-erstatningsgebyr til at bumpe deres egne gebyrer; indtil videre kun brugere af tegnebøger som Electrum eller GreenAddress kunne.
Nu er opt-in-udskiftningsgebyr tilføjet som en RPC-mulighed (Remote Procedure Call) i Bitcoin Core 0.14.0. Dette betyder, at brugere, der arbejder fra kommandolinjen eller på applikationer bygget på Bitcoin Core, også kan bruge udskiftningsgebyr.
Manuel beskæring
Bitcoin’s blockchain er over 100 gigabyte i størrelse og vokser med sin nuværende hastighed omkring 50 gigabyte hvert år. Alle disse data skal lagres, hvilket kan udgøre en betydelig byrde for brugere, der kører en fuld node.
Derfor introducerede Bitcoin Core 0.11.0 blockchain beskæring. Brugere kan slippe af med ældre blokke, når de først er bekræftet, så det kræver ikke så meget diskplads at køre en fuld node.
Men indtil nu kunne brugerne kun beskære startende fra et fast antal blokke. Med beskæring, der er indstillet til 1000 blokke, holdt Bitcoin Core for eksempel nøjagtigt de seneste 1000 blokke. Hver gang en ny blok blev tilføjet, blev den ældste blok kasseret for at holde det samlede antal på 1000.
Desværre betød dette, at visse applikationer, der var afhængige af Bitcoin Core, ikke rigtig kunne bruge beskæring. For eksempel kan en betalingsbehandlingsapplikation – for købmænd, der ønsker at acceptere bitcoin, men foretrækker ikke at stole på eksterne tjenester som BitPay eller Coinbase – i nogle tilfælde være nødt til at finde ud af, om en gyldig betaling blev foretaget i en ældre blok. Hvis denne blok allerede er beskåret, kan applikationen ikke udføre sit job.
Bitcoin Core 0.14.0 giver derfor mulighed for mere specifik beskæring. I stedet for at holde et sæt antal blokke kan brugerne beskære blockchain fra et bestemt tidspunkt, en bestemt blokhøjde og beholde alle blokke, der blev oprettet siden.
Kombineret med en anden ny funktion kaldet “importmulti” kan Bitcoin Core 0.14.0 importere og tidsstemple adresser, for eksempel fra den førnævnte betalingsbehandlingsapplikation. Ved hjælp af tidsstemplerne til at fastslå, hvornår en bestemt adresse blev oprettet, ved Bitcoin Core, fra hvilket tidspunkt blokke er relevante for applikationen og beskærer ikke disse blokke.
Bloker relæforbedringer
Hver gang en ny blok udvindes, transmitteres den over Bitcoins peer-to-peer-netværk, indtil hver node modtog den. Desværre kan latens på dette netværk være til fordel for poolet minedrift såvel som geografiske klynger af minearbejdere, hvilket tilskynder til en mere central minedriftstopologi.
Øget blokeringsformationshastighed har derfor været et centralt fokuspunkt for Bitcoin Core-udviklingsteamet i nogle år nu, og Bitcoin Core 0.14.0 inkluderer endnu en række forbedringer.
Måske vigtigst er, at Bitcoin Core 0.14.0 noder videresender blokke til deres jævnaldrende tidligere. Hvor noder tidligere ville verificere en blok i sin helhed, før de sendes til tilsluttede noder, starter Bitcoin Core 0.14.0 videresendelsesprocessen, så snart beviset for arbejde tjekker ud.
Mens mange minearbejdere i dag også bruger alternative relænetværk, reducerer øget hastighed på Bitcoins peer-to-peer-netværk afhængigheden af disse netværk og fordeler endda disse relænetværk, hvor de opretter forbindelse til peer-to-peer-netværket.
Og …
Som nævnt er de forbedringer, der er anført ovenfor, virkelig kun toppen af isbjerget. Bitcoin Core 0.14.0 inkluderer en liste over yderligere ydeevneforbedringer, der varierer fra RPC-ændringer på lavt niveau til ændringer i den grafiske brugergrænseflade (GUI) og alt imellem. For en fuld oversigt over alle forbedringer, se Udgivelsesnoter for Bitcoin Core 0.14.0.
Du kan downloade Bitcoin Core 0.14.0 fra bitcoincore.org eller bitcoin.org.