Wann werden mehrere Transaktionen, die dieselbe Ausgabe in demselben Block ausgeben, als doppelte Ausgaben betrachtet?

Hier ist ein Beispiel für mehrere Transaktionen im selben Block, die alle von derselben Ausgabe ausgegeben werden. Ich habe diese mit der Electrum-Brieftasche erstellt und Electrum angewiesen, jedes Mal ein wenig BTC von derselben 1AD9xV6aeQMPMzfv5Nzk8yNDgtyV3LaUkB-Adresse auszugeben

Siehe: https://blockchain.info/address/1AD9xV6aeQMPMzfv5Nzk8yNDgtyV3LaUkB

Sieht irgendwie nach Doppelausgabe aus

Wenn ich versuche, selbst etwas Ähnliches mit Python und der Pycoin-Bibliothek zu machen, wird die zweite Transaktion als „doppelte Ausgabe“ gekennzeichnet, wenn ich sie an blockchain.info/pushtx sende. Die Antwort, die ich bekomme, ist:

Ein Outpoint ist bereits in [DBBitcoinTx [txIndex=101360418, getEstimatedBTCSent()=0, isGeneratedBlockReward()=false, getTotalBTCSent()=0, getHash()=1766bb1b732db7b3eef1bea27a572651ee343d79ca6c5b9e866e2f97e8df8=5,get()Straning.8=5a ausgegeben ()=BitcoinTx{hash=1766bb1b732db7b3eef1bea27a572651ee343d79ca6c5b9e866e2f97e8df85aa, version=1, lockTime=0, in=[], out=[]}, getClass()=class piuk.blockchain_db.DBBitcoinTx]] [(101355273, 1)]

Wie im ersten Beispiel übersteigt die Gesamtausgabe aller Transaktionen niemals die an dieser Adresse verfügbare Gesamtsumme, daher bin ich neugierig, warum dies als "doppelte Ausgabe" angesehen wird.

Wie sollten Sie eine Reihe von Transaktionen strukturieren, die von derselben Adresse ausgegeben werden, damit keine doppelten Ausgaben ausgelöst werden?

Die drei angezeigten Transaktionen geben unterschiedliche Ausgaben aus.
Blockchain.info ist eine Autorität für nichts, ihre Regeln sind keine Bitcoins-Regeln.
gleiche Adresse bedeutet nicht gleiche Ausgabe . Es ist nur ein Doublespend, wenn es die gleichen Ausgaben ausgibt. Adressen können mehr als einen Ausgang haben.

Antworten (2)

Meine eigene Antwort hinzufügen, nachdem ich etwas recherchiert habe: Eine Adresse und eine Ausgabe sind verschiedene Dinge. Eine Transaktion kann viele Eingaben und viele Ausgaben haben. Hier ist eine gute Visualisierung von bitcoin.org:

Geben Sie hier die Bildbeschreibung ein

Eine doppelte Ausgabe tritt auf, wenn derselbe BTC verwendet wird, um zwei verschiedene Personen zu bezahlen. Dies wird auf der Blockchain niemals passieren, da das Bitcoin-Netzwerk ein konsistentes Ledger garantiert. Aber was ist mit den unbestätigten Transaktionen, die in den Mempools der Miner leben?

Einige Inkonsistenzen im Mempool treten möglicherweise erst auf, wenn sie der Blockchain hinzugefügt oder nicht hinzugefügt werden, andere können wir sofort als ungültig kennzeichnen, z. B. der Betrag übersteigt die verfügbaren Mittel usw.; Wenn unbestätigte Transaktionen nicht auf Gültigkeit geprüft würden, könnte ein Angreifer den Mempool mit gefälschten Transaktionen überschwemmen und das Netzwerk lahmlegen.

Eine übermittelte Transaktion, die genau die gleichen Ein- und Ausgänge wie eine andere unbestätigte Transaktion im Mempool hat, wird vom Bitcoin-Netzwerk abgelehnt (selbst wenn es sich um eine gültige Finanztransaktion handelt). Zum Beispiel könnte ich 1 BTC von A nach B senden, und während die Transaktion unbestätigt ist, weitere 2 BTC von A nach B senden. Solange A 3 BTC hat, um die Überweisungen abzudecken, sind diese Transaktionen konsistent, werden aber konservativ abgelehnt Minenarbeiter.

Sie können dies selbst mit dem Electrum-Wallet mit der Option „Senden von“ sehen. Normalerweise wählt Electrum gültige Eingaben für Sie aus, aber Sie können dies überschreiben. Erstellen Sie eine Transaktion, die die Absender- und Empfängeradressen angibt. Erstellen Sie dann eine weitere Transaktion mit demselben von und bis (der Betrag kann jedoch unterschiedlich sein). Wenn die erste Transaktion noch aussteht, erhalten Sie die folgende Fehlermeldung:

Geben Sie hier die Bildbeschreibung ein

Da die Beträge unterschiedlich sind (23,75 $, 23,89 $ und 24,03 $), können sie unmöglich die gleiche Ausgabe sein.