I have several questions, but the topic is my biggest:
1) When a block is solved, does everyone else have to start over, create a new block, and begin looking for the right hash again? For example, Slush's pool, ASICminer, and BTCGuild are all mining. Slush solves a block, so ASICminer and BTCGuild both forget their current block, make a new one, and start over again. Is that right? Seems a waste that way, and actually better to have 2-3 big pools rather than 30 or more smaller ones.
Blocks are created thousands of time in a second, but they do not have the right hash to be valid blocks (so you have to try again).
Any block contains last block hash so if a new block is found you have to change your blocks (the ones you are generating), that does not interrupt you because you still have the same probabilities.2) How are the transactions chosen to be put in a block? Do you just basically grab whatever transactions are floating out there that are not in a block, put them together, and start trying to find the right hash solution?
There is a list of unconfirmed tx in every Bitcoin client (you can see it on http://blockchain.info/unconfirmed-transactions).
If you are mining you include all the tx that can fit into a block (up to 1MB right now). You want to profit so you include the ones that have higher fees.3) If you can just put any transactions you want in a block, what is the incentive to include any transaction that does not include a fee?
You can decide, if you have space left in a block (up to 1MB) you can include no-fee transactions, but if a block can only have 500tx (example, not real data) and you have 500tx with fee and 100 without you will only include the ones that have. (Its up to the miner but they all want money).Thanks! I've done some searching of the forums, wiki, etc. and haven't found those answers on my own.