This might not be the place for this question, but can someone explain why we can't / shouldn't have both unlimited block sizes and SegWit?
Block sizes will supposedly be constrained by bandwidth / propagation times. SegWit will allow more transactions to occur off chain, reducing the need for larger blocks.
SegWit does in fact represent a block size increase. It results in 1.7x the # of single-signature transactions per block and 4x the # of multi-signature transactions per block.
Unlimited block size? There are many reasons that's a very bad idea but here are a few:
1. It would put immense pressure on the network in terms of latency between miners, leading to less stable mining, a higher rate of reorganizations, and a massive advantage for the larger miners, resulting in increased mining centralization.
2. It would result in a substantial increase in the amount of bandwidth that each node has to handle. Modest increases are OK but unlimited blocks means the vast majority of nodes will die off. Remember that nodes have to check blocks as they come in, so this would be an insane DDoS vector. Imagine putting a funnel in someone's mouth instead of a straw and being able to force whatever you want in there.
3. It would result in a substantial increase in the amount of data that each node has to store. Remember that in Bitcoin 100% of data must be stored by 100% of nodes. Imagine "unlimited emails" with Gmail meant that you had to store all of the emails in the world for EVERYONE. Not a good idea.
Not really. SegWit transactions are on-blockchain like any other - the only difference is that nodes which aren't keeping a full copy of the blockchain can save some extra space by discarding the witness part immediately after processing the block. (So I guess if you wanted to be pedantic you might be able to argue the witness part is off-blockchain in some sense, but even then the transfer of bitcoins still happens on the main blockchain.)
It's not semantic, it is substantive. A maximally utilized SegWit block is larger than a maximally utilized current block.
I.e., if you were planning out how much disk space you needed years in advance, you would have to increase that figure non-negligibly if SegWit activates.
Block sizes will supposedly be constrained by bandwidth / propagation times. SegWit will allow more transactions to occur off chain, reducing the need for larger blocks.
They seem complementary to me.