Kann es in der "Header First"-Implementierung veraltete Blöcke geben?

Der Bitcoin-Entwicklerleitfaden erwähnt veraltete Blöcke als nicht in der längsten Kette und geht dann zu verwaisten Blöcken über. Es besagt, dass Sie keine verwaisten Blöcke erhalten, "und wenn Sie dies tun", werden sie einfach gelöscht. Aber es wird nicht erwähnt, ob veraltete Blöcke auch "aufgegeben" werden (mangels eines besseren Begriffs).

ps Ich denke darüber nach, eine Blockchain für Punkte in meinem Spiel zu verwenden, um eine universelle Top-Ten-Sache zu haben. Alle Kommentare willkommen.

Antworten (2)

Veraltete und verwaiste Blöcke sind verwirrende Begriffe mit vielen Bedeutungen, je nachdem, wen Sie fragen.

Wenn Sie mit veralteten Blöcken "Blöcke meinen, die sich auf Zweigen der Hauptkette befinden, aber ansonsten gültig sind", ja, diese existieren noch. Sie sind Proof-of-Work-Ketten inhärent, da man den Fall nicht vermeiden kann, dass gelegentlich zwei Miner einen konkurrierenden Block produzieren. Notwendigerweise kann höchstens einer von ihnen gewinnen, und der andere wird schal.

Wenn Sie mit verwaisten Blöcken "Blöcke meinen, deren übergeordneter Header unbekannt ist", existieren diese tatsächlich nicht mehr. Sie waren ein Artefakt der bis 0.9 verwendeten Synchronisationsimplementierung. Seit 0.10 fordern wir Blöcke nur an, wenn wir alle Header in ihrer Herkunft validiert haben, sodass Blöcke ohne bekannte Header nicht mehr auftreten können.

Ok, du hast gerade dasselbe gemacht.
@SiteNook: Wenn Sie Pieter bitten wollten, einen Punkt klarer zu machen, glaube ich nicht, dass Sie Ihren Standpunkt verständlich ausgedrückt haben.
Es ist wichtig anzumerken, dass der Begriff „verwaister Block“ fast allgemein verwendet wird, um „veralteter Block“ zu bedeuten. Der Grund für diese Verwirrung ist, dass, wenn Sie ein Miner sind und einen Block abbauen und dieser Block später veraltet ist, die Coinbase-Transaktion, die die Zahlung in Ihrer Brieftasche anzeigt, den Status „verwaist“ anzeigt, weil die Brieftasche den Block, aus dem sie stammt, nicht mehr verfolgt -- aus Sicht des Wallets hat die Transaktion kein übergeordnetes Element. Also fingen die Leute an, veraltete Blöcke als verwaiste Blöcke zu bezeichnen, obwohl „verwaiste Blöcke“ bereits im System verwendet wurden und etwas ganz anderes bedeuteten.

OK, ich habe mehr über veraltete Blöcke in Memory Pools herausgefunden .
Es gibt eine Beschreibung, wie veraltete Blöcke nacheinander mit Ersatz wieder in den Pool hinzugefügt werden, um sofort entfernt zu werden, wenn der Ersatzblock bereits enthalten ist, oder anderweitig vom Bitcoin Core als neue Transaktionen erneut hinzugefügt zu werden, wodurch bestätigte Transaktionen entfernt werden.
Hier ist der Absatz, falls der Link fehlschlägt:

Transaktionen, die in Blöcke abgebaut werden, die später zu veralteten Blöcken werden, können dem Speicherpool wieder hinzugefügt werden. Diese neu hinzugefügten Transaktionen können fast sofort wieder aus dem Pool entfernt werden, wenn die Ersatzblöcke sie enthalten. Dies ist bei Bitcoin Core der Fall, der veraltete Blöcke nach und nach aus der Kette entfernt, beginnend mit der Spitze (höchster Block). Wenn jeder Block entfernt wird, werden seine Transaktionen dem Speicherpool wieder hinzugefügt. Nachdem alle veralteten Blöcke entfernt wurden, werden die Ersatzblöcke nacheinander der Kette hinzugefügt, die mit der neuen Spitze endet. Wenn ein Block hinzugefügt wird, werden alle Transaktionen, die er bestätigt, aus dem Speicherpool entfernt.

Nach Ihrer Antwort zu urteilen, versuchen Sie herauszufinden, wie eine Kettenreorganisation abläuft. Vielleicht möchten Sie sich die Fragen ansehen, die mit dem Kettenreorganisations- Tag gekennzeichnet sind.