I am just starting to understand the internals of bitcoin. I am a CS graduate and familiar with most bitcoin terminologies. I've read Satoshi's paper and researched the question but I couldn't find the answer.
Now that it is much more profitable to mine blocks for the reward (25coins) than the transactions fees. my question is what prevents miners from only including 1 (or 0 if its allowed) transactions in their generated blocks as hashing smaller data will result in greater hashes/s (yes?)
Also, and most importantly is how does a miner decides that enough transactions has been received and start finding the nonce as adding a new transaction to the attempting block will result in all the work done for this block as obsolete.
I'll try to give my guess so correct me if I am wrong. While the miner tries to find the new block it buffers any received new transactions. If he/she finds the new block or a a new valid block is received they start working on the next block by putting all the buffered transactions into a new block and get to work.
Please excuse me if my questions seems primitive. I tried my best to research and any links are greatly appreciated. Thanks.