欢迎来到EOS小白学习系列,本系列会记录EOS学习过程中的一些操作和细节,大饼果子非C++出身,如有错误,欢迎指出
接上一篇:
EOS小白学习(一)从docker启动eos节点
我们已经用docker把EOS的节点启动起来了,现在我们要做的是对系统合约的部署,本篇会比较长,有一些概念会在之后的篇幅中慢慢介绍
1. 启动cleos命令
alias cleos='docker exec nodeos /opt/eosio/bin/cleos -u http://127.0.0.1:8888 --wallet-url http://127.0.0.1:8900'
cleos是对接上一篇启动的nodeos的REST API的命令,暂且可以理解为可以对节点和钱包进行操作的命令,那么这个命令可以做什么呢?
让我们尝试cleos一下
说我们cleos的命令缺少subcommand,如果cleos命令格式不对,cleos命令会提示我们一些详细的内容,subcommand会在之后的系列中慢慢用到,我们先有个概念就好
2. 下面我们进行钱包的创建
相信很多人看了eosio的官网都熟悉这样一张图
简单的说,我们上一篇使用docker启动的节点其实包含了keosd和nodeos,这两个实现的功能分别是:
keosd:操作本地钱包,本地钱包的功能包括管理钱包账户,管理密钥对的存储等
nodeos:操作与链上数据的对接
而cleos就是对这两部分的调用
⚠️注意:
相信很多人知道eos也是有账户(account)的,那么钱包账户与eos账户什么关系呢?答案是没有关系
eos的账户是人类可读的格式,例如:eosio,eosio.token,dabingguozi1
每个账户有一些密钥对来标明所属和访问权限,比如public key1 对应private key1
wallet是用来帮助管理记忆这些密钥对的,比如我的default钱包中存着我的private key1和public key1,我不需要记住我的private key,只需要使用wallet来帮我记录就好,当然为了防止本地的wallet出问题,还是强烈建议大家备份自己的密钥对
啰嗦过后,开始创建wallet啦
cleos wallet create
结果如下
我们首先看到了 /opt/eosio/bin/keosd launched,也就是说cleos调用了钱包功能
之后我们看到了creating wallet: default,也就是说我们创建了一个名字叫做default的钱包,keosd可以创建很多钱包,如果没有指定名字,那么名字就是default
下面的一句提醒我们可以用以下密码来解锁钱包,什么意思呢?钱包的访问也是有密码的,如果钱包被锁,那么没有密码也是没有办法去拿到里面存放的私钥的
所以密码要存下来,就可以用下面的方式解锁了(我已经解锁过,所以会报错,如果钱包是锁的就不会报错)
那么私钥怎么存进钱包的嘞?我们来执行一下
cleos wallet import --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
这个私钥是测试环境eosio的固定私钥,,⚠️如果是生产环境,请使用自己的私钥
eosio是啥?eosio就是系统账户,系统账户能干啥?可以cleos get abi eosio看一下,具体信息以后的篇幅里会讲到
我们可以查看自己已经倒入的私钥
这个数据是一个列表,那么也就是说我们还可以导入很多私钥到钱包里进行管理
3. 我们现在要创建其他的一些系统账户了
cleos create account eosio eosio.system EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.bpay EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.msig EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.names EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.ram EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.ramfee EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.saving EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.stake EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.vpay EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.token EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
这些系统账户有些很容易从名字知道其作用,比如eosio.ramfee就是用来收取ram的费用的,一部分账户的作用会在之后的篇幅讲到
eos的账户都是可以部署合约的,比如eos的币也是一种合约,这个合约是由eosio.token部署的,那么下面我们就要部署一些基本合约
cleos set contract eosio contracts/eosio.bios -p eosio
cleos set contract eosio.token contracts/eosio.token -p eosio.token
cleos push action eosio.token create '["eosio", "52000000000.0000 SYS", 0, 0, 0]' -p eosio.token
cleos push action eosio.token issue '["eosio", "52000000000.0000 SYS", "test"]' -p eosio
cleos set contract eosio.msig contracts/eosio.msig -p eosio.msig
cleos set contract eosio contracts/eosio.system -p eosio
cleos push action eosio setpriv '["eosio.msig",1]' -p eosio
cleos system buyram eosio eosio "5200000 SYS"
cleos system delegatebw eosio eosio "520000 SYS" "520000 SYS"
这其中包括了部署合约,发行系统币等一系列操作,详细内容会在之后篇幅讲到,本篇希望大家有一个概念,EOS的思想就是一切皆合约
完成到了这里,就完成系统合约的部署,我们只是对系统做一些设定,producer的一些设置在这里先不会讲,毕竟是小白学习系列,在实践的过程加深对概念的理解
下一篇会本果子会带大家创建测试环境的账户,接下篇:
EOS小白学习(三)创建一个EOS的账户
ps. 大家可以cleos wallet以下,自己试试看钱包都可以做什么