public void AuditTest() { // Build a tree, and given the root node and a leaf hash, verify that the we can reconstruct the root hash. EventMerkleTree tree = new EventMerkleTree(); MerkleHash l1 = MerkleHash.Create("abc"); MerkleHash l2 = MerkleHash.Create("def"); MerkleHash l3 = MerkleHash.Create("123"); MerkleHash l4 = MerkleHash.Create("456"); tree.AppendLeaves(new MerkleHash[] { l1, l2, l3, l4 }); MerkleHash rootHash = tree.RootNode.Hash; foreach (var leaf in tree.RootNode.Leaves()) { Output.WriteLine(leaf.ToString()); } List <MerkleProofHash> auditTrail = tree.AuditProof(l1); Assert.True(MerkleTree.VerifyAudit(rootHash, l1, auditTrail)); auditTrail = tree.AuditProof(l2); Assert.True(MerkleTree.VerifyAudit(rootHash, l2, auditTrail)); auditTrail = tree.AuditProof(l3); Assert.True(MerkleTree.VerifyAudit(rootHash, l3, auditTrail)); auditTrail = tree.AuditProof(l4); Assert.True(MerkleTree.VerifyAudit(rootHash, l4, auditTrail)); }
public void AppendLeafAndDraw(EventMerkleTree tree, int content) { Output.WriteLine($"Append {content}"); var newLeafNode = EventMerkleNode.Create(content.ToString()).SetText(content.AsAlphaChar()); tree.AppendLeaf(newLeafNode); Output.WriteLine($"CP: {tree.CurrentParent}, CL: {tree.CurrentLeaf}"); DrawNode(tree.RootNode); Output.WriteLine(""); }
public void TreeIncrementalPersistTest2() { var tree = new EventMerkleTree(); for (int i = 0; i <= 64; i++) { AppendLeafAndDraw(tree, i); } Assert.True(true); }
public void CompareCliftonMerkleToDebugEventMerkle_Test(int leafCount) { var demo = new Demo(); var cliftonTree = new DemoMerkleTree(); demo.CreateTree(cliftonTree, leafCount); var appendTree = new EventMerkleTree(); for (int i = 0; i < leafCount; i++) { var newLeafNode = EventMerkleNode.Create(i.ToString()).SetText(i.ToString("X")); appendTree.AppendLeaf(newLeafNode); } Assert.Equal(cliftonTree.RootNode.Hash.ToString(), appendTree.RootNode.Hash.ToString()); if (leafCount > 1) { Assert.Equal(((DemoMerkleNode)cliftonTree.RootNode).Text, ((EventMerkleNode)appendTree.RootNode).Text); } }