Wo wird die Änderung der Ausgabe gespeichert?

Ich lerne, dass Bitcoin keine Möglichkeit hat, den Kontostand darzustellen, sondern vielmehr eine Summe von UTXO ist, die den Benutzern des privaten Schlüssels gehört. Wo wird dann die Änderung von der Ausgabe gespeichert?

Was ich meine ist, wenn der Output einer Transaktion als Input für eine andere Transaktion verwendet wird, muss er vollständig ausgegeben werden. Manchmal ist der Münzwert der Ausgabe höher als das, was der Benutzer bezahlen möchte. In diesem Fall generiert der Client eine neue Bitcoin-Adresse und sendet die Differenz an diese Adresse zurück.

Wird die Änderung wieder in UTXO gespeichert?

Antworten (1)

Wenn ein Absender eine Transaktion erstellt, definiert er explizit, welche Bitcoin-Stücke er ausgibt. Wir nennen solche Bitcoin-Stücke Unspent Transaction Outputs (UTXO) und Sie können sich das UTXO-Set als das verteilte Hauptbuch der Bitcoin-Guthaben vorstellen. Der Zustand von UTXO ist ternär: Sie existieren entweder noch nicht, stehen zur Ausgabe zur Verfügung oder wurden ausgegeben. Sie können nicht von einem UTXO abziehen, sie müssen vollständig in einer Transaktion ausgegeben werden.

Spender wählen explizit die Transaktionseingaben aus, indem sie auf den UTXO über seinen eindeutigen Endpunkt verweisen, txid:voutder von der Transaktion abgeleitet ist, die den auszugebenden UTXO und seine Position in der Ausgabeliste erstellt hat.

Nachdem der ausgegebene UTXO deklariert wurde, verfügt der Spender über ein zuweisbares Guthaben, das der Summe des Gesamtwerts der Eingaben entspricht. Der Spender weist den Wert der konsumierten Inputs explizit neuen Outputs zu. Alle nicht zugewiesenen Gelder gelten als Transaktionsgebühren und werden von dem Miner eingezogen, der die Transaktion in einen Block einbezieht.

Dies bedeutet, dass die Summe der zugewiesenen Mittel kleiner oder gleich dem Wert der ausgegebenen UTXOs ist und der Rest die Transaktionsgebühr ist. Für Nicht- Coinbase- Transaktionen gilt Folgendes :

  • Σ(outputs) ≤ Σ(inputs)
  • transaction fees = Σ(inputs) - Σ(outputs)

Es werden also nur die Eingaben und Ausgaben von Transaktionen explizit definiert. Die Transaktionsgebühr wird implizit durch die Inputs und Outputs definiert.

Daraus folgt, dass eine einfache Transaktion, die an einen einzelnen Empfänger gesendet wird, normalerweise zwei Ausgaben hat:

  • einen Empfängerausgang zur Durchführung der Zahlung
  • eine Änderungsausgabe, um die verbleibenden Geldmittel von den Eingängen an den Absender zurückzusenden

Ich habe mir eine zufällige Transaktion von blockchair.com geholt, um sie zu visualisieren:

Transaktion mit einem Eingang und zwei Ausgängen, von denen einer einen runden Zahlenbetrag hat

Wenn Alices Wallet die Änderungsausgabe nicht an sich selbst erstellt hätte, hätte Alice 11.044,… BTC an zusätzlichen Gebühren bezahlt. ;)

Beachten Sie, dass ich aufgrund der runden Zahl einfach vermute, dass die 610 BTC die Empfängerausgabe ist, ich bin mit dieser Transaktion nicht vertraut.

Entschuldigung, ich bin neu bei Bitcoin, könnten Sie das näher erläutern? So sieht es input - output - fee = 0in diesem Fall aus, wenn ich mich nicht irre. Was ist, wenn die Eingabe größer ist als die Summe aus Ausgabe und Gebühr und das Wechselgeld an den Absender zurückgegeben wird, wo wird dieses Guthaben innerhalb eines Blocks gespeichert?
Die Gebühr ist implizit gleich (Eingabe - Ausgabe), sie wird nicht explizit gespeichert. Es gibt also buchstäblich keine Möglichkeit, eine Transaktion zu schreiben, bei der (Eingabe - Ausgabe - Gebühr = 0) nicht gilt.
Vielen Dank für Ihre Antwort. Was bedeutet es dann, von hier aus zu sagen: "Manchmal ist der Münzwert der Ausgabe höher als das, was der Benutzer bezahlen möchte"? de.bitcoin.it/wiki/Change
Bedeutet dieser Satz bezüglich „Wechselgeld“, dass Input – Output = Gebühr + Wechselgeld?
Nein. Änderung ist eine Ausgabe, die explizit vom Ersteller der Transaktion hinzugefügt wurde. Aus der Sicht des Protokolls ist es nur eine Ausgabe, die nicht von anderen Ausgaben zu unterscheiden ist, die die Zahlung tatsächlich ausführen. Wenn die Eingaben größer sind als die Ausgaben + Gebühren, die der Benutzer zahlen möchte, sollte seine Brieftasche (und wird dies im Allgemeinen automatisch) eine Änderungsausgabe hinzufügen, um dies zu kompensieren.
@Kevvv: Ich habe meine Antwort ein wenig bearbeitet, um die Frage, die Sie gestellt haben, besser zu erklären.