写点什么

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

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

    阅读完需:约 2 分钟

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

初始化网络后,就开始初始化区块链

func (server *ChainMakerServer) initBlockchains() error {	server.blockchains = sync.Map{}	ok := false  //读取所有链配置,遍历,初始化每一个一链	for _, chain := range localconf.ChainMakerConfig.GetBlockChains() {		chainId := chain.ChainId		if err := server.initBlockchain(chainId, chain.Genesis); err != nil {			log.Error(err.Error())			continue		}		ok = true	}	if !ok {		return fmt.Errorf("init all blockchains fail")	}  //创建链任务监听器	go server.newBlockchainTaskListener()	return nil}
//初始化每一个链func (server *ChainMakerServer) initBlockchain(chainId, genesis string) error { //读取genesis 文件 if !filepath.IsAbs(genesis) { var err error genesis, err = filepath.Abs(genesis) if err != nil { return err } } log.Infof("load genesis file path of chain[%s]: %s", chainId, genesis) //创建一个区块链 blockchain := NewBlockchain(genesis, chainId, msgbus.NewMessageBus(), server.net)
//区块链初始化 if err := blockchain.Init(); err != nil { errMsg := fmt.Sprintf("init blockchain[%s] failed, %s", chainId, err.Error()) return errors.New(errMsg) } //把创建的区块链放到map中 server.blockchains.Store(chainId, blockchain) log.Infof("init blockchain[%s] success!", chainId) return nil}
复制代码

上面读取区块链配置如下,配置在

可以看到每个链对应一个 genesis 配置文件


这里面最核心的是 blockchain.Init() 方法。接下来我们继续研究

用户头像

关注

还未添加个人签名 2018.05.04 加入

还未添加个人简介

评论

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