public void VerifyProofListTest() { MerkleTree <ITransaction> tree = new MerkleTree <ITransaction>(); tree.AddNodes(CreateLeaves(new string[] { "a", "e", "l", "f" })); #region Create elements of Proof List /* Merkle Tree: * root * hash(hash(a),hash(e)) hash(hash(l),hash(f)) * hash(a) hash(e) hash(l) hash(f) * a e l f */ //Proof List: { hash(a), hash(e), hash(hash(l), hash(f)) } var hash_a = new Hash <ITransaction>("a".GetSHA256Hash()); var hash_e = new Hash <ITransaction>("e".GetSHA256Hash()); var hash_l = new Hash <ITransaction>("l".GetSHA256Hash()); var hash_f = new Hash <ITransaction>("f".GetSHA256Hash()); var hash_l_f = new Hash <ITransaction>((hash_l.ToString() + hash_f.ToString()).GetSHA256Hash()); #endregion List <Hash <ITransaction> > prooflist = new List <Hash <ITransaction> > { hash_a, hash_e, hash_l_f }; Assert.True(tree.VerifyProofList(prooflist)); }