Nach Erhalt eines neu geschürften Blocks wird die Block-Zeitstempel-Validierung hier durchgeführt:
https://github.com/bitcoin/bitcoin/blob/master/src/validation.cpp#L3263-L3270
F1: Was die zweite Prüfung betrifft (Zeitstempel des Blocks zu weit in der Zukunft), was hindert einen Miner daran, einen Block zu senden, der sich in der Zukunft dem Limit nähert, und einige der Knoten den Block akzeptieren, während einige andere Knoten den Block ablehnen?
F2: Wenn ein Teil des Netzwerks einen Block akzeptiert und der andere Teil des Netzwerks einen Block ablehnt (dh den Block aufgrund eines ungültigen Zeitstempels nicht in seinem Blockbaum aufzeichnet), kann sich das Netzwerk in irgendeiner Weise davon erholen?
Ich beantworte beide Fragen gleichzeitig. Es ist nicht ungewöhnlich, dass sich das Netzwerk aufspaltet, dh verschiedene Knoten akzeptieren verschiedene Blöcke als Kettenspitze. Tatsächlich passiert dies von Zeit zu Zeit, wenn zwei oder mehr Blöcke gleichzeitig von verschiedenen Bergleuten gefunden werden. Dies wird behoben, wenn der nächste Block über einem der vorherigen Blöcke gefunden wird. Die längste Kette ist gültig.
Und ein Miner kann nicht einfach den Zeitstempel beim Senden setzen. Der Zeitstempel muss gesetzt werden, bevor ein gültiger Nonce gefunden wird. Somit wird ein Miner dazu angeregt, mit einem gültigen Zeitstempel zu schürfen. Wenn der Block vom Netzwerk nicht akzeptiert wird, wird die verwendete Hashrate (und der Stromverbrauch) nicht kompensiert.
Es stimmt, dass dieser Randfall ein Problem darzustellen scheint, aber der Zeitstempel des Blocks ist entweder gültig oder nicht, da es sich um die Zeit seit der Einbettung in den letzten gültigen Block mit den meisten PoW handelt und nicht um die fragliche Ortszeit.
In dem beschriebenen Fall, was nicht der Fall ist, aber falls es irgendwie anders sein sollte, können einige Knoten weiter auf dem Block aufbauen, den die anderen Knoten ablehnen. Wie dies gelöst werden würde, hängt vom Prozentsatz der Netzwerkaufteilung ab. Wenn 51 % oder mehr der Mining-Power den spekulativen Block ablehnen, wird sich das Problem rechtzeitig von selbst lösen, da die gültige Kette weiter verlängert wird als und das meiste PoW hat. Wenn andererseits 51 % oder mehr der Mining-Macht den spekulativen Block akzeptieren, um darauf aufzubauen, wäre ein Eingriff erforderlich, um die noch ablehnenden Knoten aufzunehmen oder die ungültige Kette zu verwerfen.
Wenn ein Block den Konsensregeln (den Regeln des Referenzkunden) entspricht, ist er im Wesentlichen gültig.
Andere haben bereits festgestellt, dass es wirtschaftlich nicht sinnvoll ist, den Zeitrahmen beim Mining zu überschreiten, da dies im Voraus entschieden werden muss, sodass ein wirtschaftlicher Negativanreiz besteht.
Es ist normal und kein Problem, dass sich ein Teil des Netzwerks auf einem Spitzenblock befindet, während sich der Rest auf einem anderen befindet. Wenn es eine Aufteilung wie diese gibt, wird sie schließlich durch nachfolgende Blöcke entschieden.
Wenn ein Block von einem Knoten nicht akzeptiert wird, weil sein Zeitstempel zu weit in der Zukunft liegt, ist die Situation nicht viel anders: Nachdem der Zeitstempel zulässig wird, wird ein zukünftiger Block auf diesem Fork, der diesen Fork zur längsten Kette machen würde, eine Reorg verursachen darauf. Der einzige Unterschied zwischen dieser und einer durch ein gewöhnliches Block Race verursachten Aufteilung besteht also darin, dass die Nodes, die den Block abgelehnt haben, länger brauchen, um ihn zu akzeptieren – nicht bis sowohl die Zeit gültig ist als auch ein neuer Block auf diesem Fork erscheint.
Es ist kein Eingreifen erforderlich.
bgd223