Verweisen Sie auf UTXO nach Ausgabeindex oder geben Sie die vollständige Adresse in der Blockchain aus?

Ich schreibe meine eigene einfache Kryptographie und frage mich, ob sich die Eingabe in einer Transaktion auf die unspendierte Ausgabe nur durch ihre TXID und vout (Index im Ausgabevektor in einer Transaktion) ODER durch ihre TXID und die vollständige Adresse in einer Blockchain beziehen sollte - das ist die Blockhöhe , Transaktionsindex in einem Block und Ausgabeindex in einer Transaktion.

Der erste Ansatz scheint einen Fehler zu haben - es ist unwahrscheinlich, aber möglich, dass zwei verschiedene Ausgänge die gleiche TXID und Vout haben.

Aber im zweiten Ansatz brauche ich nicht einmal TXID, wenn ich die vollständige Blockchain-Adresse habe, oder? Ich möchte die Buchführung nicht verdoppeln - wenn es doppelte Daten gibt, müssen Sie sicherstellen, dass sie konsistent sind.

Also meine zwei Fragen sind:

  1. Wie kann das Problem vermieden werden, dass zwei Transaktionen versehentlich dieselben Hashes haben, und zwar auf elegante Weise, die - idealerweise - keine Speicherung vollständiger Adressen erfordert?
  2. Wie wird es in Bitcoin gemacht? (hier schätze ich, dass das Bip34-Update von Bitcoin diesen von mir erwähnten Fehler behoben hat - aber ich verstehe nicht wie)

Allgemeine Lösungsvorschläge sind sehr willkommen. Vielen Dank im Voraus!

Antworten (1)

Bei Bitcoin ging man ursprünglich davon aus, dass Miner, die Blöcke produzieren, eine eindeutige Adresse pro Transaktion verwenden würden, um sicherzustellen, dass die Coinbase jedes Blocks eine eindeutige TXID hat. Da dies nicht erzwungen wurde, führten Benutzer versehentlich doppelte Transaktionen durch, indem sie dieselbe Zieladresse für mehrere gelöste Blöcke einstellten. BIP34 fügt dem Block einfach ein neues zu validierendes Feld hinzu, was erfordert, dass die Höhe auch Teil des Hashs ist, wodurch die Eindeutigkeit für alle zukünftigen Blöcke sichergestellt wird.

Für die beiden BIP34-Blöcke mit Sonderfällen ist das Ergebnis ziemlich einfach. Die erste Instanz der TXID erstellt den UTXO, der zweite Aufruf macht überhaupt nichts, da die Ausgabe bereits existiert, und wenn sie jemals ausgegeben wurden, kann der UTXO nur einmal aus der Datenbank entfernt werden. Das Geld, um das es in der zweiten Instanz des TXID ging, wurde vernichtet, was zu einem Verlust von insgesamt 100 BTC führte.

danke für die Antwort. Coinbase-Ausgaben für dieselbe öffentliche Adresse werden also natürlich gleich gehasht. Aber ist es so, dass nach der Änderung von Bip34 immer noch zwei sehr unterschiedliche Transaktionen auf denselben Hash gehasht werden können, was zu einem Verlust von nicht ausgegebenem Bitcoin führt (weil sha256 doch nicht injektiv ist)?
Die Chance ist praktisch null. Wir entwickeln keine Software mit der Annahme, dass doppelte TXIDs existieren könnten, da wir erhebliche andere Probleme hätten, wenn Kollisionen an der Tagesordnung wären.