Exemplo n.º 1
0
        public void Can_get_proof_on_a_populated_trie_on_an_index(uint nodesCount)
        {
            MerkleTree merkleTree = new ShaMerkleTree(new MemDb());

            for (int i = 0; i < nodesCount; i++)
            {
                merkleTree.Insert(_testLeaves[0]);
            }

            MerkleTreeNode[] proof = merkleTree.GetProof(0);
            proof.Should().HaveCount(MerkleTree.TreeDepth - 1);

            for (int proofLevel = 0; proofLevel < MerkleTree.TreeDepth - 1; proofLevel++)
            {
                if (nodesCount > 1 >> proofLevel)
                {
                    proof[proofLevel].Should().NotBe(ShaMerkleTree.ZeroHashes[proofLevel], proofLevel.ToString());
                }
                else
                {
                    proof[proofLevel].Hash.Should().Be(Bytes32.Wrap(ShaMerkleTree.ZeroHashes[proofLevel]), proofLevel.ToString());
                }
            }
        }
Exemplo n.º 2
0
        public void Throws_on_get_proof_on_the_leaf_index_out_of_bounds(uint leafIndex)
        {
            MerkleTree merkleTree = new ShaMerkleTree(new MemDb());

            Assert.Throws <IndexOutOfRangeException>(() => merkleTree.GetProof(leafIndex));
        }