1. Do all transactions of bitcoin form one address to another incur a transaction fee (I think it was half a cent or something)? What about just transferring my BTC to another a friend's address?
If you want to be certain that the transaction will confirm quickly, it is a good idea to always include a reasonable transaction fee. That being said, it is possible (with some bitcoin wallets) to send a transaction without a fee and still have it confirm in a reasonable amount of time if all of the following are true:
- You are not in a hurry for the transaction to be confirmed
- The transaction has enough priority (calculated based on how long ago you received the bitcoins and how large in terms of quantity of bitcoins the transactions were when you received them)
- Your transaction does not create any extremely small (in terms of quantity of bitcoins) outputs
2. Can you choose 0 confirmations for any transactions (whether as a merchant accepting many transactions, or from 1 address to another address)... and does that make all transactions free?
What do you mean by "choose"?
As a recipient of a transaction, you can "choose" to provide the product or service that is being paid for without waiting for any confirmations, but this does expose you to some risk if the transaction never confirms.
As the creator of a transaction, there are some wallets that will allow you to "choose" to spend bitcoins that you have received before the transaction has confirmed, but this can result in the transaction taking a very long time to confirm. If the recipient requires that the transaction confirm before they provide you with the product or service, this can become a problem for you.
3. Miners are basically solving puzzles to verify transactions.. and once the transactions are verified they are put in the block chain.. which happens in approx every 10 mins... and at the same time 25 bitcoins are released as a reward to the miners. Is this a proper way of thinking of the process?
Close enough for most discussions. The technical details are a bit more complex than that. The thing that is most inaccurate in that statement is that ALL nodes on the network "verify" transactions. If a transaction is not valid, then it won't be relayed throughout the network at all in the first place. Miners solve a special mathematical problem to create a proof of work. The requirement to supply this proof of work makes it impossible for an attacker to change the order of transactions unless they can prove that they've done more "work" than the combined mining power of all the rest of the miners in the entire world. This makes it very difficult and expensive for an attacker to try to re-order the transactions in the historical transaction ledger (called the blockchain).
By providing an appropriate solution to the mathematical problem, the miner proves that the system has supplied enough work to make it difficult for an attacker to supply more work. All peers then allow the miner that found the solution to add a block of transactions to the ledger. This sets an order for the transactions, proving that the transactions in the block occurred after the transactions in all earlier blocks, and before all transactions that will be included in future blocks.
We use the word "confirmed" (not verified) to describe the fact that a transaction is in a block in the ledger.
Most transactions spend previously received outputs and create new outputs. All peers on the network allow the miner to include exactly one special transaction in their block that does not spend any previously received outputs, but which does create new outputs. The sum of the outputs in this special transaction must be less than or equal to the sum of the current block subsidy (25 bitcoins at this time) and the transaction fees of all the transactions that the miner includes in the block.
4. What is this 1MB transaction limit about? Can someone explain what it means and why some people are worried about this limit.
The protocol currently limits the size of a block of transactions to 1 MB. Since each input to a transaction is a bit less than 200 bytes, and each output from a transaction is a bit less than 40 bytes, this limits the quantity of transactions that can fit in a block. Given the current average transaction size (most transactions have a few inputs and a few outputs), a block can hold approximately 4,200 transactions. Since the proof of work limits miners to creating a new block every 10 minutes on average, that works out to about 7 transactions per second.
If bitcoin becomes popular enough to exceed an average of 7 transactions per second, then space in the next block will become a valuable commodity. Since the miner gets to choose which transactions they will include in the block that they are going to publish, and since the miner gets to keep the transaction fees, the miner has an incentive to include the transactions that pay the highest fees.
If the block isn't "full", then they can just keep adding more transactions and thereby slightly increase the amount of bitcoins they earn from the block. If the block is full, then the miner has to choose which transactions to leave out of the block. Obviously, the miner has a financial incentive to leave out the transactions that pay the smallest fees. This creates an effect where everyone that is creating a transaction is essentially bidding for space in the block with their transaction fees. The highest "bidders" win and get to be in the next block. Someone sending a transaction with 10,000 bitcoins might be okay with paying a 0.5 BTC fee (only 0.005% of the transaction value). Meanwhile someone sending a transaction with 0.1 bitcoins certainly isn't going to want to pay a 0.5 BTC fee! As such, bitcoin becomes a system for handling very high value transactions and the price of transactions becomes too expensive for most users.
This is essentially a supply and demand effect. The supply of space in the blockchain is artificially limited. If demand exceeds supply, then the price of that space increases to the highest price that the market will bear. Increasing the maximum size of a block increases the "supply" which reduces the price that the market can bear.