Timestamp overflow: stopt Bitcoin in 2106?

Beschikbaar als podcast
Deel het artikel:

Als je geïnteresseerd bent in informatica, heb je misschien al gehoord van de beroemde bug van het jaar 2038, die van invloed zal zijn op alle computersystemen die het Unix-tijdstempel gebruiken dat is opgeslagen als een 32-bits geheel getal met teken. Op Bitcoin gaat deze bug ons niet aan. Bitcoin-tijdstempels hebben echter ook een maximale waarde die niet kan worden overschreden. Deze drempel wordt bereikt op 7 februari 2016.

Dus zal het jaar 2106 de doodsteek betekenen voor Bitcoin? In dit artikel inventariseren we deze relatief onbekende gebeurtenis met jou.

Wat is de tijdstempel op Bitcoin?

Op het Bitcoin-protocol wordt een blockchain gebruikt om dubbele uitgaven te voorkomen. Elke transactie wordt in een blok met een tijdsbestek geplaatst. Met andere woorden, we zetten op elk blok een uur en een dag om ze in chronologische volgorde te kunnen zetten. Dit tijdsbestek is wat we een „tijdstempel” noemen.

Dankzij dit mechanisme kan een node, wanneer een nieuwe Bitcoin-transactie ontvangt in afwachting van bevestiging, verifiëren dat diezelfde Bitcoins in het verleden nog niet zijn uitgegeven. Op deze manier vermijden we dubbele uitgaven voor het systeem, zonder dat het afhankelijk wordt van een centrale autoriteit.

De tijdstempel staat in de kop van elk blok. Het is een 32-bits geheel getal dat is gebaseerd op UNIX-tijd. Om dit tijdsbestek te bepalen, tellen we het aantal seconden dat is verstreken sinds 1 januari 1970, en dat geeft ons een geheel getal. Als ik dit artikel schrijf, zijn er bijvoorbeeld 1.693.498.694 seconden verstreken sinds 1970. Het enige wat ik hoef te doen is dit gehele getal naar binair getal converteren om mijn tijdstempel te krijgen. In dit geval zou dit ons het volgende opleveren: 01100101110001100100101011111110. Zo kun je blokken op Bitcoin een tijdstempel geven.

Wat is er mis met het jaar 2106 op Bitcoin?

De tijdstempel op Bitcoin wordt gedaan op 32-bits gehele getallen zonder teken. Dit betekent dat je 32 nullen of één op een rij kunt zetten om de tijd weer te geven, maar niet nog een. Er is dus een limiet aan de interpretatie van tijd binnen Bitcoin. De maximale waarde die kan worden gebruikt is als volgt: 1111111111. In decimale waarde geeft dit ons 4.294.967.295 seconden, en deze tijd komt overeen met de datum 7 februari 2106.

Nadat deze datum is overschreden, loopt de tijdstempel over en wordt deze teruggezet naar nul. Computersystemen die dit formaat gebruiken, zullen de huidige datum interpreteren als 1 januari 1970, terwijl dit in werkelijkheid 2106 is.

Laten we een analogie trekken om dit fenomeen beter te begrijpen. Sommige kilometertellers van oude auto's zijn beperkt tot 6 cijfers. Als gevolg hiervan is de maximale waarde die kan worden weergegeven 999.999 km. Zodra deze limiet is bereikt, gaat de teller terug naar nul en begint opnieuw te tellen. De kilometers die de auto al heeft afgelegd, hebben echter plaatsgevonden. Daarom is er een verschil tussen de geïnterpreteerde waarde en de werkelijke waarde, vanwege het aantal cijfers dat kan worden weergegeven. Voor de tijdstempel op Bitcoin geldt precies hetzelfde principe.

Als er niets wordt gewijzigd in het Bitcoin-protocol, betekent deze discrepantie tussen de interpretatie van het tijdstempel en de realiteit dat er geen nieuwe blokken kunnen worden gepubliceerd. Er zijn inderdaad twee beperkingen op de tijdstempel van een blok om het door de knooppunten te kunnen accepteren:

  • Het moet langer zijn dan de mediane tijd van de vorige 11 blokken;
  • en het zou minder moeten zijn dan de mediaan van de tijdstempels van het knooppunt plus 2 uur.

Zodra de 32-bits tijdstempel zijn maximale waarde heeft bereikt op 7 februari 2016, kunt u nog steeds maximaal 6 blokken publiceren (dit komt omdat de ondergrens een mediaan is). Dan zou de blockchain moeten stoppen en zouden er geen transacties meer kunnen worden bevestigd.

