Können wir in einem privaten Blockchain-Netzwerk die ersten N Blöcke löschen und den N+1-ten Block als Genesis-Block neu zuweisen?

Mir ist der Datenverlust bekannt, der durch das Löschen der ersten N-Blöcke verursacht wird. Aber ich bin neugierig zu wissen, ob eine solche Aufgabe möglich ist oder nicht. Wenn ja, wie lässt sich das praktisch umsetzen?

Bei einem Konsenswechsel eines Systems ist alles möglich, wenn alle Beteiligten einverstanden sind – Sie wechseln einfach alle zu einer anderen Software. Die Antwort lautet also offensichtlich ja, aber vielleicht möchten Sie das nicht wissen. Könnten Sie erläutern, warum Sie das tun möchten oder was Sie damit erreichen möchten?

Antworten (1)

Mit Blockchains können Sie im Grunde alles mit einer Hard Fork machen. Im Fall von privaten Blockchains wird es Ihnen viel leichter fallen, einen Konsens für einen Hard Fork zu erzielen, vielleicht so einfach wie die Behörde, die die Blockchain betreibt, die vorschreibt, dass jeder ein Upgrade akzeptieren muss.

Der Genesis-Block ist in der Software fest codiert. Um einen späteren Block als neuen Genesis-Block neu zuzuweisen, müssten Sie diesen Block in einer neueren Version der Software fest codieren. Dies wird nur von Knoten als gültig erkannt, auf denen die neuere Version der Software ausgeführt wird. Unter der Annahme, dass es kein Problem ist, einen Konsens zu erzielen, ist dies möglich.

Eine andere Sache, mit der man sich befassen muss, ist die Blockhöhe und alle darauf basierenden Berechnungen. Es ist einfach, den Client so zu ändern, dass er bei N+1 zu zählen beginnt, aber auch dies muss bei Berechnungen berücksichtigt werden. Dies wird sich auf Dinge wie Schwierigkeitsziele und Halbierungen auswirken. Wenn Sie den gesamten relevanten Code ändern, um dies zu berücksichtigen, sollten Sie in der Lage sein, dafür zu sorgen, dass die Dinge ordnungsgemäß funktionieren.

Können Sie weitere Angaben zur Implementierung machen?
Nicht wirklich. Dies ist nur ein Überblick darüber, was getan werden müsste, und ich habe wahrscheinlich ein paar Dinge übersehen. Ich persönlich finde, dass dies eine seltsame Art ist, ein Problem zu lösen. Ich vermute, dass jedes Problem, das Sie haben, auf andere Weise besser gelöst werden könnte.
Sie müssen auch überlegen, ob es eine zugehörige Datenstruktur wie den UTXO-Satz gibt, die zum Validieren neuer Blöcke benötigt wird. Wenn dies der Fall ist, muss diese Datenstruktur irgendwie zu neuen Knoten gelangen, vorzugsweise durch Herunterladen von vorhandenen Knoten und Vergleichen der Daten mit einem Hash, der mit dem Upgrade-Client verteilt wird.