NBitCoin analysiert Blockchain

Vielleicht ist diese Frage völlig dumm, aber ich verstehe sie einfach nicht: Ich mache einige POC-Arbeiten, um das BitCoin-Netzwerk ein wenig besser zu verstehen, und habe C# und die NBitCoin-Bibliothek als meine Implementierung dafür gewählt. Jetzt habe ich versucht, die Blockchain zu lesen (mit einer aktuellen Version von BitCoinCore, die lokal auf meinem Computer installiert ist und ausgeführt wird), als ich auf eine unerwartete Ausnahme gestoßen bin: Ein Transaktions-Hash scheint zweimal in der Kette zu existieren. Der Hash sieht so aus: d5d27987d2a3dfc724e359870c6644b40e497bdc0589a033220fe15429d88599 Ich fand ihn einmal am Block 14.11.2010 17:59:48 und dann nochmal am 14.11.2010 21:04:51 In beiden Fällen ist die neue Entry-Coin die Transaktion gleich. Wenn ich den Hash auf blockexplorer.com nachschaue, kann ich ihn am 14.11.2010 22:04:51 finden (sie verwenden dort ein anderes Datumsformat, ich habe es nur konvertiert, um mit den anderen in diesem Beitrag übereinzustimmen.)

Was mache ich hier falsch? Ich meine ... Ich schätze, dass doppelte Transaktions-IDs in der gesamten Kette vorkommen können, schließlich sind sie nur Hashes, aber wie sollte ich jemals die Ausgabeneingabe mit einem dieser Hashes abgleichen, wenn der Hash, auf den ich mich beziehe, nicht eindeutig ist?

Ich bin hier gerade echt verwirrt und würde mich über gute Erkenntnisse freuen.

Antworten (1)

Du machst nichts falsch. Sie müssen nur in der Lage sein, mit diesen doppelten Transaktions-IDs umzugehen. Es passiert tatsächlich ein paar Mal, bevor BIP 30 in Kraft trat, wodurch solche doppelten txids ungültig wurden.

Diese Duplikate treten auf, weil die Coinbase-Transaktion in zwei verschiedenen Blöcken genau gleich sein kann, sodass sie genau dieselbe txid haben. Dies liegt daran, dass es vor BIP 34 nichts gab, was jede Coinbase-Transaktion einzigartig macht; Sie könnten eine Transaktion haben, die an genau dieselbe Adresse mit genau demselben Betrag (der Blocksubvention) auszahlt, und wenn Sie keine Coinbase-Zeichenfolge festlegen oder eine Extranonce in der Coinbase verwenden, haben Sie zwei identische Coinbase-Transaktionen.

Um die beiden Fälle zu handhaben, in denen Transaktionsduplizierungen auftreten, sollten Sie für diese Blöcke eine Ausnahme von der BIP 30-Regel zulassen. Die Transaktion, auf die diese doppelten txids verweisen, wenn sie ausgegeben werden, kann nur die letzte doppelte Transaktion sein. Alle vorherigen sind völlig unentbehrlich.

OK, was Sie hier sagen, ist also, dass die erste Transaktion im Grunde verloren ist, richtig? Ich verstehe, dass dies in der Coinbase leicht passiert, aber was wäre der (neue/aktuelle) Weg, damit umzugehen, wenn es sich um eine Standardtransaktion handelt und es nur zufällig passiert ist?
Ja. Wenn Sie zum ersten Mal eine doppelte Transaktion sehen, ist diese Transaktion verschwunden.