Kann eine geringe Gebühr für unbestätigte Transaktionen die Bestätigung nachfolgender Transaktionen verhindern?

Um genauer zu sein, betrachten Sie die folgende Situation:

  1. Adresse A erhält eine Eingabe von 4 BTC.
  2. Sie versuchen, eine Transaktion von A nach B mit 1 BTC und einer sehr niedrigen Gebühr durchzuführen, was bedeutet, dass sie lange Zeit unbestätigt ist. Die Ausgabe der Transaktion sind B und A (um die Änderung von ~3 BTC nach Gebühren zu berücksichtigen)
  3. Bevor Sie auf die Bestätigung der vorherigen Transaktion warten, senden Sie erneut von A nach B, dieses Mal senden Sie 2 BTC mit einer höheren Gebühr, in der Hoffnung, dass es schnell bestätigt wird.

Meine Frage ist, da die Ausgabe der ersten Transaktion dieselbe Adresse A ist, muss sie zuerst bestätigt werden, damit die zweite Transaktion durchgeführt werden kann, da die Eingabe der zweiten Transaktion A ist?

In diesem Beispiel habe ich Beträge verwendet, um sicherzustellen, dass für jede Transaktion "genug" Bitcoin vorhanden ist (denn wenn Sie 1 BTC haben und versuchen, es zweimal zu senden, sehen Sie intuitiv, warum es nicht funktionieren sollte).

Nehmen Sie an, dass keine zusätzlichen Adressen automatisch von der Brieftasche generiert werden, um damit umzugehen. Ich spreche von diesem spezifischen Wiederverwendungsszenario von Adressen.

Antworten (1)

Ja, wenn die zweite Transaktion die Ausgabe der ersten ausgibt, kann Nr. 2 erst bestätigt werden, nachdem Nr. 1 bestätigt wurde. (Obwohl sie in einem einzigen Block bestätigt werden können, solange #1 vor #2 in diesem Block erscheint, in diesem Fall sind die Bestätigungen effektiv gleichzeitig.)

Die meisten Bergleute werden Transaktionen auf der Basis „Kind zahlt für Eltern“ in Betracht ziehen, sodass eine niedrige Gebühr für #1 durch eine hohe Gebühr für #2 kompensiert werden könnte. Die beiden Transaktionen würden mit ihrer kombinierten Gebühr als ein einziger „Klumpen“ betrachtet, und ein Miner würde sie bestätigen, wenn der kombinierte Klumpen eine höhere Gebühr zahlt als die nächstlukrativste Transaktion (oder Klumpen), die diesen Raum füllen könnte.

Zwei weitere Klarstellungen: (1) Bedeutet das, dass Sie Ihre Nutzung einer Brieftasche effektiv sperren können, da Sie nur eine dumme Transaktion mit niedrigen Gebühren hatten und alle Ihre Bitcoins mit einer einzigen Eingabe an einer einzigen Adresse angekommen sind? (2) Warum sollte es wichtig sein, wenn in meinem Beispiel die 2 Transaktionen im Mempool schweben und Sie eine von ihnen zuerst bestätigen können, ohne etwas über die erstere zu wissen? Prüfen Miner jede Transaktion, die sie bestätigen, auch mit jeder anderen Transaktion im Pool?
@AhiaCohen (1) Es ist nicht dauerhaft "gesperrt". Selbst wenn Nr. 1 nie bestätigt wird, können Sie immer noch eine andere Transaktion Nr. 1a erstellen, die Ihre ursprüngliche Eingabe von 4 BTC ausgibt und sie entweder an Adresse B oder an einen anderen gewünschten Ort sendet. Dies ist eine doppelte Ausgabe, und andere Knoten im Netzwerk mögen Sie möglicherweise nicht sehr, wenn Sie es senden, während sie noch die Nummer 1 in ihrem Mempool haben (Bitcoin Core wird die Verbindung zu Ihnen trennen und Ihre IP für eine Weile sperren, denke ich). , aber es ist nicht durch das Protokoll verboten, und #1a könnte schließlich anstelle von #1 bestätigt werden.
@AhiaCohen: (2) Sie können Nr. 2 nicht vor (oder ohne) Nr. 1 bestätigen, das sage ich. Es ist eine Protokollregel, dass eine Transaktion in einem Block nur auf Eingaben verweisen darf, die bereits als Ausgaben früherer Transaktionen vorhanden sind. Jeder Block, der #2 enthält, wenn #1 nicht bereits in einem vorherigen Block in der Kette (oder früher im selben Block) ist, ist ein ungültiger Block und wird vom Netzwerk zurückgewiesen. Miner tun und müssen dies überprüfen.
Über (2), aber da Nr. 1 noch unbestätigt ist, ist es nicht in der Blockchain. Und als Eingabe kann #2 die ursprüngliche Eingabe in die Brieftasche der 4 BTC nehmen, nein (da #1 unbestätigt ist, gibt es immer noch ein UTXO von 4 BTC in Adresse A).
@AhiaCohen: Ich verstehe. Ja, das ist die Situation, die ich in meiner Antwort auf (1) beschrieben habe; In diesem Fall ist Ihre Nr. 2 das, was ich Nr. 1a genannt habe. Es hat alle üblichen Probleme einer doppelten Ausgabe. Wallet-Software wird dies normalerweise nicht standardmäßig tun; sie werden es vorziehen, die "change"-Ausgabe von #1 auszugeben, da sie davon ausgehen, dass Sie tatsächlich möchten, dass #1 sie bestätigt, wenn möglich.
Danke, das verdeutlicht es etwas. Nur noch ein letztes Bit: Kann die Brieftasche wählen, als Eingabe für #2 die Ausgabe von #1 zu nehmen, obwohl sie nicht bestätigt ist? Ich bin davon ausgegangen, dass es nur Dinge als Ausgabe nehmen kann, die bereits in der Blockchain registriert sind, aber wenn nicht, dann sollte ich wahrscheinlich wütend auf meine Brieftasche sein, weil sie dieses Durcheinander verursacht hat.
@AhiaCohen: Ja, das kann es, und Wallets tun dies oft. Dies basiert auf dem häufigen Fall, dass Nr. 1 ziemlich bald bestätigen wird und der Benutzer möglicherweise nicht warten möchte, bevor er weitere Transaktionen erstellt. Wenn die Gebühren ausreichen und der Blockplatz nicht knapp ist (was bei der Entwicklung der meisten aktuellen Wallet-Software der Fall war), dann ist es schön, mehrere Transaktionen in die Warteschlange stellen zu können, und sie könnten alle zusammen im nächsten Block bestätigt werden .