Irgendwann meldete der lokale Geth-Knoten tx 2e7a57c55a7cb28d0e233d7745210dba93c09f14c5df4e879db1a530a79a842a im Block 1369316
auf testnet. Es verschwand dann irgendwann während der nächsten 1-12 Blöcke aus der Kette.
Derselbe TX tauchte nach 90 Blöcken auf dem Block wieder auf 1369406
und ist jetzt Teil der Blockchain.
Wie kann das passieren und welchen Grenzfall behandeln wir nicht richtig? Wir waren uns einig, dass das Warten auf 12 Blöcke ausreichen würde.
Wird dies durch einen Fork oder einen Replay-Angriff verursacht? Wenn ja, wie ist damit umzugehen?
Irgendwann meldete der lokale Geth-Knoten tx 2e7a57c55a7cb28d0e233d7745210dba93c09f14c5df4e879db1a530a79a842a im Block 1369316 im Testnetz. Es verschwand dann irgendwann während der nächsten 1-12 Blöcke aus der Kette.
Der lokale Geth -Knoten zeigt die Transaktionsdaten relativ zu seiner aktuellen Kopie der Blockchain; Auch wenn die Transaktion mit dem entsprechenden Hash in der Kopie vorhanden ist, bedeutet dies nicht, dass sie vom Netzwerk bestätigt wurde (sie muss zuerst weitergeleitet und geschürft werden. Erst dann wird sie der Blockchain hinzugefügt).
Derselbe TX tauchte nach 90 Blöcken auf dem Block 1369406 wieder auf und ist jetzt Teil der Blockchain.
Eine Transaktion kann nicht in dem Sinne „(erneut) erscheinen“, dass nur eine einzige Transaktion in der Blockchain mit einem Transaktions-Hash existieren darf, damit die Blockchain gültig ist.
Wenn es "verschwunden" ist, ist eines der folgenden Szenarien wahrscheinlich:
Wir waren uns einig, dass das Warten auf 12 Blöcke ausreichen würde.
Sie können nicht wirklich einen absoluten Wert (von 12) Blöcken verwenden. Die „ausreichende“ Anzahl an Bestätigungen ist abhängig von den Mining-Knoten und deren beworbenen Blöcken. Man kann mit Sicherheit sagen, dass es umso besser ist, je höher die Anzahl der Bestätigungen ist (mehr Knoten haben sich auf die Blockchain „geeinigt“).
Wird dies durch einen Fork oder einen Replay-Angriff verursacht? Wenn ja, wie ist damit umzugehen?
Es ist höchst unwahrscheinlich, dass es durch einen Fork verursacht wird, da sich alle Bergleute darauf einigen müssten, auf einer neuen Blockkette ab einem bestimmten Block zu schürfen.
Nun, nach dem Prinzip der Blockchain, dass jeder beitreten und mit jeder Mining-Power beitragen kann, kann es nicht gemildert werden (durch die aktuellen Implementierungen von Ethereum). Eine Lösung wäre die Verwendung von zugelassenen Blockketten (dh eris ), die ACLs für Peers ermöglichen, die dem Netzwerk beitreten.
Christoph Franko