Maybe this post
will help you understand what a block contains.
If blocks form a chain and must be solved, and if the solution of the block depends on the hash of the block, doesn't adding a transaction to a block invalidate the solution?
Each hash you create doesn't depend on any of the other hashes that you've created, so it doesn't slow you down to modify the block. You don't have to "start over". This is what you do:
- Hash the block, check if it's a winner, increment the nonce if it's not, and repeat. Each one of these hashes is not stored and not important if it isn't a winner.
- When you see a transaction, add it and then keep hashing.
- Once you win, stop adding transactions and publish the block. If you added a new transaction at this point, your result would
be invalidated, but this is not what happens.
- Prepare a new block and start hashing again.
Each published block is a "snapshot" of the current transactions.
If the number of blocks are finite and blocks are not mutable (transactions cannot be added to them), doesn't that imply that the number of transactions is also finite.
The number of blocks is not finite. Blocks will be created roughly every 10 minutes, forever. At some point publishing a block will generate less than 1 coin, but blocks will still be created. The "21 million" number is either not really a hard limit, or it's a mathematical limit resulting from halving the number of coins per block every four years. (I don't know which.)
In the context of blocks and transactions, what exactly is a coin?
It's a history of transactions. A generation, being the first transaction in a transaction history, creates a coin. The paper says: "We define an electronic coin as a chain of digital signatures."