美文网首页程序员
比特币源码解读十二

比特币源码解读十二

作者: ttblack | 来源:发表于2017-10-15 12:33 被阅读552次

现在我们Appinit2中的第十步代码:Step 10: load peers(导入节点)

导入节点

导入节点的核心代码就adb.Read(addrman)这一句。可以看到这里定义了一个CAddrDB的局部对象。然后调用Read函数读取本地的节点文件的数据,并将数据存储在了addrman这个全局对象中。这个addrman定义在net.h中。

全局对象 addrman

adb是一个CaddrDB对象,这个对象读取的是存储在我们本地的peers.dat 。这个文件存储的是本机连接的节点文件。这个文件的的路径就在CAddrDB的构造函数中。

CAddrDB构造函数

所以我们可以理解为这个类就是专门处理节点数据的类。CAddrDB这个类定义在net.h中。

CAddrDb类

通过类的声明模板可以看到这个类就是处理peers.dat的类,实现了两个功能:写文件(Write)和读文件(Read)。因为我们这里分析的是导入结点,我们就先看下是如何读文件的,也就是分析下Read函数是如何工作的。那在分析Read之前为了方便理解里面的内容,我们先看下Write函数。知道了里面存储的数据,读出来的数据也就很容易理解了。

节点写文件

可以看到此函数是将节点的地址数据串行化后,并将其数据进行了hash计算,最后也将其hash值写入了文件中。

现在再看下Read函数

加载节点数据

现在我们大概了解了节点数据读和写的过程,并且了解和我们当前节点进行连接的其他节点的数据存储所在,而且是以hash加密方式进行的验证。我们也是通过这个文件里存储的其他节点的地址进行通信和同步数据的。

作者:区块链研习社比特币源码研读班,black

相关文章

  • 比特币源码解读十二

    现在我们Appinit2中的第十步代码:Step 10: load peers(导入节点) 导入节点的核心代码就a...

  • 比特币源码研读

    forest21000版 比特币源码研读之一比特币源码研读之二比特币源码研读之三比特币源码研读之四比特币源码研读之...

  • 开始研读比特币1

    1,进入比特币源码目录,先读读编译doc/build-unix.md,查看比特币源码如何编译,了解比特币的依赖库,...

  • 比特币源码解读八

    现在我们接着看RegisterNodeSignals 的下一个连接函数。 InitializeNode 这个函数在...

  • 比特币源码解读四

    我们接着上篇继续,现在来看第五步。 第五步:verify wallet database integrity 确...

  • 比特币源码解读六

    上篇我们看了ProcessMessages函数,这个函数就是侦听网络中的不同的消息命令来处理相应的逻辑。在...

  • 比特币源码解读三

    这篇我们主要分析下AppInit2的代码,这个函数在init.cpp中。这个函数分了12步完成了初始化客户端的功能...

  • 比特币源码解读二

    上次我们把bitcoind.cpp的大概流程过了一下,我们今天说下细节的内容。我们打开bitcoind.cpp文件...

  • 比特币源码解读一

    上次在ubuntu系统中将比特处源码编译环境设置好了后,还没有具体分析里面的代码,今天我们就解读一下。源码...

  • 比特币源码解读五

    我们开始init.cpp中的AppInit2的第六步:network initialization 网络初始化 第...

网友评论

    本文标题:比特币源码解读十二

    本文链接:https://www.haomeiwen.com/subject/tofwextx.html