EOS智能合约开发(十七)EOS架构解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jambeau/article/details/82181220

大家好,写了这么多文章了,似乎我们还没有分析过EOS的系统架构,今天我们就分析一下EOS的系统架构。帮助大家理解EOS整体架构。我们参考EOS官方文档进行解析。https://steemit.com/eos/@eosio/introducing-eos-io-application-stack

官方文档中,清晰的描述了以下原图。这张图,是EOS未来发发展蓝图,BM早期的想法就是为用户提供百万级TPS体验而设计的基础设设施。仔细阅读源代码,发现目前还与很多没有实现。这个是我们对EOS的期待。
这里写图片描述

从EOS的系统架构,我们可以清晰看到系统主要由以下几个部分组成:

  • nodeos(Node + eos=Nodes): EOS 系统的核心进程,也就是所谓的“节点”。主要是生产节点,一般用户可以不用启动,运行时可以配置插件,也可以修改源代码自动以插件:

    • producer_plugin(生产节点插件):生产节点必须使用这个插件,普通节点不需要。
    • wallet_plugin(钱包插件):使用这个插件就可以省去 keosd 钱包工具。
    • wallet_api_plugin(钱包接口插件):给钱包插件提供接口。
    • chain_api_plugin(区块链接口插件):提供区块链数据接口。
    • http_plugin(http 插件):提供 http 接口。
    • account_history_api_plugin(账户历史接口):提供账户历史查询接口。
    • bnet_plugin提供了一个p2p协议,使用一个非常简单的算法持久地同步两个区块链。
    • faucet_testnet_plugin 此插件提供了一个界面,可帮助在EOSIO testnet上自动分发令牌。
    • net_api_plugin公开net_plugin到http_plugin管理的RPC API接口的功能
    • net_plugin公开net_plugin到http_plugin管理的功能
    • txn_test_gen_plugin 此插件提供了一种根据货币合约每秒生成给定数量的交易的方法。它在内部运行以减少开销。
    • mongo_db_plugin:可选项eosio::mongo_db_plugin将区块链数据存档到MongoDB中。建议将插件添加到非生产节点,因为它旨在关闭MongoDB中任何失败的插入并且是资源密集型的。为了获得最佳结果,请将nodeos实例专用于运行此插件。此错误关闭背后的基本原理是,可以修复mongo数据库或连接的任何问题,并且可以重新启动nodeos而无需重新同步或重放。
  • cleos(cli+eos=Cleos):本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)的 REST 接口通信。是用户或者开发者与节点进程交互的桥梁。

  • keosd(key + eos = Keosd):本地钱包工具。非节点用户存储钱包的进程,可以管理多个含有私钥的钱包并加密。
    这些组件之间的关系如下图:
    这里写图片描述
    本地单节点测试系统
    本地单节点的情况下,仅需要 nodeos 和 cleos,不需要 keosd,因为用节点的钱包插件管理私钥即可。这一个节点就是区块链的全部,所有的数据均储存在单一节点中。所以下图中的“BlockChian”只是一个概念,所有的出块工作全都在 nodeos 中搞定。
    这里写图片描述
    本地多节点测试系统
    本地多节点测试系统就更接近真实的区块链网络了,只是运行在同一台计算机中。各个程序各司其职,keosd 管理私钥,cleos 连接用户与节点,nodeos 作为节点出块。
    这里写图片描述
    EOS 初期主网络
    如果近期没有大的变化,EOS 即将上线的主网络就是 21主节点 + 100 后备节点的架构。
    这里写图片描述

本文参考EOS官方文档。
2018年8月29日整理于深圳

猜你喜欢

转载自blog.csdn.net/jambeau/article/details/82181220