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

大家好,写了这么多文章了,似乎我们还没有分析过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日整理于深圳

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1、玩过EOS的都知道,EOS本身更新迭代非常之快,所以有些知识点可能与最新版有所出入,希望小伙伴理解!此文档适用于EOS-v1.0.5以上版本和v1.1.x版本,目前的v1.2.x可能会有极少部分出入,比如eosiocpp工具看更新说明再不用安装的状态下就能使用,目前还未测试。有兴趣的小伙伴可以留言交流。 2、当前文档目录结构介绍: #思考研究问题 1、如何保证EOS中发布的智能合约不被随意篡改? #玩转EOS智能合约代码 #玩转客户端cleos 1、先玩转与智能合约相关的操作 #使用eosiocpp工具编译智能合约生成abi文件和wast文件 #编译合约(无法通过) #安装build/programs下工具 #重新编译合约 #部署合约到账户 #购买RAM #测试调用部署的合约 #更新\升级已经部署过的智能合约(相对空的合约) #更新添加新的函数接口(action)合约 #有关require_auth的合约测试 2、玩转智能合约与数据库相关操作 #参考资料 #持久化API (Multi-Index) 1、一般来讲,对数据库的操作无外乎增删改查 2、表结构示例详解 3、Multi_index定义,建立数据表 4、实例化multi_index 5、操作数据,增删改查 #玩转table表 1、Table表producers 2、Table表global 3、Table表voters 4、Table表rammarket (获取RAM实时价格) 5、Table表refunds (查看账户退款信息) 6、Table表namebids (罗列参与竞拍的账户信息) 3、启动nodeos节点出现脏数据 4、查看账户抵押资产,抵押token,赎回token #查看账户余额(可用余额) #查看SYS货币信息,eosio.token是经营货币的合约 #查看公钥对应账户 #查看子账户(控制账户) #查看账户信息 #查看账户抵押信息 #钱不够那就转账,随便耍 #get transaction无结果了解一下 #卖出RAM(卖给系统账户eosio.ram),字节bytes #抵押token获取CPU和net资源 #赎回抵押token,默认三天后到账,执行后可查看账户状态

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值