长安链源码分析启动(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 多了网络服务和同步服务模块
划线
评论
复制
发布于: 刚刚阅读数: 3
李
关注
还未添加个人签名 2018.05.04 加入
还未添加个人简介
评论