//(已和load_NextFile_ToBlockPooling合并)1.使用blk00000.dat初始化newlyReadBlocksFromFile中的区块 public void initialize_NewlyReadBlocksFromFile() { if (blockReadBlocksFromFile.Count == 0 && currentLoadFileNumber == -1) { Blockfile_Manager_Class blockFileManager = new Blockfile_Manager_Class(); currentLoadFileNumber++; string loadFilePath = Configuration_Class.preprocessedBlockFilePath + "\\blk" + currentLoadFileNumber; List <Block> blockList = blockFileManager.load_one_blockfile(loadFilePath); blockReadBlocksFromFile.AddRange(blockList); blockCountOfFile.Add(blockList.Count); } }
//2.(修改后重用)加载下一个文件中的区块 public void load_NextFile_ToBlockPooling() { Blockfile_Manager_Class blockFileManager = new Blockfile_Manager_Class(); currentLoadFileNumber++; string loadFilePath = Configuration_Class.preprocessedBlockFilePath + "\\blk" + currentLoadFileNumber; if (Directory.Exists(loadFilePath)) { List <Block> blockList = blockFileManager.load_one_blockfile(loadFilePath); blockReadBlocksFromFile.AddRange(blockList); blockCountOfFile.Add(blockList.Count); } }
////V.其它 //1.(修改后重用)获取创世区块 public Block get_GenesisBlock() { //获取创世块 Blockfile_Manager_Class bmc = new Blockfile_Manager_Class(); //E:\Code\BlockFile\blk0 string loadFilePath = Configuration_Class.preprocessedBlockFilePath + "\\blk0"; List <Block> blockList = bmc.load_one_blockfile(loadFilePath); Block genesisBlock = blockList[0]; Console.WriteLine("创世区块前一个区块hash:" + genesisBlock.BlockHeader.PreviousBlockHash); Console.WriteLine("创世区块time:" + genesisBlock.BlockHeader.BlockTimestamp); Console.WriteLine("创世区块hash:" + genesisBlock.BlockHeader.BlockHash); Console.WriteLine("**********************************************************"); return(genesisBlock); }
public void sameTransaction_Test() { string path = @"E:\Code\BlockFile\blk0"; Blockfile_Manager_Class bmc = new Blockfile_Manager_Class(); List <Block> blockList = bmc.load_one_blockfile(path); foreach (Block block in blockList) { if (block.BlockHeader.BlockTimestamp.ToString() == "2010/11/14 17:59:48" || block.BlockHeader.BlockTimestamp.ToString() == "2010/11/14 21:04:51") { Console.WriteLine("====================================================="); Console.WriteLine("区块hash:" + block.BlockHeader.BlockHash.ToString()); Console.WriteLine("区块时间:" + block.BlockHeader.BlockTimestamp.ToString()); Console.WriteLine("交易数量:" + block.Transactions.Count); Console.WriteLine("-----------------------------------------------"); foreach (Transaction tx in block.Transactions) { Console.WriteLine("txhash:" + tx.TransactionHash); Console.WriteLine("**********输入节点:**********"); if (tx.Inputs.Count != 0) { foreach (TransactionInput txi in tx.Inputs) { Console.WriteLine("原交易hash" + txi.SourceTransactionHash); Console.WriteLine("索引:" + txi.SourceTransactionOutputIndex); Console.WriteLine("输入脚本:" + txi.InputScript); } } Console.WriteLine("**********输出节点:**********"); if (tx.Outputs.Count != 0) { foreach (TransactionOutput txo in tx.Outputs) { Console.WriteLine("value:" + txo.OutputValueSatoshi); Console.WriteLine("输出脚本:" + txo.OutputScript); } } Console.WriteLine("-----------------------------------------------"); } Console.WriteLine("====================================================="); } } }