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 Digital Assets SAS, société immatriculée au registre du commerce et des sociétés de Aix-en-Provence sous le numéro 899 125 090, exploitant le nom commercial Bitstack, est enregistré en tant qu’agent de Xpollens - établissement de monnaie électronique agréé par l’ACPR (CIB 16528 - RCS Nanterre n°501586341, 110 Avenue de France 75013 Paris) - auprès de l’Autorité de Contrôle Prudentiel et de Résolution (“ACPR”) sous le numéro 747088 et agréé en tant que Prestataire de Services sur Crypto-Actif (“PSCA”) auprès de l’Autorité des Marchés Financiers (“AMF”) au titre d’échange de crypto-actifs contre des fonds, d’échange de crypto-actifs contre d’autres crypto-actifs, d’exécution d’ordres sur crypto-actifs pour le compte de clients, la conservation et l’administration de crypto-actifs pour le compte de clients et la fourniture de services de transfert de crypto-actifs pour le compte de clients sous le numéro A2025-003, dont le siège social est situé 100 impasse des Houillères 13590 Meyreuil.

L'investissement dans les actifs numériques comporte un risque de perte partielle ou totale du capital investi.
Les performances passées ne préjugent pas des performances futures.
DOWNLOADEN
Bitstack