Nu SegWit geactiveerd is, en de weg voor innovatie vrij is gemaakt, heeft er onder de motorkap een verbetering plaatsgevonden waarmee het probleem van “transactie malleability” wordt opgelost. In dit artikel zal worden ingegaan op het probleem van transactie malleability en waarom het oplossen hiervan van groot belang is.
Wat is Transactie Malleability?
Om transactie malleability te begrijpen, is het van belang dat Bitcoin gezien wordt als een globaal grootboek en waar transacties dienen als bankcheques. Deze analogie wordt uitgelegd in een eerder artikel.
Een transactiehash, waarmee een transactie geïdentificeerd kan worden, kan gezien worden als een vingerafdruk. Deze hash is dus voor elke transactie uniek. Mocht er iets veranderen aan een transactie, dan verandert deze vingerafdruk dus ook, de transactie is immers niet meer hetzelfde als voorheen.
Waar bankcheques ondertekend dienen te worden met een handtekening, dienen bitcointransacties te worden ondertekend met een digitale handtekening. Net als een handtekening van de menselijke hand, kan een digitale handtekening ook minimale afwijkingen vertonen wanneer deze gezet wordt, waarna deze toch als geldig wordt beschouwd.
Doordat de eerdergenoemde transactiehash alle gegevens van een transactie in zich heeft, verandert deze dus ook als de handtekening veranderd. Eventuele veranderingen van handtekeningen kunnen slechts gebeuren wanneer deze zijn verstuurd over het netwerk, maar nog niet zijn bevestigd in een block. Eenmaal bevestigd staat de transactie namelijk vast, en wordt de bijgevoegde handtekening van die betreffende transactie als de juiste beschouwd.
Aangezien tot die bevestiging de handtekening en hash nog niet vastgesteld zijn, is het mogelijk om nog na het verzenden van de transactie veranderingen aan te brengen aan de handtekening waardoor de hash vervolgens ook verandert.
Dit kan vergeleken worden met het vervangen van een handtekening op een cheque. Het bedrag en overige informatie blijft hetzelfde, er wordt alleen een andere handtekening onder gezet. Vervolgens zal de hash ook veranderen, omdat deze een vingerafdruk van zowel het bedrag, de informatie als de handtekening is. Doordat deze vingerafdruk gebruikt wordt voor het controleren op correctheid van alle volgende transacties, en de hele blockchain hierop voortborduurt, is verandering van deze vingerafdruk niet gewenst. Wanneer achteraf blijkt dat een transactie halverwege de lijst incorrect was (een foute hash doordat de handtekening later is veranderd) zullen de daarna volgende transacties ook niet geldig zijn omdat zij uitgingen van de hash van de achteraf veranderde transactie.
SegWit en transactie malleability
Het veranderen van de handtekening van transacties resulteert dus in een veranderde transactiehash, waardoor ook de volgende transacties niet geldig zullen zijn. Bij SegWit-transacties wordt voor geldigheid van transacties niet meer uitgegaan van de handtekening. Dit betekent dat, ook al veranderd de handtekening van een transactie, de hash gewoon hetzelfde blijft en de volgende transacties ook geldig zijn. Alle nieuwe transacties berusten immers nog steeds op de vingerafdruk van de voorgaande transactie.
Het is niet zo dat de handtekeningen nu overbodig zijn; deze worden nog steeds gecheckt. Echter worden ze niet meer gebruikt om de vingerafdruk, die een transactie identificeerbaar maakt, te genereren.
Dit artikel is geschreven op basis van artikelen gepubliceerd door Jimmy Song.
Jimmy Song is een Bitcoin developer, ondernemer en voormalig ontwikkelaar voor bitcoinwallet Armory. In zijn serie Bitcoin Tech Talk laat hij de lezer meekijken met de ontwikkelingen rondom de technische aspecten van Bitcoin.
Lees het originele artikel op Bitcoin.nl