eos项目(v1.4.4)主要可以分为以下八个模块:
- 编译模块
- 主程序模块
- 依赖库模块
- 插件模块
- 智能合约模块
- 测试模块
- Docker工具模块
- 文档说明模块
EOS主目录结构
1、编译模块
eos项目的整体编译、依赖库下载、代码编译等功能,依托于一个完整的脚本体系,主要包括以下三部分:
- eos/eosio_build.sh
- eos/scripts
- eos/CMakeModules
1.1、eos/eosio_build.sh
eos/eosio_build.sh是eos项目的主编译脚本,通过运行这个脚本,就可以实现对eos项目的一键编译,脚本运行过程中主要测试了编译所需的硬件与软件环境是否满足要求以及显示编译结果。
1.2、eos/scripts
eos/scripts目录中包含了项目编译所需的其他脚本文件,其中:
- abi_to_rc目录、abigen.sh和abi_is_json.py共同负责将C++语言编写的智能合约编译成.abi文件,再将.abi文件编译成可执行文件;
- eosio_build_前缀的脚本文件分别是针对不同系统的编译子脚本;
- eosio-tn_前缀的脚本负责自动化运行,关闭节点。
1.3、eos/CMakeModules
由于eos项目是基于CMake等工具编译的,所以eos/CMakeModules中主要包含CMake编译所需要使用的一些配置信息。
cotire.cmake是加快编译速度的cmake文件。
doxygen.cmake可以将代码中的一些注释生成相关文档。
FindGperftools.cmake包含了性能分析相关的配置。
FindGperftools.cmake检测当前机器是否可以生成wasm32。
installer.cmake提供安装的相关配置信息。
wasm.cmake文件提供wasm相关的配置信息。
2、主程序模块
eos项目的主程序源代码位于eos/program目录下,包含6个基本功能组件:
- eos/program/nodeos
- eos/program/cleos
- eos/program/keosd
- eos/program/eosio-abigen
- eos/program/eosio-launcher
- eos/program/eosio-blocklog
2.1、nodeos
eos/program/nodeos是eos项目的核心程序源代码,可以配置不同插件来运行不同类型节点。该进程主要负责提供区块生产,封装API接口和本地开发的功能;
2.2、cleos
eos/program/cleos是eos项目中与nodeos之间交互信息的命令行工具cleos的源代码,编译后与nodeos公开的REST API进行信息交互。
2.3、keosd
eos/program/keosd是eos项目中的内置钱包程序,配合钱包相关插件通过HTTP接口或RPC API与cleos进行通信,完成账户创建,转账等基本钱包功能。
2.4、eosio-abigen
eos/program/eosio-abigen是eos项目的智能合约编译器源代码(用于生成智能合约的.abi文件)
2.5、eosio-launcher
eos/program/eosio-launcher是eos项目的P2P网络组成启动器源代码,该部分简化了nodeos节点组网的流程。
2.6、eosio-blocklog
eos/program/eosio-blocklog是eos项目的区块日志相关的源代码。
3、依赖库模块
eos项目的运行依托于许多依赖库,这些依赖库的基本信息位于eos/libraries目录中,包括:
- eos/libraries/abi_generator
- eos/libraries/appbase
- eos/libraries/builtins
- eos/libraries/chain
- eos/libraries/appbase/fc
- eos/libraries/chainbase
- eos/libraries/egenesis
- eos/libraries/utilitiles
3.1、abi_generator
eos/libraries/abi_generator包含了智能合约编译器所需的依赖文件,可以说编译器的主要代码就是位于这个目录中