试撸比特币源码(一)

作者: CPC说 | 来源:发表于2017-10-29 00:57 被阅读91次

    试着撸一下比特币源码,不知道能不能看完,希望不要TJ。不撸代码好多年,尤其是C++。

    工具呢:撸码神器Sublime

    代码:当前版本比特币

    网上搜了下貌似入口是bitcoin.cpp

    打开void SetupEnvironment()

    函数首先通过sizeof(void*) == 4来判断当前系统是否是32位,如果是64位的话那么sizeof(void*)值就为8。mallopt函数是用来控制malloc内存分配时的行为的(具体请参考http://man7.org/linux/man-pages/man3/mallopt.3.html),而M_ARENA_MAX参数是值最多能创建的arena数,一个arena是指malloc在分内内存时的一个内存池,而这个arena是线程安全的,也就是说多线程访问时是互斥访问的,既然是互斥访问的,那么很明显,当arena数量越多时,线程的竞争就越小,但是需要的内存也就越多(因为arena就相当于一次性申请大量内存,然后在malloc时慢慢分配出去)。通过代码中的注释,我们发现glibc库会为每个核创建2个arena,而这会对32为系统造成虚拟地址空间不足的问题,所以这里设为1.

    下面是locale()是设置系统区域,这将决定程序所使用的当前语言编码、日期格式、数字格式及其它与区域有关的设置。最后两行是文件路径的本地化设置,主要设计宽字符(Wide char)和多字节(Multi bytes)之间的转换问题。

    没啥难度。

    我们继续

    noui_connect


    都在这一个文件里面定义。

    看了看发现没懂。果断谷歌,发现是一个boost的库。果然几年不搞c++发现这玩意缺失很多。还好有谷歌http://www.boost.org/doc/libs/1_65_0/

    研究了应该是个信息机制,姑且先放这里,以后看到需要研究了再研究。感觉连接bitcoind客户端的信号处理程序。大概这个信号处理程序就是侦听程序的各种消息包括异常消息,也可能是硬件的异常消息或程序的普通信号消息。

    这个代码大概解决就是检测运行环境,设置运行环境参数,同时连接消息机制。

    相关文章

      网友评论

      本文标题:试撸比特币源码(一)

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