steem奇幻旅:用steem官方docker镜像中的命令行钱包cli_wallet创建Steem安全新号

0. 目标

主要流程

1. 搭建本地的docker环境

ubuntu18.04 安装 docker
添加专用系统账户 steemd

2. 获取Steem的官方docker镜像
3. 用docker镜像方式运行 cli_wallet
4. 在 cli_wallet 中导入旧账号的密钥
5. 在 cli_wallet 中 生成密钥对
6. 在 cli_wallet 中 用密钥对的公钥生成新账号
7. 用密钥对的私钥,在steemit上登录新账号的在线钱包
8. 在steemit的官方在线钱包中,更换新号的密码
9. 可以正常用新号(记住密码,以备将来被盗号后的恢复)
附录:源码释疑

0. 目标

cli_wallet 是 Steem 的命令行钱包,可以直接和 Steem 节点交互,完成很多重要的钱包相关的操作,包括创建新号.

通过 cli_wallet 创建的新号,更安全,不受任何号码的控制(包括自己的旧号或steemit官方).

但cli_wallet需要Steem节点支持WebSocket RPC(ws/wss),暂时找到一个(也可以自己搭建):wss://steemd.privex.io

主要流程

1. docker  
2. Steemdocker  
3. docker cli_wallet  
4.  cli_wallet (3STEEM)  
5.  cli_wallet    
6.  cli_wallet  ,  
7. ,steemit线  
8. steemit线,,,便  
9. (,).  

1. 搭建本地的docker环境

ubuntu18.04 安装 docker

这里以ubuntu18.04为例,其他系统的docker安装,很容易google/baidu.

安装docker包:$ sudo apt update && sudo apt install git containerd docker.io -y
也可通过 get.docker.com 安装 docker:

$ curl -fsSL get.docker.com -o get-docker.sh 
$ sh get-docker.sh

启动 docker 服务:$ service docker restart
查看 docker 状态(报错):$ systemctl status docker.service$ journalctl -xn

添加专用系统账户 steemd

添加专用系统账户 steemd,并加入到 docker 组:

$ sudo adduser steemd
$ sudo usermod -aG sudo steemd
$ sudo usermod -aG docker steemd
$ sudo su - steemd 

这样,steemd用户就可以直接运行docker,而不需要经常sudo操作了.

2. 获取Steem的官方docker镜像

使用官方 docker 镜像,便于灾备恢复或硬分叉时能快速操作,也可以自己从github上下载源码编译.
获取官方 docker 镜像:$ docker pull steemit/steem
查看获取情况 : $ docker images | grep steemit

steemit/steem       latest              1325632326e0        5 weeks ago         2.24GB

如果无法访问官方 docker.com/docker.io ,可修改docker 镜像源:$ sudo vi /etc/docker/daemon.json

{
"registry-mirrors":  ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}

其他可选:

  1. 中国科技大学:https://docker.mirrors.ustc.edu.cn
  2. Docker 官方中国区:https://registry.docker-cn.com
  3. 网易:http://hub-mirror.c.163.com
  4. 阿里云:https://pee6w651.mirror.aliyuncs.com

3. 用docker镜像方式运行 cli_wallet

以docker镜像方式运行 cli_wallet: $ docker run -it steemit/steem /usr/local/steemd-default/bin/cli_wallet -s wss://steemd.privex.io

Logging RPC to file: logs/rpc/rpc.log
Starting a new wallet
3104566ms main.cpp:169                  main                 ] wdata.ws_server: wss://steemd.privex.io 
Please use the set_password method to initialize a new wallet before continuing
new >>> 

首次使用,需要为本地钱包设置密码:new >>> set_password yourpwd

new >>> set_password yourpwd
set_password yourpwd
null
locked >>> 

此时钱包处于锁定状态,解锁钱包:locked >>> unlock yourpwd

locked >>> unlock yourpwd
unlock yourpwd
null
unlocked >>> 

如果在使用过程中,出现没有反应,可能是 cli_wallet 断开了和steem节点之间的网络连接,需要ctrl+d退出,重新按之前的操作重做.

4. 在 cli_wallet 中导入旧账号的密钥

cli_wallet创建新号,需要向steem节点支付3steem费用,因此必须先有一个旧账号,里面至少有支付创建账号所需的3STEEM.
导入旧号的钱包密钥(active key):unlocked >>> import_key 5J-active-key

import_key 5J-active-key
3555971ms wallet.cpp:427                save_wallet_file     ] saving wallet to file wallet.json
true
unlocked >>> 

查看导入的账号资产:unlocked >>> list_my_accounts

unlocked >>> list_my_accounts 
list_my_accounts 
585041ms websocket_api.cpp:102         on_message           ] message: {"jsonrpc":"2.0","result":[["acu.fund"]],"id":1} 
585171ms websocket_api.cpp:102         on_message           ] message: {"jsonrpc":"2.0","result":[{...} 
olduser              102.164 STEEM        614866.009468 VESTS        0.499 SBD
-------------------------------------------------------------------------
TOTAL                 102.164 STEEM        614866.009468 VESTS        0.499 SBD

5. 在 cli_wallet 中 生成密钥对

生成密钥对:unlocked >>> suggest_brain_key

suggest_brain_key
{
  "brain_priv_key": "WACE other words COGNATE",
  "wif_priv_key": "5JY-wif_priv_key-5iB",
  "pub_key": "STM8QhX-pub_key-Dw1KB"
}
unlocked >>> 

6. 在 cli_wallet 中 用密钥对的公钥生成新账号

用 suggest_brain_key 生产的 pub_key ,创建新号(旧号为olduser,新号为newuser):create_account_with_keys "olduser" "newuser" "" "STM8QhX-pub_key-Dw1KB" "STM8QhX-pub_key-Dw1KB" "STM8QhX-pub_key-Dw1KB" "STM8QhX-pub_key-Dw1KB" true

创建的新号,各种密码都是这个密钥对,返回信息显示,旧账号作为creator支付了 3 STEEM费用:

{
  "ref_block_num": 62156,
  "ref_block_prefix": 3768508021,
  "expiration": "2019-10-12T14:18:15",
  "operations": [[
      "account_create",{
        "fee": "3.000 STEEM",
        "creator": "olduser",
        "new_account_name": "newuser",

7. 用密钥对的私钥,在steemit上登录新账号的在线钱包

浏览器打开 https://steemitwallet.com , 用新用户名和密钥对的私钥(wif_priv_key)登录.

8. 在steemit的官方在线钱包中,更换新号的密码

新号的所有密码都是密钥对的私钥,不利于分级管理,因此登录官方在线钱包后,立即更改密码,让各种密码都不一样,方便分级管理 : https://steemitwallet.com/@newuser/password

9. 可以正常用新号(记住密码,以备将来被盗号后的恢复)

分别备份四个密码,在不同的场合,用不同的秘密:/post/Active/Owner/Memo

附录:源码释疑

为何这样创建账号,可以不受其他任何账号的控制,可以从源码和源码注释中,找到说明.
更多的 cli_wallet 操作,可以参考源码中的说明.

H2
H3
H4
Upload from PC
Video gallery
3 columns
2 columns
1 column
21 Comments