예제 #1
0
        public void CanCalculatePowCorrectly()
        {
            var chain = new ChainIndexer(KnownNetworks.Main);

            EnsureDownloaded("MainChain.dat", "https://aois.blob.core.windows.net/public/MainChain.dat");
            chain.Load(File.ReadAllBytes("MainChain.dat"));
            foreach (ChainedHeader block in chain.EnumerateAfter(chain.Genesis))
            {
                Target thisWork  = block.GetWorkRequired(KnownNetworks.Main);
                Target thisWork2 = block.Previous.GetNextWorkRequired(KnownNetworks.Main);
                Assert.Equal(thisWork, thisWork2);
                Assert.True(block.CheckProofOfWorkAndTarget(KnownNetworks.Main));
            }
        }
예제 #2
0
        public void CanEnumerateAfterChainedBlock()
        {
            var chain = new ChainIndexer(this.network);

            this.AppendBlock(chain);
            ChainedHeader a = this.AppendBlock(chain);
            ChainedHeader b = this.AppendBlock(chain);
            ChainedHeader c = this.AppendBlock(chain);

            Assert.True(chain.EnumerateAfter(a).SequenceEqual(new[] { b, c }));

            ChainedHeader d = this.AppendBlock(chain);

            IEnumerator <ChainedHeader> enumerator = chain.EnumerateAfter(b).GetEnumerator();

            enumerator.MoveNext();
            Assert.True(enumerator.Current == c);

            chain.Initialize(b);
            ChainedHeader cc = this.AppendBlock(chain);
            ChainedHeader dd = this.AppendBlock(chain);

            Assert.False(enumerator.MoveNext());
        }