I will now summarize the steps described above; this is what happens in the network −
- Anybody who wants to obtain services from the third party who has advertised on the network first creates a transaction (message to the desired recipient).
- Over a given period of time, there could be many senders (buyers) and receivers (sellers) creating such transactions.
- All transactions are broadcast on the network to all nodes. Note that it is not necessary that a given transaction must reach each and every other node in the network.
- Each node assembles the new transactions into a block. Note that the set of transactions in each block is independent of the set in blocks created by others and will naturally be different than others. This does not matter; the system ensures that every transaction broadcast on the network gets included in some block over a reasonable amount of time. Generally, the sender will incentivize the node by offering a certain amount of bitcoins to the miner for its efforts. The miner may opt for giving priority for inclusion in the block to those with higher incentives.
- The node now works on finding the proof-of-work for its assembled block.
- When the node finds a proof-of-work, it broadcasts the assembled block on the network.
- The nodes that receive the new block will accept it only after verifying that all transactions in the block are valid and not already spent.
- If the block is accepted as valid, the node which is working on its own new block will have to re-assemble the transactions in its block ensuring that the transactions are not duplicated. The node now works on finding the proof-of-work on its newly created block; while doing so it will take the hash of the accepted block as the previous hash.
- Likewise, the blockchain continues growing for ever.
Now, as we have seen how the entire system works, let me describe some of the side effects and how to resolve them.