Stores the block chain to disk but still holds it in memory. This is intended for desktop apps and tests. Constrained environments like mobile phones probably won't want to or be able to store all the block headers in RAM.
Inheritance: IBlockStore
 public void TestStorage()
 {
     var temp = new FileInfo(Path.GetTempFileName());
     try
     {
         Console.WriteLine(temp.FullName);
         var @params = NetworkParameters.UnitTests();
         var to = new EcKey().ToAddress(@params);
         StoredBlock b1;
         using (var store = new DiskBlockStore(@params, temp))
         {
             // Check the first block in a new store is the genesis block.
             var genesis = store.GetChainHead();
             Assert.AreEqual(@params.GenesisBlock, genesis.Header);
             // Build a new block.
             b1 = genesis.Build(genesis.Header.CreateNextBlock(to).CloneAsHeader());
             store.Put(b1);
             store.SetChainHead(b1);
         }
         // Check we can get it back out again if we rebuild the store object.
         using (var store = new DiskBlockStore(@params, temp))
         {
             var b2 = store.Get(b1.Header.Hash);
             Assert.AreEqual(b1, b2);
             // Check the chain head was stored correctly also.
             Assert.AreEqual(b1, store.GetChainHead());
         }
     }
     finally
     {
         temp.Delete();
     }
 }