¿Se puede usar nLockTime TX para inundar Mempools?

¿Qué pasaría si creara una gran cantidad de transacciones grandes con un valor muy alto nLockTime?

¿Algo me impediría llenar no solo los mineros, sino también los mempool de los nodos regulares ?

¿Los mineros abandonarían las transacciones con una tarifa de transacción irrazonablemente alta nLockTimey baja?

¿Qué haría BitcoinCore?

Se eliminó lo siguiente de la pregunta, pero probablemente ayudaría a comenzar una respuesta: theymos: "lockTime evita que una transacción entre en bloques. Una vez que está en un bloque, se puede gastar". bitcointalk.org/index.php?topic=131443.msg1432948#msg1432948

Respuestas (3)

No hay límite de tamaño para el mempool por lo que puedo encontrar. Podría ser posible inundarlo pero bastante difícil y costoso/lento. Veo dos enfoques:

A) tarifa mínima de retransmisión

  • conectarse a 1000 nodos
  • envíe muchos txs que cumplan con los requisitos mínimos de retransmisión
    • cuantos?: 32 000 000, 32 000 en cada nodo
    • nLocktime en un futuro lejano para que no se bloqueen
    • tarifa de tx: tarifa mínima de retransmisión: 0.0001
    • cantidad: muy baja
    • tamaño por tx: 250 bytes
  • mempools están llenos de 8 gb de polvo

Llevaría un tiempo generar tantas direcciones y tx y transmitirlos. También costaría al menos 3200BTC.

B) 0 txs de tarifa con una salida mínima de 0.01 para que aún se retransmitan

Mempool está bloqueado por un limitador de velocidad para tx gratis:

// 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

Entonces esto será al menos muy lento. También necesita tener 320 000 BTC para 8 GB. :)

Puede haber formas de agrandar artificialmente txs. Los clientes alternativos pueden hacer las cosas de manera diferente.

No estoy seguro de si esto cambió después de que se escribió esta respuesta, pero las transacciones con un nLockTimeno se retransmitirán hasta que se alcance la altura del bloque antes de que se puedan incluir o hasta que se alcance la marca de tiempo en el nLockTime. Por lo tanto, no es posible un ataque de inundación de mempool con transacciones bloqueadas.

Las transacciones de Locktime que aún no son válidas no se retransmiten y posiblemente incluso se eliminen. Es responsabilidad del remitente y/o receptor almacenar las transacciones hasta que sean válidas y luego difundirlas.

Bitcoin Core no considerará válidas las transacciones con una nLockTimefecha establecida o una altura de bloque en el futuro hasta que haya pasado la marca de tiempo o se haya alcanzado la altura de bloque antes de que sean válidas. Solo en este punto, los nodos completos los mantendrán en sus mempools y los reenviarán.

Por lo tanto, no es posible un ataque de inundación de mempool con transacciones bloqueadas.