Was passiert, wenn zwei Transaktionen an dieselbe Adresse gesendet werden?

Ich würde gerne wissen, welche Folgen es hat, Bitcoin mehrmals an dieselbe Adresse zu senden. Nehmen wir an, ich sende 1 BTC von Adresse1 an Adresse3 und später sende ich erneut 2 BTC von Adresse2 an Adresse3. In der Blockchain werden sowohl 1 BTC- als auch 2 BTC-Transaktionen registriert. Was passiert also, wenn ich 2,5 NTC von Adresse3 an eine neue Adresse senden möchte?

Antworten (1)

Es funktioniert gut.

Bitcoin-Transaktionen können mehrere Ein- und Ausgänge haben; Jede Eingabe ist ein "Zeiger" auf eine Ausgabe einer vorherigen Transaktion (insbesondere besteht sie aus einer Transaktions-ID und einem Ausgabeindex). Sie würden also eine neue Transaktion mit zwei Eingaben erstellen:

  • die A1->A3-Transaktion (oder genauer gesagt, die bestimmte Ausgabe dieser Transaktion, die A3 gutgeschrieben hat)

  • die A2->A3-Transaktion (wieder die bestimmte Ausgabe).

Es ist nicht notwendig, Beträge in die Inputs aufzunehmen, da die Regel ist, dass jeder Input vollständig verbraucht werden muss. Wir haben also jetzt Eingaben im Wert von 3 BTC in unserer Transaktion.

Eine Ausgabe besteht aus einem Betrag und einer Zieladresse. (Man kann auch ein Skript haben, das die Zahlung auf kompliziertere Weise leitet, mehrere Unterschriften erfordert usw., aber lassen Sie uns das vorerst ignorieren.) Sie möchten zwei Ausgaben haben:

  • Eine Ausgabe, die 2,5 BTC an die gewünschte Zieladresse zahlt, nennen Sie sie A4

  • Eine Ausgabe, die das „Wechselgeld“, 0,5 BTC, an eine Adresse von Ihnen zahlt. Sie könnten wieder A3 verwenden, aber im Allgemeinen ist es besser, eine neu generierte Adresse zu verwenden; nenne es A5.

(Eigentlich wäre die zweite Ausgabe im wirklichen Leben eher so etwas wie 0,4995 BTC. Die verbleibenden 0,0005 BTC würden in keiner Ausgabe erscheinen; es wäre eine Transaktionsgebühr, die von dem Miner erhoben wird, der diese Transaktion in einen Block einbezieht.)

Für einen Endbenutzer wird dies alles unter der Haube von seiner Wallet-Software erledigt. Der Benutzer gibt einfach an, dass er 2,5 BTS an A4 zahlen möchte, und die Software kümmert sich darum, geeignete Transaktionen zu identifizieren, die als Eingaben verwendet werden sollen, und die erforderliche Änderungsausgabe zu erstellen. Manchmal verwirrt dies die Leute, wenn sie sehen, dass nach der Transaktion das Guthaben in A3 von 3 auf 0 gesunken ist, wenn sie nicht wissen, dass die verbleibenden 0,5 BTC an eine neue Adresse A5 gegangen sind, die immer noch ihnen gehört.

Vielen Dank Steven. Es ist eine sehr ausführliche Antwort. Allerdings habe ich noch Zweifel auf Protokollebene. Lassen Sie mich erklären, die erste Transaktion (A1->A3) wird in Block 444.444 der Blockchain gespeichert, und die zweite Transaktion (A2->A3) wird in Block 444.555 (111 Blöcke später) gespeichert. Wenn ich versuche, die Waage zu bewegen, gibt es zwei verschiedene Blöcke mit zwei verschiedenen Waagen für dieselbe Adresse (A3). Bedeutet es dann, dass das Protokoll alle nicht ausgegebenen Guthaben für eine bestimmte Adresse aufsummiert? (überprüft dann die gesamte Blockchain).
Im Gegenteil – die Blöcke enthalten überhaupt keine Kontostandsinformationen, es gibt also keine Inkonsistenz. Es gibt eine Transaktion mit einem Betrag von 2 BTC und eine weitere Transaktion mit einem Betrag von 1 BTC. Nirgendwo in der Blockchain werden diese Zahlen addiert, um 3 BTC zu ergeben; Tatsächlich stellt die Blockchain keine Verbindung zwischen mehreren Transaktionen mit derselben Adresse her. Es liegt an Ihrer Client-Software, alle nicht verbrauchten Ausgaben in der Kette zu verfolgen, die Ihren Adressen entsprechen, und sie zu summieren, um Ihr Gesamtguthaben anzuzeigen.
Das System kümmert sich nicht darum, dass derselbe Schlüssel in der Lage ist, beide nicht verbrauchten Ausgaben zu beanspruchen. Soweit es das betrifft, sind sie nur zwei unverbrauchte Ausgaben in einem Pool von vielen, vielen unverbrauchten Ausgaben.