I have heard that nodes verify the blocks before building blocks on them. But how do they verify these blocks? Is it that they check all the transactions from the beginning of timestamps till the end of that block? I think that it is impractical and they won't do so. Also how will miner know if the sender has enough BTC to spend? So how do they verify blocks? Also why will a miner want to verify the previous block when his sole aim is to generate blocks and get rewards? He may build the next block over a block which he didn't verify right?