コード例 #1
0
        public void TestTransactionsWithInternalBlockchain()
        {
            string testFolder = TestUtils.PrepareTestFolder(GetType(), nameof(TestTransactionsWithInternalBlockchain), "*.db");

            using (SQLiteBlockchainStorage storage = SQLiteBlockchainStorage.Open(testFolder))
            {
                CachingBlockchainStorage cache = new CachingBlockchainStorage(storage);
                InternalBlockchain blockchain = new InternalBlockchain(cache);

                using (var tx = new TransactionScope(TransactionScopeOption.Required))
                {
                    blockchain.Init();
                    tx.Complete();
                }

                using (new TransactionScope(TransactionScopeOption.Required))
                {
                    Assert.That(blockchain.CommitedState.BestHeader.Height, Is.EqualTo(0));
                    Assert.That(blockchain.CommitedState.BestChain.Height, Is.EqualTo(0));
                    blockchain.AddHeaders(new List<StoredBlock> {new StoredBlockBuilder(BitcoinStreamReader.FromBytes(KnownBlocks.Block1, BlockHeader.Read)).Build()});
                }

                using (var tx = new TransactionScope(TransactionScopeOption.Required))
                {
                    Assert.That(blockchain.CommitedState.BestHeader.Height, Is.EqualTo(0));
                    Assert.That(blockchain.CommitedState.BestChain.Height, Is.EqualTo(0));
                    blockchain.AddHeaders(new List<StoredBlock> {new StoredBlockBuilder(BitcoinStreamReader.FromBytes(KnownBlocks.Block1, BlockHeader.Read)).Build()});
                    tx.Complete();
                }

                using (new TransactionScope(TransactionScopeOption.Required))
                {
                    Assert.That(blockchain.CommitedState.BestHeader.Height, Is.EqualTo(1));
                    Assert.That(blockchain.CommitedState.BestChain.Height, Is.EqualTo(0));
                }
            }
        }
コード例 #2
0
 public Blockchain(IBlockchainStorage storage)
 {
     CachingBlockchainStorage cache = new CachingBlockchainStorage(storage);
     blockchain = new InternalBlockchain(cache);
 }