Wie werden Transaktionsgebühren aus technischer Sicht eingefordert?

Eine typische Transaktion hat eine oder mehrere Eingaben und eine oder mehrere Ausgaben. Da für Inputs keine Betragsangabe gemacht wird, gilt die Regel, dass immer ALLE Inputs überwiesen werden. Jede Diskrepanz zwischen dem in den Eingängen enthaltenen Wert und dem Gesamtwert der Ausgänge geht für immer verloren.

Wenn eine Transaktion zum ersten Mal übermittelt wird, kann es zu einer Diskrepanz zwischen den Werten der Ein- und Ausgänge kommen. Der Bergmann, der den Block zusammenbaut, kann diese nicht berücksichtigte Differenz an sich selbst oder an eine beliebige Adresse umleiten, die als „Transaktionsgebühr“ bezeichnet wird. Meine Frage ist jedoch, wie sie das tun?

Es scheint, dass die einzige Möglichkeit, dies zu tun, darin besteht , der Transaktion eine neue Ausgabe und ein neues Skript hinzuzufügen, um den Wert an die Ausgabe zu senden. Mit anderen Worten, der Miner würde die Transaktion von dem vom ursprünglichen Poster eingereichten Formular auf ein neues Formular einschließlich der Gebührenübermittlung ändern.

Wird die Transaktion jedoch nicht gehasht, um zu verhindern, dass jemand sie ändert? Wenn ein Miner es ändern kann, warum nicht ändern, um alle Eingaben an sich selbst zu richten?

Antworten (2)

Eine typische Transaktion hat eine oder mehrere Eingaben und eine oder mehrere Ausgaben. Da für Inputs keine Betragsangabe gemacht wird, gilt die Regel, dass immer ALLE Inputs überwiesen werden. Jede Diskrepanz zwischen dem in den Eingängen enthaltenen Wert und dem Gesamtwert der Ausgänge geht für immer verloren.

Das ist nicht richtig. Die Differenz zwischen dem Eingabebetrag und dem Ausgabebetrag ist genau das, was wir Gebühr nennen . Es ist nicht verloren.

Es scheint, dass die einzige Möglichkeit, dies zu tun, darin besteht, der Transaktion eine neue Ausgabe und ein neues Skript hinzuzufügen, um den Wert an die Ausgabe zu senden. Mit anderen Worten, der Miner würde die Transaktion von dem vom ursprünglichen Poster eingereichten Formular auf ein neues Formular einschließlich der Gebührenübermittlung ändern.

Das ist nicht möglich. Miner können Transaktionen nicht ändern.

Stattdessen gibt es einfach eine Regel, dass die Coinbase-Transaktion (die erste Transaktion in jedem Block, erstellt vom Miner) Ausgänge haben darf, deren summierter Betrag bis zum Subventionswert (derzeit 25 BTC, bald 12,5 BTC) plus der Summe beträgt aller Gebühren der anderen Transaktionen im Block.

Jede Diskrepanz zwischen dem in den Eingängen enthaltenen Wert und dem Gesamtwert der Ausgänge geht für immer verloren.

Nein nicht wirklich. Die Diskrepanz zwischen dem Wert der verbrauchten Inputs und dem Wert der zugewiesenen Outputs ist die Transaktionsgebühr.

Bergleute können keine Transaktionen ändern oder Ausgaben hinzufügen, da dies die Signatur ungültig machen würde. Stattdessen kassieren sie die Transaktionsgebühren in der Coinbase-Transaktion .

Die drei relevanten Regeln sind dabei:

  1. Für eine reguläre Transaktion: Σ(inputs) ≥ Σ(outputs)
    Die Differenz kann als Transaktionsgebühr erhoben werden.
  2. Für die Coinbase-Transaktion: output ≤ block subsidy + transaction fees
    Die Ausgabe entspricht der Blocksubvention und den Gebühren, wenn der Miner sie vollständig einzieht.
  3. Für einen Block: Σ(inputs) + block subsidy ≥ Σ(outputs)
    Auch dies ist gleich, wenn der Miner die maximal zulässige Belohnung einsammelt.