写点什么

长安链源码分析启动(5)

作者:
  • 2022 年 8 月 29 日
    湖南
  • 本文字数:905 字

    阅读完需:约 3 分钟

本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接:https://github.com/weopenprojects/WeOpen-Star

看下面代码可以知道,初始化区块链,本质是初始化区块链各个模块

func (bc *Blockchain) Init() (err error) {
//定义基础的初始化模块集合 baseModules := []map[string]func() error{ // 初始化订阅模块 {moduleNameSubscriber: bc.initSubscriber}, // 初始化存储模块 {moduleNameStore: bc.initStore}, // 初始化账本模块 {moduleNameLedger: bc.initCache}, // 初始化链配置模块 {moduleNameChainConf: bc.initChainConf}, //初始化交易过滤器模块 {moduleNameTxFilter: bc.initTxFilter}, }
//初始化所有基础模块 if err := bc.initBaseModules(baseModules); err != nil { return err }
var extModules []map[string]func() error
//如果共识类型 是SOLO if bc.getConsensusType() == consensusPb.ConsensusType_SOLO { // solo extModules = []map[string]func() error{ // 初始化访问控制模块 {moduleNameAccessControl: bc.initAC}, //初始化 VM模块 {moduleNameVM: bc.initVM},
// 初始化交易池模块 {moduleNameTxPool: bc.initTxPool}, // 初始化核心引擎模块 {moduleNameCore: bc.initCore}, // 初始化共识模块 {moduleNameConsensus: bc.initConsensus}, } } else { // 如果公司类型不是solo extModules = []map[string]func() error{ //初始化访问控制模块 {moduleNameAccessControl: bc.initAC}, // 初始化网络服务 {moduleNameNetService: bc.initNetService}, //初始化 VM模块 {moduleNameVM: bc.initVM},
// 初始化交易池模块 {moduleNameTxPool: bc.initTxPool}, // 初始化核心引擎模块 {moduleNameCore: bc.initCore}, //初始化共识模块 {moduleNameConsensus: bc.initConsensus}, // 初始化同步服务模块 {moduleNameSync: bc.initSync}, } }
bc.log.Debug("start to init blockchain ...")
return bc.initExtModules(extModules)}
复制代码

非 solo 比 solo 多了网络服务和同步服务模块

用户头像

关注

还未添加个人签名 2018.05.04 加入

还未添加个人简介

评论

发布
暂无评论
长安链源码分析启动(5)_长安链_李_InfoQ写作社区