前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >eos源码赏析(三):eosd初始化

eos源码赏析(三):eosd初始化

作者头像
用户2569546
发布于 2021-11-23 02:26:41
发布于 2021-11-23 02:26:41
3330
举报
文章被收录于专栏:eosfanseosfans

上篇文章以文件分类简单的介绍了eos代码的架构,由于eosiod在整个工程中是较为重要的,接下来的例子中我们将以eosiod为主线进行相关内容的分析和探讨,今天我们主要看一下eosiod的初始化相关内容。

在所有的初始化之前,eosiod首先会进行版本的设置,通过下面一行代码即可实现:

app().set_version(eosio::eosiod::config::version);

在版本设置完成之后开始进行eosiod的初始化,如下:

if(!app().initialize<chain_plugin, http_plugin, net_plugin>(argc, argv)) return -1;

通过逐步跳转,我们来到appbase中的:

bool application::initialize_impl(int argc, char** argv, vector<abstract_plugin*> autostart_plugins)

在initialize_impl开始会首先执行set_program_options(),即构建选项器。

在这里我们要简单的介绍下program options,program options是一系列pair<name,value>组成的选项列表,它允许程序通过命令行或配置文件来读取这些参数选项,eosiod的很多操作就是通过命令行来配置的,具体的命令行可以使用-help命令进行查看。

构建选项器的过程如下:

在set_program_options中会有以下操作:

具体选项器如何构造,在截图的文字中做了简单描述,eosiod初始化的过程其实就是包含了若干个插件的初始化的过程,因此要将各个插件的选项器构建完成:

当识别到用户输入的命令行参数之后,会进行相应的操作,下面简单的浏览下这些参数的具体意义:

各个插件会根据用户的指令参数去完成初始化操作,以上这些选项器设置完成之后,会继续进行所有插件的初始化操作:

appbase会遍历所有的插件,然后去分别初始化这些插件。

在eosiod中初始化了三个插件:chain_plugin,http_plugin,net_plugin。

