예제 #1
0
        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));
        }