bitcoin源码分析 – 初始化

main函数主流程(bitcoind)
    AppInit
        AppInitBasicSetup
            // ************************************ Step 1: setup注册网络及Signal
        AppInitParameterInteraction
            // ************************************ Step 2: parameter interactions 交互参数
            // ************************************ Step 3: parameter-to-internal-flags 内部参数
        AppInitSanityChecks
            // ************************************ Step 4: sanity checks 安全相关
         AppInitMain
            // ************************************ Step 4a: application initialization
                创建ScriptCheck线程, 个数为std::thread::hardware_concurrency, 不超过MAX_SCRIPTCHECK_THREADS即16个
                创建scheduler线程
                注册RPC
                创建HTTP Server 线程,提供RPC REST服务接口,1个http thread 加上多个http works(默认DEFAULT_HTTP_THREADS即4个,至少1个)
            // ************************************* Step 5: verify wallet database integrity
            // ************************************* Step 6: network initialization
            // ************************************* Step 7: load block chain
            // ************************************* Step 8: start indexers   
            // ************************************* Step 9: load wallet
            // ************************************* Step 10: data directory maintenance
            // ************************************* Step 11: import blocks
                创建import线程,加载区块数据
            // ************************************* Step 12: start node
                创建TorControl线程
                UPnP线程
                net线程
                dnsseed线程
                addcon线程: -addnode
                opencon线程: 主动向外连接
                msghand线程:消息处理
            // ************************************** Step 13: finished

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.