本文简单的介绍了eosiod的初始化内容,主要是eosiod是如何一步步的初始化这些插件的,那么这些插件是做什么用的?他们分别实现了什么功能?是如何实现的?这一个个疑问我们会在后面的文章中进行展示。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 eosfans 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Debug EOS:nodeos + mongo_db_plugin
nodeos开始运行前,要先使用项目的总CmakeList.txt配置,这里我配置了boost库的位置,如果你配置了boost的环境变量可以跳过这里。
文彬
2018/09/19
2.1K0
Debug EOS:nodeos + mongo_db_plugin
eos源码赏析(二):eos代码主分支架构
在上篇文章中我们完成了在Ubuntu操作系统编译eos的代码,我们会发现在原有的路径下会多出一个名为build的文件夹,那么这个文件夹里面有什么内容呢?这些东西是用来干什么的呢?古有庖丁解牛,现我们也将一一的分解eos代码主分支,看看这些代码都包含了什么内容,恰如我们看书都会先翻一下序文和目录一样,让我们大致看一下这些个【目录】,这样才能更容易打开eos的大门。
用户2569546
2021/11/23
7720
【刘文彬】RPC的基础:调研EOS插件http_plugin
原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/httpPlugin.html
圆方圆学院
2018/12/07
1.1K0
EOS行为核心:解析插件chain_plugin
以前曾动过写一写chain_plugin插件的念头,因为某些事情耽搁了,最近发现文彬先生写的一篇关于chain_plugin的介绍,真可谓面面俱到,高山仰止景行行止,遂经原作者同意转载至此,和大家一起分享学习。本文原文链接如下:
用户2569546
2021/11/23
5460
区块链3.0:拥抱EOS
EOS是当下最火的区块链技术,被社会广泛看好为下一代区块链3.0。不同于以太坊的学习,EOS的主语言是C++,本文作为EOS研究的首篇文章,重点介绍EOS的创新点,它的周边生态,各种概念原理的解释,以及它被看好的原因。而针对EOS的源码学习,原理实现以及并行的C++语言的快速学习与掌握,我会在接下来制定一系列学习计划一一付诸实现。 关键字:EOS,DAPP,石墨烯技术,构建本地节点,公链映射,选举,EOS链配置,术语解释 EOS.IO EOS.IO 是由block.one开发的一个基于区块链结
文彬
2018/05/03
3.1K0
【许晓笛】听说你买了EOS ,连代码什么样都不知道?
最近发现很多人投资了EOS,却并不关心 EOS 目前的开发进度和技术细节,如果你投资了 EOS, 还有一定的技术基础,那就更应该关心 EOS 的开发情况了,下面我们就从 EOS 的源代码说起:
圆方圆学院
2018/11/11
4990
【许晓笛】听说你买了EOS ,连代码什么样都不知道?
eos源码赏析(二十):EOS智能合约之push_transaction的天龙八“步”
eosio整个系统中,transaction占据着十分重要的位置。我们在区块链上的任何有效操作,都代表着有transaction被执行了。在执行的过程中,push_transaction是不可以被忽略的。例如我们创建账户的时候,会通过push_transaction写到区块信息中,我们进行转账也会push_transaction写到区块信息中,今天我们来看看push_transaction作为区块信息写入的入口,背后做了哪些操作,交易信息是如何写入到区块中的。
用户2569546
2021/11/23
3190
【刘文彬】 Controller:EOS区块链核心控制器
原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/controller.html
圆方圆学院
2018/12/07
1.2K0
eos源码赏析(二十四):主网数据同步及落库MongoDB
对于eos源码有一定了解的同学应该知道,整个eos架构是插件化的,这样更好的降低了整个软件系统的耦合性,也使得各个插件之间交互的顺畅。我们在前面的文章中多次提到了producer_plugin(用于出块等功能)、history_plugin(用于查询等功能)、chain_plugin(命令行相关的操作等功能),还有两个很关键的插件我们没有介绍到,即net_plugin和mongo_db_plugin。net_plugin和区块数据的广播以及主网数据的同步有关,mongo_db_plugin用于存储区块、交易等信息,今天我们结合主网数据同步并落库到MongoDB的过程来简单的分析下这两个插件的使用。
用户2569546
2021/11/23
5180
​【刘文彬】 EOS行为核心:解析插件chain_plugin
原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/chainPlugin.html
圆方圆学院
2018/12/07
1.2K0
【源码解读】EOS测试插件:txn_test_gen_plugin.cpp
这个插件是官方开发用来测试块打包交易量的,这种方式由于是直接系统内部调用来模拟transaction,没有中间通讯的损耗,因此效率是非常高的,官方称通过这个插件测试到了8000的tps结果,而就我的测试结果来讲,没有这么恐怖,但也能到2000了,熟不知,其他的测试手段,例如cleos,eosjs可能只有百级的量。下面,我们一同来研究一下这个插件是如何实现以上功能的,过程中,我们也会思考EOS插件的架构体系,以及实现方法。通过本文的学习,如果有好的想法,我们也可以自己开发一个功能强大的插件pr给eos,为EOS社区做出我们自己的贡献。
文彬
2018/07/30
1K0
第5课 EOS环境搭建入门(私链节点-钱包-密钥-账号)
【本文目标】 通过本文实践,能在已编译的EOS V1.0.5版本环境上,完成私链节点启动,钱包创建,密钥导入和账号创建等内容。 【前置条件】 你已完成了EOS编译,编译测试成功。未完成的可参考《第4课 如何在UBUNTU虚拟机上编译EOS完成环境搭建?》完成相关配置。 【技术收获】 1)EOS的节点,钱包,密钥,账号的概念和理解 2)EOS钱包/账号的建立和遇到的问题分析及解决方法 【说明】 EOS版本还没有稳定下来,即使完成了V1.0.2版本环境搭建的人,到V1.0.5时还是摔在了坑里。辉哥通过踩坑分析给大家提供尽可能多的知识和解决思路,大家在V1.0.5以后的版本部署可参考文章和以错误关键字搜索官网的issue网址获取更多知识。
辉哥
2018/08/10
1.7K0
第5课 EOS环境搭建入门(私链节点-钱包-密钥-账号)
Controller:EOS区块链核心控制器
命名空间namespace定义了一个范围,这个范围本身可作为额外的信息,类似于地址,或者位置。如果有两个名字相同的变量或者函数,例如foshan::linshuhao和nba::linshuhao,命名空间可以提供:
文彬
2018/12/12
1.1K0
eos源码赏析(一):Ubuntu下eos代码编译
网上已经有很多关于btc的源码分析了,由于eos主网上线还需时日,且网上关于eos的源码解析较少,斗胆尝试着做一个系列的文,学习eos的源码,也提升一下自己的阅读代码的能力和对新知识的了解能力。要阅读赏析源码首先运行起来,看看大概是个什么样子,这样心里有个底,也就踏实多了。本文为系列文的第一篇,Ubuntu下eos代码的编译,是依据官网文档的指导完成的。
用户2569546
2021/11/23
5570
EOS生产区块:解析插件producer_plugin
EOS的所有plugin都有共同的基类,因此每个plugin的研究都可以从生命周期入手。
文彬
2018/12/24
1.5K0
eos源码赏析(五):EOS智能合约入门之无崖子传功虚竹
读过《天龙八部》小说或者看过《天龙八部》影视剧的朋友们对无崖子将自己毕生功力传给虚竹都应该不算陌生。我们平时在了解或者熟悉基于各种语言或环境的智能合约开发的时候都不可避免的接触到交易这个概念,即token从一个账户到另一个账户之间转移的过程,那么无崖子传功虚竹是否也是类似的一个过程呢?将功力从无崖子转到虚竹,今天我们就尝试着将这个过程通过eos智能合约开发的形式简单的展示一下。
用户2569546
2021/11/23
5090
EOS源码分析:transaction的一生
客户端设备可以通过eosjs完成本地的事务体构建。下面以调用hello智能合约为例。
文彬
2019/08/23
1.6K0
eos源码赏析(四):基于boost::asio的httpserver架构
eos代码更新很快,在4月初已经升级到3.0版本,随着版本的更迭,在各个操作系统下的编译、节点的运行都越来越集成化,不需要自己再一步步的下载依赖,如果感兴趣可以直接按照官方wiki进行编译。官方wiki地址:https://github.com/EOSIO/eos/wiki
用户2569546
2021/11/23
1.7K0
【许晓笛】从零开始运行EOS系统
本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑。安装 Ubuntu 虚拟机有关教程大家可以在网上搜到。
圆方圆学院
2018/11/11
7090
【许晓笛】从零开始运行EOS系统
4.9 C++ Boost 命令行解析库
命令行解析库是一种用于简化处理命令行参数的工具,它可以帮助开发者更方便地解析命令行参数并提供适当的帮助信息。C++语言中,常用的命令行解析库有许多,通过本文的学习,读者可以了解不同的命令行解析库和它们在C++项目中的应用,从而更加灵活和高效地处理命令行参数。
王 瑞
2023/08/22
5110
推荐阅读
相关推荐
Debug EOS:nodeos + mongo_db_plugin
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档