阅读更多
nodeos:是运行在服务端的区块链节点组件,是EOSIO系统的核心进程,可以通过它运行一个节点
1.配置文件夹位于:eosio/nodeos/config,里面包括config.ini和genesis.json,主要包括chain_plugin,http_plugin,net_plugin,producer_plugin
2.nodeos启动后会去配置文件夹查找config.ini文件,如果没找到,则会创建一个默认的config.ini文件
3.用户数据文件夹位于:eosio/nodeos/data,存储runtime data(包括shared memory和log content)
4.核心代码在initialize()函数由引入了四个插件,这里初始化使用了chain_plugin(区块链插件),http_plugin(HTTP插件,和cleos交互),net_plugin(P2P网络插件),producer_plugin(生产者插件)
5.initialize()函数通过调用find_plugin()实现插件名找到插件;然后把找到的插件(数组)传递给application::initialize_impl()函数进行初始化;
6.startup()函数作为plugin超类的抽象函数,通过initialize()函数初始化遍历插件数组(initialized_plugins),然后调用每个plugin的startup()函数
7.通过exec()函数调用boost库的io_context::run()函数,从io_context的名字中就可以看出,其是"输入/输出上下文"的意思.最终会调用boost库中的scheduler::run()函数,它会开启线程,运行一个异步的IO服务.这样服务端就可以一直运行了
keosd:是EOSIO的钱包管理客户端,可以被认为是一个存储公钥和私钥的仓库,同时管理钱包信息.nodeos和keosd之间并不存在必然关联,只有在需要签名时它们才会产生联系,例如为交易签名.有一点要注意,nodeos已经包含了keosd的完整功能,也就是说在nodeos上也可以管理钱包
1.程序启动,会加载wallet_plugin,wallet_api_plugin,http_plugin三个插件
2.打开三个插件会发现,wallet_manager类提供了关于钱包的所有操作的API函数,包括钱包的创建,密匙查询,加锁解锁,私钥签名等API
cleos:是用户与keosd/nodeos交互的命令行工具,可以说是一个连接用户与keosd/nodeos的桥梁
1.它是一个标准的命令行解析器,类似于Linux操作系统的终端
2.它不存在数据库,它需要的所有数据都是通过HTTP协议去连接nodeos与keosd(这两个进程都有HTTP的监听端口),通过反射机制拿到自己想要的数据再进行逻辑运算并把执行结果显示出来