Comment exactement l'horodatage est-il calculé pour la règle d'acceptation +2h et dois-je l'implémenter dans mon nœud Bitcoin pour que le nœud soit toujours valide ?
Ces derniers temps, j'ai lu de nombreux articles et questions/réponses sur bitcoin.stackexchange liés à l'horodatage, mais j'ai encore du mal à comprendre certaines choses. Ils sont liés à la compréhension de certains aspects de la « règle +2h » dans le cadre de l’acceptation de bloc, je les ai donc listés ci-dessous.
Premièrement, si je comprends bien, un bloc sera accepté si son horodatage est jusqu'à 2 heures supérieur à l'heure actuelle ajustée au réseau calculée par le nœud donné.
J'ai trouvé des réponses liées à l'heure ajustée au réseau, mais je ne suis pas sûr d'avoir bien compris.
Si je comprends bien, chaque nœud calcule son heure ajustée au réseau comme suit : lors de la connexion initiale aux pairs, le nœud reçoit les horodatages UTC de tous les pairs dans le message de version. Il calcule la différence entre son horodatage UTC local (système) actuel et l'horodatage UTC reçu de l'homologue. Ces différences sont triées et la médiane est trouvée. L'heure ajustée au réseau est obtenue en additionnant l'heure locale actuelle (horodatage UTC) du nœud et la médiane calculée. Dans un monde idéal (un réseau complètement synchronisé), l’heure ajustée au réseau et l’heure locale du nœud seraient équivalentes puisque toutes les différences seraient égales à 0 et donc à la médiane. De plus, si la différence entre l'heure système actuelle (horodatage UTC) du nœud et l'heure calculée ajustée au réseau (horodatage UTC) est supérieure à 70/90 minutes, l'heure ajustée au réseau est définie sur l'heure système donnée du nœud ( Horodatage UTC). Ainsi, lorsqu'un nouveau bloc arrive, si l'horodatage du bloc est dans la plage de l'horodatage local du nœud + médiane précédemment calculée (horodatage local + médiane = heure ajustée du réseau du nœud) + 2 heures, le bloc est accepté par ce nœud. (en supposant que les autres règles soient satisfaites).
D'après ce que j'ai compris jusqu'à présent, la "règle +2h" ne fait PAS partie du consensus mais représente uniquement la politique d'acceptation de l'implémentation Bitcoin Core du nœud complet Bitcoin. La règle consensuelle est uniquement que l'horodatage du bloc doit être supérieur à l'horodatage médian des 11 derniers blocs.
