前一篇文章介绍了EOSIO中钱包、账户与账户权限的概念,这一篇文章继续学习EOSIO系统的主要组件,包括nodeos、keosd以及cleos。

本文执行的命令都是基于Docker环境,请先下载Docker镜像

docker pull eosio/eos

nodeos、keosd与cleos的关系

先来了解整体架构,下图展示了nodeos、keosd与cleos之间的关系。 

图中有几个关键信息:

  1. nodeos就是我们常说的节点,用来管理账号,上传数据到区块链。
  2. keosd是钱包管理客户端,用来保存钱包信息。
  3. cleos是用户(主要是开发人员)与keosd/nodeos交互的命令行工具。

nodeos

nodeos的官方定义如下

nodeos - server-side blockchain node component

nodeos是运行在服务端的区块链节点组件,是EOSIO系统的核心进程,可以通过它运行一个节点。

在Docker环境通过下面的命令运行一个nodeos节点。

docker run --name nodeos -p 8888:8888 -p 9876:9876 -t eosio/eos /opt/eosio/bin/nodeosd.sh arg1 arg2

这个命令有下面几层含义:

  1. 使用eosio/eos镜像,启动一个名称是nodeos的容器。
  2. 启动后将容器的8888端口映射到本机8888端口,9876端口映射到本机9876端口。
  3. 启动容器时执行 /opt/eosio/bin/nodeosd.sh 脚本,通过此脚本运行nodeos节点。

节点启动后,我们可以看到下面的信息,节点正在生成区块数据。

使用下面的命令进入nodeos容器,并找到nodeosd.sh文件所在的文件目录。

docker exec -it nodeos /bin/bash
cd /opt/eosio/bin/
ls

可以看到在这个目录下,除了nodeos.sh,还有nodeos、keosd、cleos,这说明在eosio/eos镜像中已经包含了这三个组件的完整信息,有兴趣的同学可以继续深入了解,我在这里就不展开介绍了。

keosd

keosd的官方定义如下

keosd - EOSIO wallet

keosd就是EOSIO的钱包管理客户端,可以被认为是一个存储公钥-私钥的仓库,同时管理钱包信息。

nodeos与keosd之间并不存在必然关联,只有在需要签名时它们才会产生联系,例如为交易签名。

有一点要注意的是,nodeos已经包含了keosd的完整功能,也就是说在nodeos上也可以管理钱包。

在Docker环境通过下面的命令运行一个keosd客户端。

docker run --name keosd -t eosio/eos /opt/eosio/bin/keosd arg1 arg2

与运行nodeos相比,有两点不同: 1.启动keosd不需要指定端口 2.使用/opt/eosio/bin/keosd 启动keosd客户端

启动信息如下 

使用下面的命令进入keosd容器

docker exec -it keosd /bin/bash

cleos

cleos的官方定义如下

cleos - command line interface to interact with the blockchain

cleos是用户与keosd/nodeos交互的命令行工具。

在nodeos或者keosd中,使用 cleos -h命令,可以查看cleos的帮助信息。

cleos 目前支持 version create get set trnsfer net wallet sign push 9个子命令。

建议大家先将所有命令翻看一遍,了解每个命令的功能范围,同时可以对照官方文档 Command Reference : https://github.com/EOSIO/eos/wiki/Command%20Reference 一起学习。

转自:https://www.taowong.com/blog/2018/06/28/eos-develop-4.html

参考资料

【系列】EOS智能合约开发08 - 详解 nodeos & cleos

【系列】EOS智能合约开发10 - 详解 keosd

Command Reference

Tutorial Comprehensive Accounts and Wallets

