之前的文章EOS流行之痛——RAM机制设计缺陷?和EOS数据分析——让RAM再飞一会儿 从原理和数据理解EOS上的RAM资源及价格形成。原本想马上写一篇警示RAM投机的文章,朋友提醒,可能会被认为是做空之后就搁置了。本文回归技术本身,详解cleos的使用,并理解EOS资源的使用和限制。当然,你也可以用来做自动化交易机器人。
环境准备
本人测试过的环境:
Ubuntu 16.04 LTS
Ubuntu 16.04.4 LTS
macOS High Sierra(10.13.3)
编译完成的EOSIO软件 v1.0.6或 v1.0.7(90fefdd1)
具体编译过程参考全面理解EOS——1.源码编译及运行
选择使用的网络,主网或测试网
参考全面理解EOS——2.加入EOS主网和测试网
本文使用同步全量数据的JungleTestnet
下载及编译说明也可看EOS-Jungle-Testnet
EOSIO软件组成
首先还是先借用官网的图,理解EOSIO软件的构成:
编译完成的软件,在build目录中的programs中有cleos,keosd,nodeos。我们操作的命令行cleos连接了keosd和nodeos,也就是本地密钥管理和完成信息上传至EOS主链。其中nodeos可以是本地的(同步全量数据),也可以是BP提供的HTTP(s)的API节点。
cleos命令使用详解
查看cleos的帮助,保留常用功能信息如下:
选项:
-h,--help 打印帮助信息并退出
-u,--url TEXT=http://localhost:8888/
连接的nodeos的URL,本地或者远端
--wallet-url TEXT=http://localhost:8900/
连接的钱包地址(keosd),一般是本地
子命令:
version 查看版本信息
create 生成密钥对(其他命令在使用主网中不可用)
get 查询EOS链上数据
set 设置或更新链上数据
transfer EOS转账
net 管理本地p2p地址
wallet 钱包管理相关
push 推送transaction到EOS链上
multisig 多签名合约相关
system 和系统eosio.system合约交互相关命令
我使用的JungleTestnet封装了下cleos,结合上面信息看他的cleos.sh脚本你也能明白,仅是设置了连接的nodeos和wallet的URL地址。
$NODEOSBINDIR/cleos/cleos -u http://$NODEHOST:$NODEPORT --wallet-url http://$WALLETHOST:$WALLETPORT "$@"
下面结合一次完整的创建账号到购买和销售RAM,抵押和赎回资源,详细说明cleos使用步骤(cleos.sh可替换为个人环境的cleos命令):
- 查看版本信息
- 生成EOS公私钥对
- 创建钱包,导入私钥
- 查询链上数据
- 创建新账号
- 转账
- 购买和出售RAM
- 抵押和赎回CPU,Net
下面是详细的使用步骤
1.查看版本信息
$ ./cleos.sh version client
Build version: 90fefdd1
2.生成EOS公私钥对
$ ./cleos.sh create key
Private key: 5Jh8oJvKWcFxPUmGzkVjeLSSBZBYfuHRa1Ekmkh14zUMUGVZYQf
Public key: EOS6FmwJ6FEh23ustzPDuaj1FBvupkZitfN5zU5Us5Sn3rPBaZxNp
不管你是否设置或启动了nodeos,该命令都可执行。
3.创建钱包,导入私钥
有了私钥,需要用钱包管理起来
(1)创建命名钱包
-n参数后面跟着钱包名称,如果不指定,默认是default(后续的解锁,导入私钥都需要-n指定操作的钱包名称);另外通过list,可查看已有的钱包名。
$ ./cleos.sh wallet create -n bcwallet
Creating wallet: bcwallet
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5KA1hVFNCqSB3KSmEHACPxEWinpy5SpAStdYmH7kuufHAAKAFrD"
(2)解锁钱包
导入私钥前,需要先解锁钱包(如果是直接创建的,暂不需要解锁)
./cleos.sh wallet unlock -n bcwallet --