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 nLockTime
und niedrigen Transaktionsgebühren fallen lassen?
Was würde BitcoinCore tun?
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
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.
nLockTime
werden nicht weitergeleitet, bis die Blockhöhe erreicht ist, bevor sie aufgenommen werden können, oder bis der Zeitstempel in nLockTime
erreicht 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 nLockTime
einem 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.
Murch