login
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)

Summary

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
Classic:

https://github.com/bitcoinclassic/bitcoinclassic/commit/842dc24b23ad9551c67672660c4cba882c4c840a

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).

**

Proposal**

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.