BUIP016: Consensus with Classic on txn size limit
Proposer: Andrew Clifford
Submitted: 2016-01-20
Status: passed
revision 1: 21 Jan 2016 (no longer a simple 100kb limit for txns)


This is a “bare bones” BUIP just to obtain BU membership agreement for
implementing the final patch used in Classic for transaction size
limiting. This patch is necessary for blocks >1MB because there is a
theoretical attack possible on Bitcoin from a rogue miner creating very
large txns which take minutes to verify, i.e. too many signature
validation operations (sigops). BU is safe from this attack, but may
eventually reject blocks which Classic considers valid, perhaps not for
a few years but the probability of a divergence increases as block sizes
steadily increase.

Gavin Andresen has written a sophisticated pull request for Bitcoin


Accurate sigop/sighash accounting and limits

Adds a ValidationCostTracker class that is passed to
CheckInputs() / CScriptCheck() to keep track of the exact number
of signature operations required to validate a block, and the
exact number of bytes hashed to compute signature hashes.

Also extends CHashWriter to keep track of number of bytes hashed.

Signature operations per block are limited to MAX_BLOCK_SIGOPS
(unchanged at 20,000)

Bytes hashed to compute signatures is limited to MAX_BLOCK_SIGHASH
(1.3 GB in this commit).



That the BU Developer may implement the same patch which Classic uses
for txn size limiting in a BU release before or during the first release
of Classic.