Skip to content

mempool transaction expiration #3722

@jgarzik

Description

@jgarzik

Sparked by another discussion (#3721), it seemed useful to open an issue on transaction expiration.

It has been my longstanding contention that transaction lifetimes should be more deterministic. If a transaction does not confirm within a set period, the mempool should forget it, rather than accumulating garbage and leaving the transaction in limbo.

One proposal bandied about on IRC is to expire any transaction from the memory pool, that does not confirm within X blocks. Proposed value for X is 2 days, 144*2.

It is always the responsibility of the client to retransmit a transaction until it is confirmed. If a client ceases retransmission, and waits X blocks, they have a reasonable chance of presuming the network has forgotten the transaction [assuming the network has mostly upgraded]. That enables the client to recover the dead transaction, including double-spending with a higher fee.

This seems to accomplish two useful goals: preventing the mempool from accumulating garbage, and making transaction lifetime more deterministic [within a certain probability].

Related: mempool superblock redesign (#3723).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions