I have understood that miners validate the transactions by checking for double spends and that the transaction was not already confirmed, what I don't understand is how the miners are able to do this when all the data they have is the transactions.
- Do miners maintain a UTXO set that has the UTXO details of all
nodes in the network? If that is the case it might be possible that the UTXO sets maintained ny different miners is different at a given point of time right.
- Now once the block is broadcast to the network, we know that
other miners express their acceptance to the block by mining the
next block on top of this. But before that they validate the
block that was just published. How do they validate this block?
Also why will they have to care to do it when they can save time
by creating the next block? Is it that we are assuming honesty
from miners who are actually interested in making money?