作者:michael@比特天梯
架构概述
了解EOSIO我们从官方给出的以下架构图来入手,先看图如下:
EOSIO主要包含了以下组件,nodeos、keosd和cleos
- nodeos: node+eos=nodeos,EOS系统核心进程,也就是所谓的“节点”。运行时可以配置相关插件,具体插件介绍将在后续篇幅详细介绍;
- keosd:key+eos=keosd,本地钱包工具。非节点用户存储钱包的进程,可以管理多个含有私钥的钱包并加密;
- cleos:cli+eos=cleos,本地命令行工具,通过命令行与真人用户交互,并与节点(nodeos)的REST接口通信。是用户或者开发者与节点进程交互的桥梁;
另外,EOSIO还提供了以下工具,供开发者使用:
- eosio.cdt:智能合约开发工具箱
- eosio-cpp:智能合约编译器
- eosjs:Javascript开放接口库
- demux-js:链上区块数据同步器,将数据同步到本地数据库,降低数据查询成本
EOS应用架构
看完上面官方给出的这幅图之后,心里是否有疑问“基于EOS的一个应用是怎么架构的呢?”。接下来我们看下一幅图:
开发者:
- 使用c++编写智能合约,合约的代码组成是.cpp和.hpp;
- 通过工具eosio-cpp编译合约生成.wasm和.abi文件;
- 通过cleos客户端创建钱包、生成key pairs并导入钱包,然后将编译好的合约上传到链上;(此时可以在链上执行合约的action来验证合约部署情况)
- 使用Java等服务器端编程语言编写其他非合约业务逻辑,编译打包部署到业务服务器的中间件;
- 使用HTML/JS开发Web客户端,可以通过调用eosjs接口进行链通讯,打包部署到业务服务器的Web服务器;
用户:
- 通过部署好的HTML网页进行程序访问;