虽然首先使用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 {
/