bitshares命令行钱包简介

上文 简要介绍了bitshares的核心代码,本文聊一聊命令行钱包,我在这里简要列出编译和使用步骤。不过,首先要注意的是还是上文强调的,是准备在测试链上测试还是在实际链上跑,二者的代码不同。 本文以测试链为例,这样开发的时候无需顾虑费用问题。想要使用实际链的同学请自行替换相关内容。下文所有内容,都是基于linux 命令行的。我的整个测试是在centos7上完成的,但我感觉ubuntu16.04可能会更好,没有实际验证。首先是编译。

第一步是拷贝代码到本地:

git clone https://github.com/BitSharesEurope/graphene-testnet.git

第二步是准备boost库,需要注意的是仅仅支持 boost1.57到1.60,小于1.57或者大于1.60都不行,如果系统的库不是这个版本范围,需要下载范围内的boost源代码进行编译安装。具体步骤省略。

第三步是编译testnet源代码,分为两个命令:

cmake -DCMAKE_BUILD_TYPE=Debug -DBOOST_ROOT=$PWD/../boost_install_1_59_0
make

请注意替换 “-DBOOST_ROOT=” 后面的实际路径,或者使用系统的,就省略整个 “-DBOOST_ROOT=” 选项。

编译完成,可以使用命令行钱包了。在命令行上键入:

./programs/cli_wallet/cli_wallet --server-rpc-endpoint=wss://node.testnet.bitshares.eu/ws

就可以开始使用了。这是一个新的交互式命令环境。使用的时候可参考这个 文档 来理解。本文一步一步来拆解。

第一次使用命令行钱包的时候,并没有钱包文件,提示符是:

new >>>

使用:

set_password mypassword

命令来设置一个钱包保护密码(请自行替换mypassword,下文不再重复),提示符变成:

locked >>>

表示钱包已经创建好并锁定了。这时需要先解锁:

unlock mypassword

提示符又变成:

unlocked >>>

表示钱包已经解锁。下面一步要导入一个账号来操作。导入账号的办法是先通过 网页钱包 注册一个账号,然后去查看私钥。注意是账户权限里面的私钥。这样得到一个账户名和私钥, 使用下面的命令来导入账号:

import_key "ptest2" 5KahXPRjB221ntufwFtqUCb1n7nrouofxmpyMetSZ6kB8T9oQw2

请注意上面ptest2账号是我注册的,私钥在写本文的时候也正确,如果你运气好,也许能直接导入,否则还是自己老老实实去网页钱包注册一个,再替换上面的账号和私钥吧。成功导入账号后,命令行会把钱包文件存起来,存为当前目录下的 wallet.json文件。

导入账号后可以干什么呢?可以看看账号:

list_my_accounts

例如会显示ptest2账号的id 是 “1.2.987”, 而这个id的意义可以参考 这里 简单的来说,1.2表示账号类型,987表示该类型下面的id,与网页钱包头像下面看到的数字是一样的。可以对照:

libraries/chain/include/graphene/chain/protocol/types.hpp

源代码来加深理解,例如所有的协议类型定义:

enum object_type
{
   null_object_type,
   base_object_type,
   account_object_type,
   asset_object_type,
   force_settlement_object_type,
   committee_member_object_type,
   witness_object_type,
   limit_order_object_type,
   call_order_object_type,
   custom_object_type,
   proposal_object_type,
   operation_history_object_type,
   withdraw_permission_object_type,
   vesting_balance_object_type,
   worker_object_type,
   balance_object_type,
   OBJECT_TYPE_COUNT ///< Sentry value which contains the number of different object types
};

还可以查看余额:

list_account_balances

更多命令,可以获得帮助:

help

键入Ctrl-D可退出命令行钱包,下次再进入的时候,由于wallet.json文件已存在,自动变成锁定状态。账号也不用再导入了。

命令行除了交换式使用,更常用的方法是 JSON-RPC模式,需要键入如下命令:

./programs/cli_wallet/cli_wallet --server-rpc-endpoint=wss://node.testnet.bitshares.eu/ws  -H -d

然后在另一个终端采用HTTP JSON-RPC来调用就可以了。例如下面的命令可以测试:

curl --data '{"jsonrpc": "2.0", "method": "is_locked",  "id": 1}' http://127.0.0.1:8093/rpc
curl --data '{"jsonrpc": "2.0", "method": "unlock", "params": [ "mypassword" ], "id": 2}' http://127.0.0.1:8093/rpc
curl --data '{"jsonrpc": "2.0", "method": "is_locked",  "id": 3}' http://127.0.0.1:8093/rpc

还可以使用你喜欢的编程语言的 JSON-RPC 2.0库来操作。

好,本简介到此结束,感谢看到这里的朋友!如果对你有帮助,请传播;如果有问题,请留言!