Minimizing Redundant Hash and Witness Operations in Merkle Hash Trees | Synapse