What are merkle trees? Let's start with the basics by brainstorming a solution to this problem: How can you compare two copies of a large file across two machines? A naive approach would be to send the file from one to the other machine, and compare the contents using a sting matching algorithm. Let's do a little better with the understanding that utilizing CPU time locally is cheaper than sending something over the network . A better approach would then be to generate a hash value (i.e., a checksum) from each of the two files and compare the results. This approach starts making even more sense as you increase the number of machines on which the file is replicated and comparison needs to be performed--each machine can generate a checksum and share the results. Now, let's ask another question: "When you find differences in the hashes generated for file comparison, how can you quickly find out which part of the file is different?" This is more challengi...