//(已和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);
            }
        }
Esempio n. 3
0
        ////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);
        }
Esempio n. 4
0
        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("=====================================================");
                }
            }
        }