Bitcoin Core 0.13.0, den trettende generation af Bitcoins referenceklient, som først blev lanceret af Satoshi Nakamoto for næsten otte år siden, er nu blevet mærket til frigivelse. Dette er et af de sidste trin i softwareudgivelsesprocessen og indleder Gitian-byggeprocessen.
Bitcoin Core 0.13.0 blev udviklet af omkring 100 bidragydere over en periode på cirka fem måneder. Og mens meget af udviklingsindsatsen i løbet af denne tid også har været fokuseret på Segregated Witness, som kun vil blive aktiveret i en fremtidig mindre frigivelse af softwaren, inkluderer Bitcoin Core 0.13.0 omkring et dusin bemærkelsesværdige forbedringer sammenlignet med Bitcoin Core 0.12.0.
Dette er de vigtigste ændringer.
Barn betaler for forældrene
Antallet af transaktioner på Bitcoin-netværket har været støt stigende over tid. Som et resultat har flere blokke fyldt op, og minearbejdere opkræver typisk højere gebyrer for at inkludere transaktioner i blokke. Transaktioner, der ikke inkluderer tilstrækkelige gebyrer, tager normalt længere tid at bekræfte eller måske endda aldrig bekræfte overhovedet. Dette har vist sig at være noget problematisk, især i perioder, hvor der blev udført såkaldte “stresstest” på netværket med stigninger i det samlede antal transaktioner på netværket og betydelige forsinkelser i transaktionen..
Individuelle brugere kan løse dette problem ved at medtage et højere gebyr i deres transaktioner, hvilket tilskynder minearbejdere til at prioritere disse transaktioner. Dette er muligt, selv efter at en transaktion er sendt ved hjælp af Opt-in Replace-by-Fee (RBF); dog ikke mange tegnebøger inkluderer denne mulighed endnu. Derudover er RBF kun en mulighed for afsenderen af en transaktion. Indtil nu havde modtageren ingen måde at bumpe gebyret for en indgående transaktion for at fremskynde bekræftelsen.
Dette problem løses effektivt med et trick kaldet “Child Pays for Parent” (CPFP). CPFP er en politik, der anvendes af minearbejdere til at vælge, hvilke transaktioner der skal medtages i blokke. Med CPFP vælger minearbejdere ikke nødvendigvis de mest betalende (og gyldige) transaktioner, men vælger i stedet de mest rentable sæt af transaktioner. Med andre ord: de vælger en transaktion med lavt gebyr, hvis en efterfølgende transaktion det stoler på på lav-gebyr transaktion tilbyder et højt nok gebyr til at kompensere. Minearbejderen inkluderer begge på samme tid.
I praksis betyder det, at modtageren af en transaktion med lavt gebyr kan “vedhæfte” en transaktion med et højt gebyr og bruge de samme mønter til sig selv. Incentiveret af den nye transaktion med højt gebyr inkluderer en minearbejder transaktionssættet. Som sådan behøver modtageren ikke vente så længe på en bekræftelse, mens minearbejderen kan øge sin indkomst.
Kompakt blokstøtte
Bitcoins peer-to-peer-protokol er i øjeblikket noget ineffektiv. Noder sender hinanden flest transaktionsdata to gange: en gang som en transaktion, da den oprindeligt sendes over netværket, og en gang som en del af en blok, når transaktionen er bekræftet.
Dette har nogle ulemper. For det første kræver afsendelse af transaktionsdata to gange mere båndbredde, end det egentlig burde, hvilket øger omkostningerne ved at køre Bitcoin Core. For det andet og måske vigtigere er det at videresende nye blokke til flere jævnaldrende på samme tid kan forårsage betydelige udadgående båndbreddespidser. Dette forstyrrer potentielt internetbrug hver gang en ny blok findes, hvilket potentielt er irriterende for brugerne. Og måske, vigtigere, det kan også bremse blokering af udbredelse over netværket. Langsom blokformering kan igen favorisere større minedriftspuljer og derved tilskynde til et mere centraliseret minelandskab.
Kompakte blokke (BIP 152), udviklet af Bitcoin Core og Blockstream udvikler Matt Corallo, er designet til at mindske overskydende datatransmission. Når en ny blok findes, kommunikerer noder oprindeligt kun meget kompakte hashes af transaktionsdata. Da noder allerede har modtaget de fulde transaktionsdata, da de oprindeligt blev sendt over netværket, kan de bruge disse hashes til at finde ud af, hvilke transaktioner der er inkluderet i blokken og rekonstruere selve blokken.
Dette trick fungerer dog ikke altid perfekt. Hvis en node endnu ikke modtog den oprindelige transaktion inden modtagelse af hashes, kan den node naturligvis ikke vælge transaktionen. Derudover i sjældne tilfælde a forkert transaktion kan hash ind i en ret hash, narre noden til at tro, at den modtog den rigtige transaktion, indtil den forsøger at rekonstruere blokken og finder ud af, at den ikke tilføjes.
I begge disse tilfælde af fiasko anmoder noden simpelthen om de specifikke transaktionsdata. Selv med kun nogle komplette transaktioner i dem, vil Compact Blocks transmittere over netværket meget hurtigere og kræver betydeligt mindre båndbredde.
Hierarkisk deterministisk nøglegenerering
Indtil nu genererede Bitcoin Core et nyt og helt tilfældigt offentligt og privat nøglepar til hver nye Bitcoin-adresse. Selvom dette er vigtigt af sikkerheds- og privatlivsårsager, kan det også være en smule byrde for brugerne. For at sikre alle private nøgler mod tab, skal de foretage regelmæssige sikkerhedskopier.
Hierarkisk deterministisk (HD) nøglegenerering (BIP 32), et kryptografisk trick udviklet gennem 2012 og 2013 af Bitcoin Core-udviklere Gregory Maxwell og Dr. Pieter Wuille og Armory-udvikler Alan Reiner, løser dette problem. Med generering af HD-nøgler skaber Bitcoin Core et helt nyt nøglepar til hver ny adresse, men alle disse nøgler stammer fra et enkelt 12-ords frø. Så længe brugerne husker dette 12-ords frø, kan de genoprette alle private nøgler og få adgang til alle deres midler.
Det skal bemærkes, at HD Key Generation ikke er en ny funktion i Bitcoin-verdenen. Mange tegnebøger inkluderede allerede muligheden i flere år. Det eksisterede bare aldrig i Bitcoins referenceklient – indtil nu.
Ydeevne & Sikkerhed
Og selvfølgelig introducerer Bitcoin Core 0.13.0 en betydelig liste over ydeevne og sikkerhedsopgraderinger. Det fulde omfang af disse forbedringer ligger uden for denne artikels anvendelsesområde (se Bitcoin Core 0.13.0’er udgivelses noter for alle detaljer), men kort sagt …
Databasens cachehukommelse er blevet øget, hvilket gør det muligt for noder at fremskynde transaktionsvalidering og mere. Bitcoin-kommandolinjeværktøjet giver brugerne nu mulighed for at skrive adgangssætninger og anden følsom information interaktivt, hvilket forbedrer sikkerheden ved ikke at gemme disse oplysninger i almindelig tekst. Softwaren opdateres til at bruge C ++ 11 og Python 3, nyere versioner af programmeringssprogene, der giver mulighed for mere kraftfulde funktioner. ARM (en specifik mikroprocessorarkitektur) binærfiler til Linux er nu en del af udgivelsen, så brugerne behøver ikke at kompilere dette for sig selv. Data vedrørende hvilke transaktioner i en mempool, der er afhængige af hinanden (som brugt med CPFP), kan kommunikeres til eksterne programmer. Noder på netværket kan kun anmode om at modtage transaktioner, der opfylder en bestemt gebyrstærskel for at forhindre DoS-angreb. Og til sidst har der været en række forbedringer på lavt niveau af peer-to-peer, ZMQ-protokoller (Remote Procedure Call og Messaging System).
Tak til Bitcoin Core-lederholder Wladimir van der Laan og Bitcoin Core-udvikler og Ciphrex CEO Eric Lombrozo for information og feedback.
Bemærk: Bitcoin Core 0.13.0 blev officielt frigivet den 23. august; den originale titel på denne artikel, der annoncerede, at den blev frigivet den 22. august, var forkert. Det var blevet mærket til frigivelse, hvilket typisk betyder, at det frigives inden for et par dage. Bitcoin Core 0.13.0 kan nu downloades på bitcoincore.org og bitcoin.org. (Men inden du downloader, skal du bemærke dette sikkerhedsadvarsel på bitcoin.org.)