使用VC学习BTC:(一)了解block的存盘文件blk*.dat

虽然首先使用win10的linux layer在Windows上先编译并成功运行了bitcoin core,但是对于更习惯VS开发工具的人来说,总是在VS下跟踪调试更顺手,因此准备建立一个VS工程来编译bitcoin,并逐步学习了解它的实现比特币存盘文件blkxxxx.dat格式

为了便于VS上编译运行,先从存盘的数据文件开始,这部分涉及的代码应比较容易在VS上运行起来。

工程建立步骤如下:

  • 从官方开源代码库https://github.com/bitcoin/bitcoin下载源代码;
  • 在下载的源代码的build-aux目录下建立vs目录;
  • 在新建的vs目录下创建vs2017的工程(Solution),并添加一个windows控制台的C++项目bitcoin(Project);
  • 在bitcoin项目中添加部分下载的源文件,添加后项目文件如下

        

  • 添加一个新的CPP文件,增加LoadExternalBlockFile函数
#define MESSAGE_START_SIZE 4
unsigned char pchMessageStart[MESSAGE_START_SIZE] = { 0xf9, 0xbe, 0xb4, 0xd9 };

bool LoadExternalBlockFile(FILE* fileIn, CDiskBlockPos *dbp)
{
	int nLoaded = 0;
	try {
		// This takes over fileIn and calls fclose() on it in the CBufferedFile destructor
		CBufferedFile blkdat(fileIn, 2 * MAX_BLOCK_SERIALIZED_SIZE, MAX_BLOCK_SERIALIZED_SIZE + 8, SER_DISK, CLIENT_VERSION);
		uint64_t nRewind = blkdat.GetPos();
		while (!blkdat.eof()) {
			blkdat.SetPos(nRewind);
			nRewind++; // start one byte further next time, in case of failure
			blkdat.SetLimit(); // remove former limit
			unsigned int nSize = 0;
			try {
				/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值