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)); } } }
public Blockchain(IBlockchainStorage storage) { CachingBlockchainStorage cache = new CachingBlockchainStorage(storage); blockchain = new InternalBlockchain(cache); }