Kann nLockTime TX zum Fluten von Mempools verwendet werden?

Was würde passieren, wenn ich viele große Transaktionen mit einem sehr hohen erstellen würde nLockTime?

Würde mich etwas davon abhalten, nicht nur die Mempools der Miner, sondern auch die Mempools der regulären Nodes zu füllen ?

Würden Miner Transaktionen mit unangemessen hohen nLockTimeund niedrigen Transaktionsgebühren fallen lassen?

Was würde BitcoinCore tun?

Folgendes wurde aus der Frage entfernt, würde aber wahrscheinlich helfen, eine Antwort zu beginnen: themos: "lockTime verhindert, dass eine Transaktion in Blöcke gelangt. Sobald sie in einem Block ist, kann sie ausgegeben werden." bitcointalk.org/index.php?topic=131443.msg1432948#msg1432948

Antworten (3)

Es gibt keine Größenbeschränkung für den Mempool von dem, was ich finden kann. Es könnte möglich sein, es zu fluten, aber ziemlich schwierig und teuer / langsam. Ich sehe zwei Ansätze:

A) Mindeststaffelgebühr

  • Verbindung zu 1000 Knoten
  • Senden Sie viele TXs, die die Mindestanforderungen für die Weiterleitung erfüllen
    • wie viele?: 32 000 000, 32 000 auf jedem Knoten
    • nLocktime in der fernen Zukunft, damit sie nicht in Blockaden geraten
    • Sendegebühr: Mindeststaffelgebühr: 0,0001
    • Menge: sehr gering
    • Größe pro TX: 250Bytes
  • mempools sind mit 8gb staub gefüllt

Es würde eine Weile dauern, so viele Adressen und TX zu generieren und sie zu übertragen. Außerdem würde es mindestens 3200 BTC kosten.

B) 0-Gebühren-Txs mit einer Mindestausgabe von 0,01, damit sie immer noch weitergeleitet werden

Mempool wird von einem Ratenbegrenzer für kostenlosen Versand geschützt:

// Continuously rate-limit free transactions
// This mitigates 'penny-flooding' -- sending thousands of free transactions just to
// be annoying or make others' transactions take longer to confirm.

// Use an exponentially decaying ~10-minute window:
// -limitfreerelay unit is thousand-bytes-per-minute

// At default rate it would take over a month to fill 1GB

Das wird also zumindest sehr langsam sein. Außerdem müssen Sie 320.000 BTC für 8 GB haben. :)

Es könnte Möglichkeiten geben, txs künstlich zu vergrößern. Alternative Clients könnten die Dinge anders machen.

Ich bin mir nicht sicher, ob dies geändert wurde, nachdem diese Antwort geschrieben wurde, aber Transaktionen mit a nLockTimewerden nicht weitergeleitet, bis die Blockhöhe erreicht ist, bevor sie aufgenommen werden können, oder bis der Zeitstempel in nLockTimeerreicht wurde. Daher ist ein Mempool-Flooding-Angriff mit Locktimed-Transaktionen nicht möglich.

nLocktime-Transaktionen, die noch nicht gültig sind, werden nicht weitergeleitet und möglicherweise sogar verworfen. Es liegt in der Verantwortung des Senders und/oder Empfängers, die Transaktionen zu speichern, bis sie gültig sind, und sie dann zu übertragen.

Transaktionen mit nLockTimeeinem Datum oder einer Blockhöhe in der Zukunft werden von Bitcoin Core nicht als gültig angesehen, bis der Zeitstempel abgelaufen ist oder die Blockhöhe eins vor ihrer Gültigkeit erreicht wurde. Erst zu diesem Zeitpunkt werden Full Nodes sie in ihren Mempools behalten und weiterleiten.

Daher ist ein Mempool-Flooding-Angriff mit Locktimed-Transaktionen nicht möglich.