If block sizes go up, won't sigop limits have to change too? Gavin Andresen, one of the core developers, has discussed increasing the block size to 16.7 MB (and doubling that every two years).

The maximum number of signature operations per block is currently set to 20000:


  [...] About the scriptSig being an arbitrary byte array, there is one caveat: the checksig operations in it are counted towards the block sigop limit (20000), so you probably don't want to accidentally trigger this. Making it a list of just push operations (including of the extranonce) avoids that.


A back-of-the-envelope calculation tells me that there will be around 100K signature operations in a 16.7 MB block. Will the maximum number of signature operations per block also need to change?
Yes, the maximum number of signature operations per block also need to change. It may change dynamically with the block size limit. The code currently assumes a ratio of MAX_BLOCK_SIZE to MAX_BLOCK_SIGOPS:

From https://github.com/bitcoin/bitcoin/blob/v0.10.0rc3/src/main.h#L59-L60:

/** The maximum allowed number of signature check operations in a block (network rule) */
static const unsigned int MAX_BLOCK_SIGOPS = MAX_BLOCK_SIZE/50;


If this ratio were kept constant, then when the max block size was increased, the max signature operations would increase to:

16.7 MB / 50 = 335,544 sig ops