美文网首页eos源码赏析
eos源码赏析(二):eos代码主分支架构

eos源码赏析(二):eos代码主分支架构

作者: eosiofans | 来源:发表于2018-08-24 21:10 被阅读37次

       在上篇文章中我们完成了在Ubuntu操作系统编译eos的代码,我们会发现在原有的路径下会多出一个名为build的文件夹,那么这个文件夹里面有什么内容呢?这些东西是用来干什么的呢?古有庖丁解牛,现我们也将一一的分解eos代码主分支,看看这些代码都包含了什么内容,恰如我们看书都会先翻一下序文和目录一样,让我们大致看一下这些个【目录】,这样才能更容易打开eos的大门。

            eos主目录下有以下文件夹:

            我们挨个来看一下:

    1. 第一部分:CMakeModules主要是cmake编译所需要使用的一些配置信息。

      cotire是加快编译速度的cmake文件。

      doxygen可以将代码中的一些注释生成相关文档。

      gperftools包含了性能分析相关的配置。

      findWasm检测当前机器是否可以生成wasm32

      insatall提供安装的相关配置信息。

      上文咱们说过eos的编译需要wasm的支持,因此wasm.cmake文件提供wasm相关的配置信息。

    2. 第二部分:Contracts中包含有智能合约的相关内容

      asserter中定义了assert的相关结构体,并完成对智能合约事件的分发。

      bancor即班科,定义了bancor结构体,包含有凯恩斯国际货币单位的相关内容,主要是货币单位之间的转换。

      currency定义了currency结构体,同样为货币的相关内容。

      dice中实现了一个掷骰子的小游戏。

      eosio.system包含有eosio系统的相关内容,这个接下来会做相关专题介绍。

      eosiolib中包含有eos运行所依赖的库的头文件。

      exchange中包含有交易相关结构体的定义。

      identity中包含有身份的相关定义,在eos中身份和账户是两个相互分离的概念,身份和账户的映射需要服从一定的共识。

      infinite从字面意义上理解是无限,代码中实现了一个不停的去打印的函数。

      libc++中主要是c++所以来的库。

      musllinux操作系统下的一个标准库。

      noop实现一个空的智能合约。

      proxy实现代理的相关内容。

      simpleDB 包含了数据库相关内容。

      skeleton看不出有什么内容。

      social主要是方便用户创建属于自己的货币同时可以让其进行投票等举动(马上要开始的21节点竞争就是通过投票来进行的)。

      storage方便用户去修改账户的名字。

    3. 第三部分:一些文档说明

      docker方便用户在Docker上运行eos。不多做介绍。

      docs中是一些文档。

      externals里面是一些依赖的外部文件。

    4. 第四部分:Librarieseos依赖的一些库,其中有:

      abi_generator用于生成abi文件。

      appbase为一系列的插件编译提供了一个框架,他可以确保插件正常配置、初始化、启动、关闭这一个流程。

      chain这里面包含有eos作为区块链的核心内容。

      chainbase是为了满足区块链应用设计的一个数据库,但是也使用于任意需要一个鲁棒性较高的交易数据库。

      egenesis主要是测试P2P网络用的。

      utilitiles主要是一些通用的标准函数。

    5. 第五部分:eos编译运行所需要的插件:

      account_history_api_plugin 账户历史记录的接口插件。

      account_history_plugin 账户历史记录插件。

      chain_api_plugin 链的接口插件。

      chain_plugin 链的插件。

      faucet_testnet_plugin水龙头测试网络插件。

      http_plugin http插件。

      mongo_db_plugin mongoDB插件。

      net_api_plugin 网络接口插件。

      net_plugin 网络插件。

      wallet_api_plugin 钱包接口插件。

      wallet_plugin 钱包插件。

    6. 第六部分:build文件夹下的内容

      debug_node供开发者运行一些有趣的测试。比如当下一个硬分叉到来之前我生产了足够多的区块时会发生什么。

      eosio-abigen用于生成abi文件。

      eosdeos的核心,它可以根据用户的配置启用插件来运行一个节点。现在可用来产生区块,封装接口,本地开发等功能。

      eosc其实是提供了命令行操作的eosd。要使用eosc首先要在初始化eosd的时候配置好ip和端口,同时加载eosio::chain_api_plugin

      eos-walletd eos的钱包核心线程,加载一些核心控件如http接口和PRC接口。

      launcher launcher简化了eosd节点跨局域网或者跨更宽泛的网络的分布。

     以上便是eos代码主分支下代码的基本骨骼,主要包含有cmake编译所需配置文件、智能合约实现内容、一些文档说明、eos代码编译的依赖库、eos编译运行所需插件和编译之后生成的内容。正是这些内容组成了eos代码的整体,接下来我们将简单的介绍下eosio.system。

    相关文章

      网友评论

        本文标题:eos源码赏析(二):eos代码主分支架构

        本文链接:https://www.haomeiwen.com/subject/bnwiiftx.html