Bitcoin Core 24.0 release

Vorige week is versie 24.0 van Bitcoin Core vrijgegeven. De nieuwe versie bevat onder andere ondersteuning voor Miniscript, verbeterde privacy en voortaan staat Replace By Fee (RBF) standaard aan.

Bitcoin Core is software waarmee je een Bitcoin full node full node Een full node is een computer die middels specifieke software verbinding maakt met het Bitcoinnetwerk en daarbij de volledige blockchain downloadt en verifieert. Omdat dit lokaal gebeurt is er voor de verificatie geen vertrouwen nodig in een derde partij, zoals dat bij lightweight nodes wel het geval is. kan draaien. Het werd oorspronkelijk ontwikkeld en in 2009 gelanceerd door Satoshi Nakamoto. De ontwikkeling gebeurt tegenwoordig op basis van open source op Github, waarbij Bitcoinontwikkelaars uit de hele wereld met elkaar samenwerken.

Hoewel Bitcoin Core niet de enige full node-software meer is, is het nog altijd toonaangevend. Het telt de meeste Bitcoinontwikkelaars en het is de meestgebruikte software onder techneuten en bedrijven. Een nieuwe versie heeft dan ook invloed op een belangrijk deel van het netwerk.

Versie 24.0 van Bitcoin Core bevat een aantal interessante nieuwe veranderingen.

Miniscript

Zo bevat de nieuwe versie een eerste stap in de ondersteuning van Miniscript. Miniscript biedt een vereenvoudigde manier om scripts te creëren voor de scripttaal Script, waardoor het makkelijker en minder foutgevoelig is om (complexe) smart contracts te maken. Bovendien zijn ze eenvoudiger te controleren.

Vanaf versie 24.0 wordt een klein deel van de functionaliteit geactiveerd. Gebruikers kunnen een nieuwe wallet op basis van Miniscript creëren, adressen genereren en bitcoins naar de adressen versturen. Bestedingen via Miniscript vanaf zulke adressen worden echter nog niet ondersteunt - dat volgt bij een toekomstige versie.

Changeless transactions

Nieuw is de mogelijkheid om changeless transactions te doen. Dat zijn transacties waarbij het volledige bedrag van een UTXO UTXO UTXO betekent 'Unspent Transaction Output'. Dat zijn de outputs van een ontvangen transactie, die nog niet gebruikt zijn ('unspent') en dus te gebruiken zijn als input voor een uitgaande transactie. Alle UTXO's binnen een wallet vormen gezamenlijk totale balans in bitcoins.  wordt verstuurd, zonder change-UTXO. Dat maakt het eenvoudiger om alle fondsen van een of meerdere UTXO's volledig te versturen.

Het biedt daarnaast privacyvoordelen. Change transactions hebben namelijk de neiging om bij toekomstige transacties gemengd te worden met andere UTXO's. Daardoor zijn via blockchain-analyse verbanden te leggen tussen de UTXO's. Met een changeless transaction voorkom je dat. De bitcoins verplaatsen dan alleen van A naar B, maar er is geen change transaction die naar andere UTXO's leidt.

Een change transaction kan bovendien een indicatie zijn dat de fondsen van eigenaar zijn veranderd. Bij betalingen aan anderen is het immers onwaarschijnlijk dat het verschuldigde bedrag exact overeenkomt met een bedrag van een UTXO in je wallet. In de meeste gevallen is er een verschil en blijft er een restant over dat in een change transaction terecht komt. Met changeless transactions is dat niet zo, waardoor het lastiger is om in te schatten of een UTXO een betaling naar een ander is of dat de eigenaar de fondsen zelf heeft verplaatst.

Change output randomization

Meestal verstuurt men echter niet het volledige bedrag en zal er dus wel een change transaction plaatsvinden. Bij het samenstellen van een nieuwe transactie kiezen veel wallets UTXO's met bedragen die bij elkaar geteld zoveel dicht mogelijk in de buurt liggen van het te versturen bedrag. Er blijft dan slechts een klein restant over. Via blockchain-analyse is daardoor echter eenvoudig in te schatten welke UTXO de change transaction is - het kleinste deel.

