Transaction Malleability

Een van de voordelen van SegWit, wat inmiddels is geactiveerd op het netwerk, is dat het een zogenaamde transaction malleability fixt. In dit artikel ga ik uitleggen wat malleability is en waarom het ‘fixen’ ervan belangrijk is.

Om transaction malleability te begrijpen, helpt het om Bitcoin te beschouwen als een grootboek en transacties als bankcheques.

Een transactie-ID, een transactie hash genoemd, is zoiets als een vingerafdruk en is uniek. In tegenstelling tot een vingerafdruk, verandert de transactie-ID als de transactie die het vertegenwoordigt op enige manier verandert.

Net zoals geschreven bankcheques handtekeningen, hebben Bitcoin-transacties digitale handtekeningen. Net als handtekeningen in het echte leven, kunnen digitale handtekeningen enigszins variëren en toch nog steeds geldig zijn.

Omdat de transactie-ID rekening houdt met alles in de transactie, verandert de transactie-ID als de digitale handtekening verandert. Deze subtiele veranderingen kunnen alleen plaatsvinden voordat een transactie in een blok wordt geplaatst. Zodra een transactie aan de blockchain is toegevoegd, wordt de transactie, inclusief de handtekening, onveranderlijk.

De veranderlijkheid van de handtekening kan problematisch zijn omdat iemand een transactie kan nemen en de handtekening enigszins kan wijzigen en de transactie-ID kan wijzigen.

Dit zou het equivalent zijn van het vervangen van de handtekening op een cheque. Het bedrag op de cheque zou niet veranderen, maar als de handtekening zou veranderen, zou de identificatie van de cheque veranderen.

Transactie-ID’s zijn met name belangrijk omdat Bitcoin zich als een grootboek rond deze transactie-ID’s heeft georganiseerd. Nieuwe transacties verwijzen naar oude transactie-ID’s om te bewijzen dat de handtekening op de cheque correct is.

Hoe beïnvloedt het Transaction Malleability effect het Lightning Network?

Laten we eerst eens kijken wat het Lightning Network is. Het Lightning-netwerk is een off-chain netwerk voor microbetalingen. Het Lightning Network werkt bovenop Bitcoin en wordt daarom vaak een “Layer 2” -oplossing genoemd.

Het Lightning Network werkt door een double-signed transaction te maken. Dat wil zeggen, we hebben een nieuwe cheque die vereist dat beide partijen tekenen dat deze geldig is. De controle geeft aan hoeveel er van de ene partij naar de andere wordt verzonden. Als nieuwe microbetalingen worden gedaan van de ene partij naar de andere, wordt het bedrag op de cheque gewijzigd en ondertekenen beide partijen het resultaat.

Om het Lightning Network-channel te starten, moet deze dubbel ondertekende cheque worden gefinancierd. Om ervoor te zorgen dat de dubbel ondertekende cheque niet door een niet-coöperatieve tegenpartij wordt vastgehouden, wordt de dubbel ondertekende cheque door beide partijen ondertekend voordat de financieringstransactie naar het netwerk wordt verzonden.

Om het Lightning Network te laten werken, moeten we de financieringstransactie niet laten uitzenden (broadcasten) totdat de dubbel ondertekende cheque is ondertekend.

Omdat de double-signed-cheque verwijst naar de identifier van de financieringstransactie en de identifier van de financieringstransactie wordt gewijzigd, wordt de double-signed-cheque ongeldig. Dit is een risico voor het openen van het Lightning Network-channel. Er zijn manieren om het Lightning Network te laten werken zonder dat transaction malleability wordt hersteld, maar LN is gemakkelijker wanneer de transformatie van transaction malleability wordt verholpen.

Hoe verhelpt Segwit Transaction Malleability?

Het blijkt dat handtekeningen de enige manier zijn waarop transactie-identificaties door een aanvaller kunnen worden gewijzigd. Met SegWit houdt de transactie-ID niet langer rekening met de handtekening. Dit betekent dat zelfs als de aanvaller de handtekening wijzigt, de transactie-ID hetzelfde blijft. Handtekeningen worden nog steeds gecontroleerd, alleen niet gebruikt bij het berekenen van de transactie-ID.

Conclusie

Transaction Malleability is opgelost met Segregated Witness door geen rekening meer te houden met handtekeningen bij het berekenen van de vingerafdruk van de transactie. Het bewerkstelligen van Transaction Malleability betekent dat het Lightning Network soepel kan werken.

 

Geschreven op basis van dit artikel, met dank aan Jimmy Song.