I dag markerer den officielle frigivelse af Bitcoin Core 0.20.0, den 20. store frigivelse af Bitcoins originale softwareklient, der blev lanceret af Satoshi Nakamoto for over 11 år siden.
Overvåget af Bitcoin Core hovedopretholder Wladimir van der Laan, blev denne seneste store udgivelse udviklet af over 100 bidragydere i løbet af cirka seks måneder. Resultatet af mere end 500 flettede pull-anmodninger, Bitcoin Core 0.20.0 rydder for det meste op og hærder Bitcoin Core-kodebasen, fremmer integration af hardware-tegnebogen, forbedrer netværkssikkerheden og inkluderer flere andre forbedringer.
Her er nogle af de mere bemærkelsesværdige ændringer.
Yderligere integration af hardware-tegnebogen i GUI
Bitcoin Core har været kompatibel med hardware-tegnebøger siden version 0.18.0. Dog kan brugerne endnu ikke foretage transaktioner med en hardware-tegnebog fra Bitcoin Core’s grafiske brugergrænseflade (GUI); de skal i stedet bruge kommandolinjegrænsefladen (CLI) til at gøre det.
Bitcoin Core 0.20.0 tager et skridt mod integration af hardware-tegnebog i GUI. Brugere kan nu oprette en transaktion uden en signatur i Bitcoin Core GUI ved hjælp af PSBT-formatet (delvis underskrevet bitcoin-transaktion) og kopiere den til deres udklipsholder. Når de er kopieret, kan de overføre transaktionen til deres hardware-tegnebog for at underskrive den – denne overførsel er dog endnu ikke automatiseret, og transmission af transaktionen kræver stadig brug af CLI.
Fremtidige Bitcoin Core-udgivelser vil fortsat fremme hardware-tegnebogintegration.
Asmap for mere pålidelig netværksforbindelse
Bitcoin Core forbinder til flere jævnaldrende (andre Bitcoin-noder) på Bitcoin-netværket. Bitcoin Core kortlægger andre noder baseret på deres IP-adresser med den hensigt at etablere forbindelser med jævnaldrende fra forskellige regioner og internetudbydere (ISP’er). Hvis en node modtager blokke og transaktioner fra jævnaldrende overalt i verden, mindsker det risikoen for, at visse data (som en bestemt transaktion) tilbageholdes.
Bitcoin Core kortlægger i øjeblikket IP-adresser efter Netværksoperatørgrupper. Imidlertid er flere af disse grupper faktisk en del af det samme Autonomt system (AS): klynger af netværksoperatørgrupper, der deler vigtige internetruter og derfor potentielt deler de samme routingflaskehalse, hvor data potentielt kunne filtreres.
Bitcoin Core 0.20.0 inkluderer en ny konfigurationsmulighed kaldet Asmap, som kortlægger IP-adresser efter autonome systemnumre (ASN’er). Dette sikrer, at noden forbinder med peers fra en række forskellige AS’er, hvilket reducerer potentielle netværksflaskehalse, hvilket yderligere begrænser risikoen for, at specifikke data tilbageholdes. (Kortlægning af IP-adresser i netværksoperatørgrupper forbliver dog standardkonfigurationen for nu.)
Fjernelse af BIP61 Afvis meddelelser
Afvis meddelelser (BIP61) er meddelelser, som en node returnerer, når en transaktion, den modtog fra en peer, afvises, og hvorfor. (Måske fordi transaktionen er ugyldig, måske fordi den anses for ikke at indeholde tilstrækkeligt gebyr, er der måske en anden grund til afvisningen.)
Bitcoin Core-udviklere anser dog ikke afvisningsmeddelelser for meget nyttige. Vigtigst er det, at jævnaldrende ikke antages at returnere en afvisningsbesked pålideligt. Med andre ord, hvis en node ikke modtager en Afvis meddelelse, betyder det ikke nødvendigvis, at transaktionen blev accepteret. Dette begrænser nytten af meddelelserne, mens der er bedre løsninger til at kontrollere, at en transaktion er gyldig og inkluderer nok gebyrer. I mellemtiden gjorde meddelelserne peer-to-peer-protokollen mere kompleks og tog båndbredde op.
BIP61 Afvis meddelelser var derfor allerede deaktiveret som standard i Bitcoin Core 0.18.0. Bitcoin 0.20.0 har nu fjernet funktionen helt.
Fjernelse af BIP70-betalingsprotokollen (og OpenSSL)
Betalingsprotokollen (BIP 70) blev designet for flere år siden for at forbedre Bitcoins betalingsoplevelse. En bruger og en forhandler kunne kommunikere yderligere oplysninger om en betaling, såsom en menneskelig læsbar destinationsadresse (navnet på forhandleren) og en refusionsadresse, hvis noget gik galt med købet.
Mens Bitcoin Core integrerede betalingsprotokollen, blev standarden aldrig bredt vedtaget. I stedet bruger de fleste tegnebøger stadig den mere grundlæggende URI-ordning (BIP21): Det klikbare link eller det scannelige QR-kodeformat, der for eksempel kommunikerer betalingsadressen og beløbet.
Måske vigtigere end manglen på vedtagelse led BIP70-betalingsprotokollen et antal sikkerheds- og privatlivssårbarheder i årenes løb. Mest bemærkelsesværdigt krævede dens afhængighed af OpenSSL-softwarebiblioteket for kryptografiske funktioner en række kortvarige nødopgraderinger. Nogle Bitcoin-tegnebøger har af disse grunde, afvist implementering af BIP70 helt.
Bitcoin Core 0.19.0 fjernede betalingsprotokollen fra GUI, men brugere kunne stadig kompilere deres node med en speciel konfiguration for at gøre brug af funktionen. Bitcoin Core 0.20.0 har nu fjernet betalingsprotokollen fuldstændigt.
Med BIP70 væk (og nogle andre softwaretilpasninger for at fjerne afhængigheden) har Bitcoin Core også været i stand til helt at fjerne OpenSSL fra sin codecase.
Dumptxoutset som et første skridt mod Assumeutxo til hurtig bootstrapping
Et nyt opkald til fjernprocedure (RPC) lader Bitcoin Core 0.20.0 generere et øjebliksbillede af UTXO-sættet, der afspejler tilstanden af Bitcoin-ejerskab som registreret i blockchain på et bestemt tidspunkt (blokhøjde). Dette øjebliksbillede kan deles.
Fremtidige Bitcoin Core-udgivelser vil dele et sådant øjebliksbillede, når jævnaldrende først slutter sig til netværket. Dette gør det muligt for de nye noder straks at begynde at deltage på netværket fra det tidspunkt, hvor snapshotet blev lavet, mens hele blockchain-historikken kontrolleres i baggrunden. (Ligesom Assumevalid, en lignende genvej, kommer Assumeutxo med tillidsudvekslinger, før hele blockchain kontrolleres, og skal indtil da bruges med disse afvejninger i tankerne.)
For en mere omfattende liste over opgraderinger, se også Release Core-bemærkninger til Bitcoin Core 0.20.0.
Tak til Sjors Provoost for information og feedback.