In de nieuwe versie van Bitcoin Core worden UTXO's met behulp van een algoritme meer willekeurig gekozen. Bij sommige transacties wordt de oude methode gebruikt, zodat de change transaction een klein bedrag bevat. Andere keren kiest het algoritme voor grotere UTXO's, zodat de change transaction groter is.

Het is daardoor niet meer zo eenvoudig om te bepalen of een verstuurde hoeveelheid bitcoins aan de ontvanger toebehoort, of dat het de change transaction terug naar de verzender vertegenwoordigt. Dat verbetert de privacy tegen gedetailleerde blockchain-analyse.

Replace By Fee (RBF)

Replace By Fee (RBF) is al langer onderdeel van Bitcoin Core, maar om het te gebruiken moest je de functionaliteit wel eerst aanzetten. Dat is vanaf 24.0 andersom: voortaan staat RBF bij transacties standaard aan en indien gewenst kan je het uitzetten.

RBF is nuttig als een bitcointransactie vanwege een te lage fee 'vast' zit in de mempool. In een block passen slechts een beperkt aantal transacties en als de blocks vanwege drukte op het netwerk vol raken kiezen miners daarom in principe de best betalende transacties uit om aan een block toe te voegen.

Als de blocks vol zijn en anderen een hogere fee betalen dan jij, dan kan het gebeuren dat jouw transactie lange tijd achterblijft in de mempool. Met RBF kan je de fee verhogen, zodat miners eerder geneigd zijn om de transactie aan een block toe te voegen.

Descriptor wallets

Vroeger moest je bij het herstellen van een wallet een derivation path opgeven, maar als je de verkeerde koos werd een andere wallet hersteld. Sinds versie 23.0 van Bitcoin Core is er ook de mogelijkheid om wallets aan te maken die een 'descriptor' bevatten met informatie over de juiste derivation path, zodat je zelf niet hoeft te puzzelen.

Nieuw in versie 24.0 is de migratietool, waarmee je oudere wallets zonder descriptor kan migreren naar de nieuwere soort met een descriptor. Het is vooralsnog experimenteel, dus wees voorzichtig.

GUI verbeteringen

Bitcoin Core is via een command-line terminal te gebruiken, maar er is ook een grafische interface (GUI).

De mogelijkheden bij de GUI-versie zijn iets uitgebreid. Nieuw is een menu-item om wallets te herstellen vanuit een backup. Ook is het voortaan mogelijk om rechtstreeks vanuit de GUI-versie de configuratie aan te passen, zonder conflicten. Vroeger kregen de instellingen in bitcoin.conf  namelijk altijd voorrang boven de instellingen in de GUI, maar nu worden de instellingen gesynchroniseerd.

Headers

Onder de motorkap verandert bij Bitcoin Core 24.0 ook de manier waarop de software synchroniseert met het netwerk.

Bij het downloaden van de blockchain werden in eerdere versies eerst de headers - het eerste stukje data van de blocks - van andere nodes gedownload. Om te voorkomen dat een valse blockchain wordt voorgeschoteld, waren checkpoints ingevoerd om aan te geven welke blocks minimaal aanwezig moeten zijn.

Vanaf Bitcoin Core 24.0 is dat proces veranderd. Voortaan worden de headers van blocks twee keer gedownload. Eerst vindt een 'presync' plaats waarbij alleen wordt gecontroleerd of de keten geldig is en een minimum hoeveelheid werk bevat, maar waarbij de data niet wordt opgeslagen. Daarna volgt de echte synchronisatie, waarbij de headers opnieuw worden gedownload maar dit keer ook daadwerkelijk worden opgeslagen. Deze wijziging is gedaan ter bescherming tegen potentiële Denial of Service (DoS) aanvallen.

Meer info?

De volledige lijst met wijzigingen vind je op Github.  De wijzigingen worden ook besproken in aflevering 65 van de podcast Bitcoin, Explained.

Versie 24.0 van Bitcoin Core kan je hier downloaden


Bron: Namcios, Bitcoinmagazine.com 


Belangrijke thema’s in dit artikel. Klik op een thema en ontdek meer.