Sommige van onze lezers hebben misschien gemerkt dat er verschillende soorten Bitcoin adresformaten zijn. Segregated witness was een protocolupgrade die is geïmplementeerd door een soft fork op het Bitcoin-netwerk in 2017 en sindsdien zijn er drie verschillende soorten formaten.
Wat is het voordeel van segregated witness? Waarom is het belangrijk en hoe werkt het? In dit artikel gaan we uitleggen wat SegWit is.
SegWit maakt het mogelijk voor Bitcoin om op te schalen en verbetert de beveiliging
Bij de geboorte van segregated witness hoort een kleine geschiedenisles in Bitcoin. Bitcoin's originele protocol maakte het mogelijk om gemiddeld om de tien minuten een nieuw block te creëren. Elk block had een vooraf bepaalde grootte van 1 megabyte. De blockgrootte beperkt de ruimte voor transacties en daarmee de schaalbaarheid van Bitcoin. Ergens in 2015 begon de Bitcoin-community te discussiëren over hoe Bitcoin opgeschaald zou kunnen worden, zodat het netwerk meer transacties kon verwerken.
Eén oplossing was om de blockgrootte drastisch te vergroten, waardoor meer transacties per block kunnen worden toegestaan. Een andere manier was om de informatie die was opgenomen in elk block te herschikken, waardoor alleen nog gegevens werden toegevoegd die direct nodig zijn voor een transactie. Tot op de dag van vandaag wordt de discussie of SegWit een goed idee is en of een grotere blockgrootte een betere oplossing is nog steeds gevoerd. Historisch gezien leidde deze discussie tot de creatie van een nieuw cryptocurrency door de Bitcoin Cash fork waarbij Bitcoin segregated witness implementeerde en waarbij Bitcoin Cash koos voor een drastisch grotere blokgrootte.
Een andere belangrijke kwestie waarop minder toezicht wordt gehouden, omdat opschaalbaarheid het meest urgente probleem lijkt te zijn, is het voorkomen van transactiefraude. Voordat SegWit actief was, kon een node de transactiehash van een niet-bevestigde transactie gewoon wijzigen.
Dit is uiterst problematisch, vooral als de ontvangende partij afhankelijk is van de betrouwbaarheid van een chain van niet-bevestigde transacties. Door de hash van de eerste transactie te wijzigen, wordt deze niet ongeldig gemaakt, maar is de volgende transactie in de chain afhankelijk van een gewijzigde hash. Daarom zullen alle volgende transacties mislukken en worden ze als ongeldig beschouwd omdat ze verwijzen naar de verkeerde TX ID.
Het manipuleren van transactie-ID 's opent de deur voor allerlei soorten fraude. Maar belangrijker nog, dit is absoluut onacceptabel als je van plan bent ook nog een tweedelaags oplossing bovenop Bitcoin te gebruiken zoals de Lightning Network.
Hoe werkt segregated witness?
Het SegWit-protocolupgrade scheidde transactiegegevens van de digitale signatures van de transactiegetuige. De blockgrootte werd effectief verhoogd tot 4 megabytes en was tegelijkertijd compatibel met het oorspronkelijke Bitcoin-protocol.
Oorspronkelijk bevatte elk oud block de output en de input van de transacties, evenals de signatures en aanvullende scripts. SegWit blocks zijn feitelijk groter en anders gestructureerd. Door de signatures en de scripts te scheiden, is er een basisblock dat ook wel transactieblock wordt genoemd, dat volgens het oude protocol nog steeds als geldig wordt beschouwd. Het bevat inputs en outputs en overschrijdt de limiet van 1 megabyte niet.
Het uitgebreide block daarentegen is groter en bevat tot 3 megabytes aan data. Namelijk signatures en scripts. Met deze structuur kan SegWit compatibel zijn met oude versies, wat betekent dat in feite niemand het hoeft te gebruiken, terwijl het tegelijkertijd grote voordelen biedt om dit wel te doen. Het maakte het ook mogelijk voor SegWit om als soft fork te worden uitgevoerd in plaats van een hard fork te vereisen die meer stressvol zou zijn geweest en een splitsing van het netwerk zou hebben geriskeerd.
Grootte versus gewicht
Omdat de oude blocks in grootte werden gemeten, was er ook een update van hoe transacties worden gemeten. SegWit-blocks worden niet gemeten in grootte maar in gewicht. In plaats van elk block in megabytes (grootte) te meten, wordt het gemeten in weight units (WU). Eén SegWit-blok heeft een gewicht van 4 miljoen WU, wat gelijk staat aan 4 megabytes aan gegevens.
De formule voor het berekenen van het gewicht van een SegWit-transactie is:
(Transactieomvang - Getuigengegevens) * 3 + Volledige transactieomvang
Het gewicht van een legacy-transactie wordt anders berekend:
Transactieomvang (grootte) * 4
In feite zijn SegWit-transacties altijd lichter dan legacy-transacties die miners stimuleren om die transacties eerst op te nemen. Legacy-transacties kunnen dan ook meer transactiekosten innen omdat elk block meer transacties zal bevatten. Dit heeft ook gevolgen voor de transactiekosten voor de verzender. Een legacy-transactie is altijd duurder omdat deze zwaarder is en hogere transactiekosten vereist om op dezelfde snelheid als een SegWit transactie te worden bevestigd.
Adresformaten
Er zijn drie soorten adresformaten die zijn geïntroduceerd met Bitcoin. De eerste zijn legacy-adressen, deze beginnen altijd met 1:
1Mpf72Q2xwi1okJL1RCaQeVRPKDhEWRtXt
De tweede zijn SegWit-adressen, deze beginnen met 3:
392PTfCzykHSyteg6umCCvbrofRSoJb96i
En de derde zijn native SegWit (bech32) beginnend met bc:
Bc1qar0srr7xfkvy5l643lydnw9re59gtzzwf5mdq
Native SegWit is een nieuw formaat dat nog gewichtsefficiënter is en een betere fout-detectie biedt dan het oorspronkelijke SegWit-formaat. In feite resulteert het gebruik van bech32 in de goedkoopste vergoedingen en snelst mogelijke transacties op het Bitcoin-netwerk.
FAQ: SegWit
Is SegWit veilig?
Ja, er is geen beveiligingsprobleem bij het gebruik van SegWit. Het is zelfs een beveiligingsupdate omdat je de vervormbaarheid van niet-bevestigde transactie kan limiteren. Op deze manier kan je transactiefraude gedeeltelijk tegengaan.
Zijn er nog andere voordelen?
SegWit maakte de implementatie van Taproot mogelijk, waardoor smart contracts en nog snellere validaties mogelijk zijn.
Moet ik SegWit-transacties accepteren?
Je kunt altijd kiezen voor een legacy-wallet die geen SegWit gebruikt. Het is nog steeds mogelijk om funds te verzenden tussen legacy- en SegWit-adressen. Maar in ruil daarvoor zullen transacties duurder en langzamer zijn.
Wacht, betekent dit dat SegWit de blockgrootte toch vergroot? Waarom is er dan een discussie?
De blockgrootte werd verhoogd tot een theoretisch niveau van 4 megabytes. De gemiddelde blockgrootte is nu ongeveer 2 megabytes. Het voordeel van SegWit is het feit dat het compatibel is met oudere versies door het respecteren van het limiet van 1 megabyte voor transactieblocks. Hierdoor was er geen wijziging nodig van het originele protocol. Het vergroten van de blockgrootte boven die grens heeft een hard fork nodig die als een kritieke gebeurtenis wordt beschouwd.