【eos全家桶系列】账户 & 钱包 & 私链搭建
简介
本篇文章,将跟大家介绍eos的基本入门操作,包括私链的搭建、如何创建钱包、如何创建账户等。大家在看完本章之后,应该能在本机上搭建好eos私链,学会创建钱包和账户,为后面做质押资源、转账、投票等基本操作做准备了。
私链搭建
第一步,下载eos代码库。
由于文件较大,大家需要预留20G以上的空间用于安装eos节点。下载库及依赖库时间较长,请耐心等待。
git clone https://github.com/EOSIO/eos --recursive
第二步,下载完成后,请切换到最新的release版本。
cd eos
git tag
git checkout <tag>
在这里查看eos的最近release版本:https://github.com/EOSIO/eos/releases
第三步,执行自动编译安装。
cd eos
./eosio_build.sh -s EOS
参数解释:-s 指定系统主币名称,不加默认是SYS
注意:编译过程中,可能出现本机cmake的各种依赖没有安装,导致编译失败的情况。请按照提示安装各种依赖,不明白的地方可以去github查找issue
第四步,安装完毕后,为了运行智能合约,还需要执行
cd eos/build
sudo make install
第五步,安装完毕后,首次运行节点,执行
nodeos
第一次运行会报错,因为没有生成config.ini配置文件。即使成功启动,因为私链没有配置成打包区块的节点,不能进行交易。crtl+c退出,看下一步
第六步,修改eos配置文件。
eos的配置文件,根据不同的操作系统默认放在以下目录,有config.ini和genesis.json文件
mac os:~/Library/Application\ Support/eosio/nodeos/config
linux:~/.local/share/eosio/nodeos/config
一般来说,config.ini可以采用系统默认生成的配置文件,但是为了能在私链上更好的体验eos的操作特性,我建议config.ini做如下的修改
// 将私链设置为全节点,会同步所有数据
filter-on = *
// 为了存全节点数据,将数据库存储加大,默认是1024
chain-state-db-size-mb = 102400
// 将私链设置为区块打包节点
enable-stale-production = true
// 一开始默认的打包区块的账户是系统账户eosio
producer-name = eosio
// 换成eosio的公私钥对,用于确认块的签名,如何获取公私钥对将在钱包章节讲述
signature-provider = <public key>=KEY:<private key>
// 开启如下的插件,方便体验链上的功能
plugin = eosio::producer_plugin
plugin = eosio::wallet_api_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::chain_plugin
plugin = eosio::http_plugin
plugin = eosio::history_api_plugin
plugin = eosio::history_plugin
genesis.json文件,不会默认生成,我推荐采用如下的配置:
{
"initial_timestamp": "2018-06-08T08:08:08.888",
"initial_key": "EOS7EarnUhcyYqmdnPon8rm7mBCTnBoot6o7fE2WzjvEX2TdggbL3", "initial_configuration": {
"max_block_net_usage": 1048576,
"target_block_net_usage_pct": 1000,
"max_transaction_net_usage": 524288,
"base_per_transaction_net_usage": 12,
"net_usage_leeway": 500,
"context_free_discount_net_usage_num": 20,
"context_free_discount_net_usage_den": 100,
"max_block_cpu_usage": 200000,
"target_block_cpu_usage_pct": 1000,
"max_transaction_cpu_usage": 150000,
"min_transaction_cpu_usage": 100,
"max_transaction_lifetime": 3600,
"deferred_trx_expiration_window": 600,
"max_transaction_delay": 3888000,
"max_inline_action_size": 4096,
"max_inline_action_depth": 4,
"max_authority_depth": 6
}
}
修改完配置文件之后,再次执行第5步启动节点。
- 启动时,可以使用--config-dir指定配置文件目录,目录下必须有config.ini和genesis.json文件
- 可以使用--data-dir指定区块数据存储的目录
nodeos --config-dir <config dir> --data-dir <data dir>
- 区块数据存储目录,默认
mac os:~/Library/Application Support/eosio/nodeos/data
linux:~/.local/share/eosio/nodeos/data
完成以上几步,私链启动。eos为我们提供了一个命令行客户端cleos与节点通信。我们可以调用cleos查看私链产块情况,执行
cleos get info
钱包
搭建好私链后,我们可以开始进行eos的相关操作,首先我们应该创建一个钱包。钱包指的是存放账户公私钥的地方,在创建账户前,需要先创建一个钱包用来管理账户的公私钥。同样,我们通过cleos完成钱包相关操作
1)创建钱包,然后保存返回的钱包密码
cleos wallet create -n <wallet name>

2)查看所有的钱包,执行
cleos wallet list
其中,后面带*的钱包,是处于打开状态的,我们可以使用钱包的私钥发交易

3)钱包长时间不用,就会被锁定,交易不能发送,此时需要解锁钱包
cleos wallet unlock -n <wallet name> --password <wallet password>
4)创建的新钱包,默认都会将系统账户eosio的公私钥对导入,我们可以执行命令查看,需要输入钱包密码
cleos wallet private_keys

目前,钱包常用的就这些命令,其他的命令,可以执行 cleos wallet 获取帮助详情

账户
eos的操作,包括转账、智能合约部署等,都是账户之间的行为。因此,首先要创建一个账户,然后再进行转账等行为。系统默认会创建系统账户eosio,由于我们有eosio的公私钥对,可以直接对eosio账户进行操作。
1)创建账户前,需要先生成公私钥对,执行命令,执行两次
cleos create key
结果如下:

我们得到了两个公私钥对,这两个公私钥对用于分别对应账户的两个基本权限owner、active,这两个权限是创建账户时必须要赋予的基本权限。之后,账户以某个权限发送交易时,都需要使用对应权限的私钥签名
owner 是账户的管理员权限,可以用来控制和恢复账户的其他权限
active 是账户的普通权限,用来转账、质押资源、投票等操作的权限
一个公私钥对可以应用于多个权限。推荐的是owner和active权限的公私钥对不同,为了账户安全
2)将私钥导入钱包保管
cleos wallet import -n <wallet name> --private-key <private key>

3. 创建账户,我们通过系统账户eosio创建一个新账户user,将上面生成的两个公私钥对分别作为user的owner、active权限对应的公私钥对
cleos create account eosio user <owner's public key> <active's public key>
eos账户的命名规则是:最大长度12个字符,且只能包含.12345abcdefghijklmnopqrstuvwxyz等字符
结束语
本篇教会了大家怎么搭建私链,介绍了钱包、账户的基本命令。心急的读者可能会问,我要怎么在eos私链上发交易?别走开,下一篇我会跟大家讲,如何激活私链、智能合约的部署、转账等基本交易怎么发送。