Gelukkig zijn er veel oplossingen om deze datum te omzeilen en zo mogelijke gevolgen voor Bitcoin te voorkomen.

📌 Het verschil tussen 32-bits gehele getallen met en zonder teken zit in het aantal beschikbare bits. De niet-ondertekenden maken volledig gebruik van 32 bits (dat is wat we hebben op Bitcoin), terwijl de ondertekende één bit reserveert voor het teken, waardoor er 31 bits overblijven om een positief getal weer te geven (dit is wat wordt gebruikt op systemen die getroffen zijn door de 2038-bug).

➤ Meer informatie over het bouwen van een blok op Bitcoin.

Hoe los je het 2106-probleem op?

Maak je geen zorgen, we hebben nog meer dan 80 jaar om dit kleine probleem op te lossen! Hiervoor bestaan verschillende oplossingen. Het meest natuurlijk zou zijn om de grootte te wijzigen van het gehele getal dat wordt gebruikt om de tijdstempel op Bitcoin op te schrijven. We zouden dus 64-bits gehele getallen kunnen gebruiken, wat ons in staat zou stellen de tijdslimiet in de toekomst naar enkele honderden miljarden jaren te verleggen.

Een andere oplossing zou zijn om een 32-bits tijdstempel te behouden, maar dan geïnterpreteerd als een 64-bits geheel getal. Alleen de laatste 32 bits van het gehele getal zouden in de blokkop worden genoteerd, maar bij elke overloop zouden de knooppunten 2^32 optellen bij de genoteerde waarde om de werkelijke waarde te krijgen. Knooppunten kunnen overlopen detecteren zodra de 32-bits tijdstempel sterk daalt in vergelijking met eerdere blokken.

Deze twee oplossingen zijn echter hard forks. De Bitcoin-gemeenschap zal in de komende 80 jaar moeten instemmen om deze verandering te voorzien, voordat de noodlottige datum van 7 februari 2016 aanbreekt.

➤ Ontdek het verschil tussen een harde vork en een zachte vork.

Conclusie

In Bitcoin-blokheaders is de tijdstempel een 32-bits geheel getal zonder teken. Hiermee kunt u een tijdmarkering aan het blok koppelen. Op deze manier kunnen we de chronologische volgorde van transacties bepalen en zo de dubbele besteding van bitcoinmunten vermijden.

Deze tijdstempel bereikt zijn maximale waarde op 7 februari 2016 en zorgt ervoor dat de Bitcoin-blockchain stopt als er niets wordt gedaan. Gelukkig is deze bug niet alleen erg afgelegen, maar ook heel gemakkelijk op te lossen. Operators met volledige nodes moeten het protocol vóór deze deadline via een hard fork updaten. Het doel is om ofwel de interpretatie van het integer-tijdstempel te wijzigen, ofwel de grootte ervan uit te breiden tot 64 bits, zodat Bitcoin nog een paar honderd miljard jaar kan functioneren.

Hulpbronnen:

Beschikbaar als podcast

Samenvatting

Deel het artikel:

Misschien vind je deze items leuk

Bitstack SAS, een bedrijf geregistreerd in het Handels- en Vennootschapsregister van Aix-en-Provence onder nummer 899 125 090, met de handelsnaam Bitstack, is geregistreerd als agent van Xpollens - een instelling voor elektronisch geld die is goedgekeurd door de ACPR (CIB 16528 - RCS Nanterre nr. 501586341, 110 Avenue de France 75013 Paris) - bij de Prudential Control and Resolution Authority („ACPR”).”) onder de nummer 747088 en goedgekeurd als Crypto-Asset Service Provider („PSCA”) bij de Autorité des Marchés Financiers („AMF”) als uitwisseling van cryptoactiva voor fondsen, de uitwisseling van cryptoassets voor andere cryptoassets, de uitvoering van orders op cryptoassets voor rekening van klanten, de bewaring en administratie van cryptoassets namens klanten en de levering van diensten voor de overdracht van cryptoactiva namens klanten onder het nummer A2025-003, waarvan het hoofdkantoor is gevestigd te 100 Impasse des Houillères 13590 Meyreuil.

Investeren in digitale activa houdt het risico in van gedeeltelijk of volledig verlies van geïnvesteerd kapitaal.
In het verleden behaalde resultaten zijn geen garantie voor toekomstige prestaties.
DOWNLOADEN
Bitstack