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库来操作。
好,本简介到此结束,感谢看到这里的朋友!如果对你有帮助,请传播;如果有问题,请留言!