On Mon, Jul 20, 2015 at 8:10 PM, Gavin Andresen via bitcoin-dev <bitcoin-dev@lists.linuxfoundation.org> wrote:
After deployment, the maximum serialized size of a transaction allowed
in a block shall be 100,000 bytes.

This could render transactions with a locktime in the future as unspendable.

It is pretty low probability that someone has created a >100kB locked transaction though.

It violates the principle that no fork should render someone's coins unspendable.

At the cost of weakening the protection, the rule could be made to only apply to version 2 transactions.

Specification

    The transaction version is increased to version two.

    All coinbase transactions must be version two or higher.

    If any of its parent transactions are version two or higher
    then the transaction must be version two or higher.

    The maximum serialized size of a version two transactions allowed in
    a block is 100,000 bytes.


As time passes more and more of the UTXO set will be from version two transactions.  To launch the attack, the attacker needs an historical UTXO entry.

Standard software would create version two transactions even if all inputs were version one.

The rule could be applied to all transactions most of the time, and have daily blocks that allow legacy transactions.

    This rule shall apply to version 1 transactions too unless the block height is
    a multiple of 100.

At the risk of encouraging feature creep, if the transaction size is being limited, it would be useful to also limit the size of all its inputs.

This helps with fraud proofs and offline signing.

Specification

    The transaction version is increased to version two.

    All coinbase transactions must be version two or higher.

    If any of its parent transactions are version two or higher
    then the transaction must be version two or higher.

    The maximum serialized size of a version two transactions allowed in
    a block is 100,000 bytes.

    The maximum of the total serialized size of a version two transaction and all
    of its parents allowed in a block shall be 200,000 bytes.