不知道下边这一段英文你们是不是能看懂,如果看不懂那就算了,我就是转过来随便看看的。
总之你记住nodeos、cleos和keosd这三个工程十分重要就行了,回头咱们的研究都从这三个工程杀进去。
EOSIO comes with a number of programs. The primary ones that you will use, and the ones that are covered here, are:
nodeos
- server-side blockchain node componentcleos
- command line interface to interact with the blockchain and to manage walletskeosd
- component that manages EOSIO wallets
The basic relationship between these components is illustrated in the following diagram. In the sections that follow, you will build the EOSIO components, and deploy them in a single host, single node test network (testnet) configuration.
今天我们就来讲讲怎么通过cleos命令行客户端操作EOS吧。(默认是操作自己当前主机节点,如果你添加了ip地址参数的话,你也可以操作别的节点)
那么要操作当前机器的节点,我们得先把当前节点给启动是吧?来,打开Terminal,执行如下操作:
是不是被./nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin 这货搞疯了?呵呵呵……来,跳转到你的/home/fengwork/.local/share/eosio/nodeos/config目录下,是不是看到有一个config.ini文件?打开它,把里面的内容换成如下内容:
enable-stale-production = true
#required-participation = true
shared-file-size = 8192
send-whole-blocks = true
http-server-address = 127.0.0.1:8888
p2p-listen-endpoint = 0.0.0.0:9876
p2p-server-address = localhost:9876
allowed-connection = any
required-participation = 33
private-key = ["EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV","5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"]
producer-name = eosio
plugin = eosio::chain_api_plugin
plugin = eosio::history_api_plugin
plugin = eosio::wallet_plugin
plugin = eosio::wallet_api_plugin
plugin = eosio::net_plugin
plugin = eosio::net_api_plugin
plugin = eosio::chain_plugin
然后到上一级目录,也就是/home/fengwork/.local/share/eosio/nodeos下边,是不是发现有一个data文件夹?删掉它——这里面放的就是你打的块,因为我们先去跑过一趟程序,所以里面已经存了很多空块了。有时候会因为这玩意儿的存在导致节点跑不起来,比如说程序重新编译之后。
嗯,接下来,再次转到Teminal中来,这时候,你只需要一个./nodeos命令,节点程序就跑起来了,是不是心情好多了?
至于上边这里面那段红色的和黄色的是啥意思,我们先不管了,回头跟踪下程序,让程序来告诉咱们它到底怎么会显得那么不一样吧。
下边我们就可以正式开始拿出我们的cleos来干活了。
再次打开一个Terminal(ctrl+alt+t),执行如下操作:
>cd eos/build/programs/cleos/
这样就转到了cleos文件夹下,通过ls命令,咱们可以看到这下边有一个名叫cleos的可执行文件,如下图:
下边我们先来做一些基础操作吧:
1、创建默认钱包(./cleos wallet create)
通过返回的信息,我们看到我们已经启动了keosd工程,同时创建了一个名为default的默认钱包,且这个钱包的password为PW5KZGrxQR77W2ctkZPGsZugQVekdEipZKxE48sxy6rPFE6sUfnV6
这个password咱们得拿小本本记住了,回头打开钱包就靠它了呢。
2、看看咱们创建的钱包吧(./cleos wallet list)
发现没?返回的json里面只有一个刚刚创建的default钱包,且这个钱包后面带了一个*符号,这表示这个钱包是解锁状态的,你可以对它进行各种操作。额,感觉这里只有一个钱包不太爽,咱们给它多弄几个进去吧?
3、创建自定义名称的钱包(./cleos wallet create -n xxx)
看到没?我们又连续创建了三个钱包——wangerxiao、simaguang、hanmeimei,且通过提示,我们可以了解到这三个钱包也都是处于解锁的状态,不信咱们使用./cleos wallet list命令看看?
它们果然都是解锁中的,快点拿小本本来把这些password记下来:
default:PW5KZGrxQR77W2ctkZPGsZugQVekdEipZKxE48sxy6rPFE6sUfnV6
wangerxiao:PW5JVrRerDpKyFxMFcoafsnCyPwdpSjVKRnkPsyXiF78WeYKCD71W
simaguang:PW5K97DmRL1XbNmQk7V2K4nZtcq5cUiEe8rbpFcT4QNVyGXJws76R
hanmeimei:PW5JVE2ZvSBQ51TnmZfQ7M1vKarEoAtm6E6wXvZ2Bm8GRKmHoWa62
额,现在我想试试我的password好不好使,怎么办呢?当然得先把钱包给上锁啊。上锁——
4、给钱包上锁(./cleos wallet lock -n xxx)比如说我把wangerxiao给锁了(./cleos wallet lock -n wangerxiao)
看到没?wangerxiao这个钱包被锁上啦!其它的还是好好的。
好,下边我们来利用wangerxiao的password把wangerxiao这个钱包解锁吧。
5、解锁钱包(./cleos wallet unlock -n xxx --password pasxxxxxxxxxxxxxxxxxxx)
我们看一下上边,已知wangerxiao这个钱包的password为PW5JVrRerDpKyFxMFcoafsnCyPwdpSjVKRnkPsyXiF78WeYKCD71W,则解锁情况如下:
咦,为什么上图中,解锁wangerxiao后,其它钱包又被锁上了呢?哈哈哈哈……因为刚刚是中午饭时间,我出去吃了个饭,然后睡了个午觉才继续敲的,所以,超过一定的时间,这钱包就自动上锁了。非常我们的为我们的钱财安全着想哈!
至于这个超时时间是多少,我不知道,但是粗略估算一下,我这中间大概两个小时没操作它了,所以绝对是两个小时以内的事情。
6、查看钱包中的keys(./cleos wallet keys)
出于好奇,我创建了钱包后,能够通过./cleos wallet list获得钱包列表,但是我现在想要钱包的password怎么办呢?查了下文档好像没有这个方法,这个password应该是真真切切的要求你给记录在你自己的小本本里了,要是丢了的话,你钱包可就打不开了噢。
然而,我发现了还有一个命令——./cleos wallet keys,这货是干啥的?
于是我刚刚又去喝了杯水,回来后就在cleos中敲入了./cleos wallet keys这个命令,又发现wangerxiao这个钱包也被锁了,所以,说不准是5分钟就超时了。
那我们就给你解锁嘛,解锁后再试试这个命令。
先解锁wangerxiao,然后使用./cleos wallet keys看看,咦,发现有一串奇怪的字符被返回。这是什么鬼?和我们的password根本就不一样,它居然是以EOS开头的。
我们再解锁simaguang,使用./cleos wallet list看看情况,发现有两个钱包被解锁了,然后再次输入./cleos wallet keys,回车,咦,怎么还是返回这一串鬼东西?这玩意儿哪来的?
哈哈哈,是不是一脸懵逼?
是不是很想知道这东西哪来的?
还记得我们上边修改config.ini的时候,里面的那串private-key嘛?又还记得我们刚修改好配置文件后运行节点时出现的那段黄色的信息嘛?
对,这玩意儿是我们导进去的,但是说实话,我那段config.ini的东西是3.0版本的,相对于这边的正式版有点老了,所以……回头抽空我们再来讲讲怎么弄一个适合V1.0.1版本的config.ini吧。
现在我们还来继续聊这个key的事。我们要查看key,那首先得里面有key,那这个key从哪里来呢?当然是我们自己创建的了。
这里EOS里面的key是公私钥对成对出现的,key和password不是同一个概念,虽然看起来都是一串很长的字符,但是——password是针对钱包wallet的,而key则是针对账户account的。
你创建了wangerxiao这个钱包,不等于你已经在链上有了wangerxiao这个账户,实际上wallet和account两者之间完全是没有关系的,只有当你将account的key放在wallet里的时候,它们两者之间才有了那么点点联系。
每一个account都会有两组公私钥对,对应该账户的两个角色——owner和active。所以我们每次创建账户的时候,都需要给新账户导入两个key进去。
至于怎么操作,我发现这一节已经写得有点长了,休息一下,下一节再聊吧。