The Bitcoin server, after deciding which transactions to include in the block, builds a
Merkle tree of the transactions, probably using some standard library. The hash at the root is the merkle root.
Then after a transaction, the new merkle root generated and replace the old one
since the block header has changed, how can we verify the block?