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?
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:vout
der 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:
Ich habe mir eine zufällige Transaktion von blockchair.com geholt, um sie zu visualisieren:
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.
Kevvv
input - output - fee = 0
in 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?Pieter Wuille
Kevvv
Kevvv
Pieter Wuille
Murch