(转)EOSIO开发(四)- nodeos、keosd与cleos的更多相关文章

  1. EOS开发基础之四:使用cleos命令行客户端操作EOS——智能合约之eosio.bios和eosio.token

    现实世界中的合约,简单地说,是一个参与活动的所有人都需要遵循的协议.合约可以是正式的法律合同(例如,金融交易),或者是简单的游戏规则.典型的活动可以是诸如资金转移(在金融合约的情况下)或游戏动作(在游 ...

  2. (转)EOSIO开发(一)使用Docker构建本地环境

    前言 一直想学习EOS开发,但是不知道怎么入门.最近从GitHub上下载了源码,发现官方已经提供了完整的EOSIO开发入门教程,既然如此赶紧开始行动.今天是系列文章的第一篇,介绍如何使用Docker搭 ...

  3. EOS开发基础之五:使用cleos命令行客户端操作EOS——智能合约之Exchange

    先回答一下上一节中留下的问题,为什么我就看不到eosio这个账户中的钱呢?我明明为它create了很多token啊. 对,你是create了,但是没有issue啊.create了1000000000 ...

  4. JAVA EE企业级开发四步走完全攻略 [转]

    http://bbs.51cto.com/thread-550558-1.html 本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划, ...

  5. C#的百度地图开发(四)前端显示与定位

    原文:C#的百度地图开发(四)前端显示与定位 有了这些定位信息,那要如何在前端的页面上显示出来呢?这需要用到百度地图的JavaScript的API.下面是示例代码. 前端代码 <%@ Page  ...

  6. 【JAVA EE企业级开发四步走完全攻略】

    本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划,单个发blog比较零散,所以整理此索引,决定以后每发一季JAVA EE blog后会 ...

  7. 从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装

    标题:从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11260750. ...

  8. STC8H开发(四): FwLib_STC8 封装库的介绍和注意事项

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  9. EOS开发基础之六:使用cleos命令行客户端操作EOS——智能合约之eosio.msig和eosio.system

    上一节我们搞了老半天,也没整明白Exchange这个合约到底干啥用的.就它官方提供的说法,是用于货币的创造和交易.我没整明白,所以去看了下代码,发现代码头文件里面有下面这段话: This contra ...

随机推荐

  1. vue编程式路由实现新窗口打开

    一. 标签实现新窗口打开: 官方文档中说 v-link 指令被 组件指令替代,且 不支持 target=”_blank” 属性,如果需要打开一个新窗口必须要用标签,但事实上vue2版本的 是支持 ta ...

  2. 36个让人惊讶的 CSS3 动画效果演示【转】

    本文收集了35个惊人的 CSS3 动画演示,它们将证明 CSS3 Transform 和 Transition 属性的强大能力.CSS 是网页设计非常重要的一部分,随着越来越多的浏览器对 CSS3 支 ...

  3. H - Windows Message Queue

    Message queue is the basic fundamental of windows system. For each process, the system maintains a m ...

  4. url自动补全index.php

    location / { index index.html index.htm index.php l.php; autoindex on; if (!-e $request_filename) { ...

  5. MySQL数据库一个字段对应多个值得模糊查询和多个字段对应一个模糊查询

    当一个字段想模糊查询出多个字段的时候,正常情况下一般会这么作 1 select * from a where name like 'a%' or name like 'b%' ....or ...; ...

  6. Nand: OOB BBT ECC PEB LEB

    OBB: 例如Samsung K9F1208U0B,数据存储容量为64MB,采用块页式存储管理.8个I/O 引脚充当数据.地址.命令的复用端口.芯片内部存储布局及存储操作特点: 一片Nand flas ...

  7. CCPC-Wannafly Winter Camp Day3 Div1 - 精简改良 - [生成树][状压DP]

    题目链接:https://zhixincode.com/contest/14/problem/D?problem_id=206 样例输入 1  5 5 1 2 1 1 3 1 2 4 1 2 5 1 ...

  8. shell脚本之使用sed和awk进行文本处理

    Shell这种脚本语言特点是,结果松散,场景复杂,针对于一些参数都有特殊意义.针对于大部分工程师而言,使用中的情况是你可能会经常忘记参数或其意义,使你不得不查阅man或网上寻求帮助.此篇文档作用就是在 ...

  9. 2012年蓝桥杯省赛A组c++第4题(电视台答题比赛)

    /* 某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度. 答对的,当前分数翻倍:答错了则扣掉与题号相同的分数(选手必须回答问题,不 ...

  10. python basic

    #遍历一个序列,很多传统语言过来的,习惯用下标遍历,Python中序列是可迭代的,直接for即可! colors=['red','green','blue','yellow'] for color i ...