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 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
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.