As in, do relay nodes need to keep a record of the transactions they've relayed? Strictly speaking, the answer is no: one a tx is relayed modulo DoS concerns the entire thing can be discarded by the node. (unconfirmed txs spending other unconfirmed txs can be handled by creating packages of transactions, evaluated as a whole) To mitigate DoS concerns, we of course have to have some per-UTXO limit on bandwidth relayed, but that task can be accomplished by simply maintaining some kind of per-UTXO record of bandwidth used. For instance if the weighted fee and fee/KB were recorded, and forced to - say - double for each additional tx relayed that spent a given UTXO you would have a clear and simple upper limit of lifetime bandwidth. Equally it's easy to limit bandwidth moment to moment by asking peers for highest fee/KB transactions they advertise first, stopping when our bandwidth limit is reached. You probably could even remove IsStandard() pretty much entirely with the right increasingly expensive "replacement" policy, relying on it alone to provide anti-DoS. Obviously this would simplify some of the debates around mining policy! This could even be re-used for scalable a general-purpose messaging network paid by coin ownership if the UTXO set is split up, and some kind of expiration over time policy is implemented. Miners of course would still want to have a mempool, but that codebase may prove simpler if it doesn't have to work double-duty for relaying as well. -- 'peter'[:-1]@petertodd.org 00000000000000000b675c4d825a10c278b8d63ee4df90a19393f3b6498fd073