2.2 cli_wallet

钱包命令行工具,提供跟链之间的交互操作。操作说明如下:

2.2.1 登录命令行钱包

  1. 获取命令行钱包可执行文件: cli_wallet,并拷贝到预定目录

    cli_wallet的git仓库地址,该仓库包含多个版本的cli_wallet。以v0.7.16版本为例,cli_wallet的路径

  2. 进入命令行钱包所在目录,执行如下命令登录命令行钱包
    命令格式
    --chain-id [链 ID] -s [节点 RPC 地址] -r [命令行钱包的 RPC 服务所监听的地址]

./cli_wallet  --chain-id 90a45949c27a3de6f71d2cfb68e4a04a2fce9052f8192d405c581ba9b36d991b -s ws://127.0.0.1:8020  -r  127.0.0.1:8099

结果:

Logging RPC to file: logs/rpc/rpc.log
2125047ms th_a       main.cpp:131                  main                 ] key_to_wif( committee_private_key ): 5KCBDTcyDqzsqeh******c3saYSzbDZ5W 
2125062ms th_a       main.cpp:135                  main                 ] nico_pub_key: COCOS7yE9skpB******tXTz88HtbpQsZf 
2125063ms th_a       main.cpp:136                  main                 ] key_to_wif( nico_private_key ): 5KAUeN3Yv51******XTJK7euqc3NnaaLz1GJm 
Starting a new wallet with chain ID 90a45949c27a3de6f71d2cfb68e4a04a2fce9052f8192d405c581ba9b36d991b (from CLI)
2125073ms th_a       main.cpp:183                  main                 ] wdata.ws_server: ws://127.0.0.1:8020 
2125108ms th_a       main.cpp:188                  main                 ] wdata.ws_user:  wdata.ws_password:  

Please use the set_password method to initialize a new wallet before continuing
2139294ms th_a       main.cpp:227                  main                 ] Listening for incoming RPC requests on 127.0.0.1:8099
new >>> 

2.2.2 命令行钱包设置锁与解锁

  1. 第一次登录命令行钱包,需要设置钱包密码
    命令格式
    set_password [设置的密码]
set_password xxxx

结果:

  1. 设置钱包密码后,需要解锁钱包
    命令格式
    unlock [设置的密码]
unlock xxxx

结果:

2.2.3 命令行钱包导入账户

  1. 登陆并解锁钱包,执行如下命令导入用户
    命令格式
    import_key [用户名] [用户私钥]
import_key official-account 5KaVpJa9G4oqA5WHcSGitauFRuzdHcPVEAaESaA

结果:

2.2.4 命令行钱包导入资产

  1. 登录并解锁钱包,导入资产
    命令格式
    import_balance [用户名] [资产地址对应的私钥] [是否广播(true/false)]

背景
新链,创世资产尚未导出

import_balance official-account ["5KAUeN3Yv51FzpLGGf4S1ByKpMqVFNzXTJK7euqc3L"] true

结果:

2.2.5 转账

命令格式
import_balance [转账人] [接收人] [转账数量] [代币资产类型] [备注] [是否广播(true/false)]
条件
登录并解锁钱包,账户内有足够余额
示例
transfer official-account test-account 100 COCOS "info" true

transfer from to amount asset_symblo "memo_info" true

结果:

2.2.6 注册账户

命令格式
register_account [用户名] [owner公钥] [active公钥] [记录人账户名] [推荐人账户名] [费用比例] [是否广播(true/false)]
条件
登录并解锁钱包,注册人终身会员,账户内有足够余额
示例
register_account test-account XXX6esv8d6u2eqzKyiQvCYJa6XK74c7BrmzUqL4Z7zfhtvB4db XXX6esv8d6u2eqzKyiQvCYJa6XK74c7BrmzUqL4Z7zfhtvB4db official-account official-account 0 true

register_account name owner_key active_key registrar_account referrer_account referrer_percent true

结果:

2.2.7 账户升级会员

条件
账户内有足够余额
命令格式
upgrade_account [用户名] [是否广播(true/false)]
示例
upgrade_account test-account true
注意
命令行钱包只支持升级为永久会员,不支持升级为年费会员

upgrade_account test-account true

结果:

2.2.8 获取链 ID、当前活跃见证人及委员会成员等信息

命令格式
info

info

结果:

2.2.9 返回客户端版本、编译时间、boost 版本、openssl 版 本等信息

命令格式
about

about

结果:

2.2.10 获取指定块信息

命令格式
get_block [区块高度]
示例
get_block 10

get_block block_num

结果:

2.2.11 获取链上注册账户总数

命令格式
get_account_count

get_account_count

结果:

2.2.12 列出钱包中导入的账户

命令格式
list_my_accounts

list_my_accounts

结果:

2.2.13 列出账户余额

命令格式
list_account_balances [账户名]
示例
list_account_balances official-account

list_account_balances official-account 

结果:

2.2.14 列出链上的代币

命令格式
list_assets [最小限制] [最大返回个数]
示例
list_assets “” 1
说明
返回结果以代币符号进行排序,lowerbound 参数为最小限制,limit 为最大返回个数,即返回最大 limit 个代币符号不小于 lowerbound 的代币

list_assets lowerbound limit

结果:

2.2.15 返回账户历史操作

命令格式
get_account_history [账户名] [最大返回个数]
示例
get_account_history official-account 2

get_account_history account limit

结果:

2.2.16 返回链操作费用等不易变化的属性

命令格式
get_global_properties

get_global_properties

结果:

结果过长,只取部分

结果过长,只取部分

2.2.17 返回链头块 ID、时间、下一维护周期时间等易变化的属性

命令格式
get_dynamic_global_properties

get_dynamic_global_properties

结果:

2.2.18 获取账户信息

命令格式
get_account [账户名或ID]
示例
get_account official-account

get_account_id account_name_or_id

结果:

2.2.19 返回代币资产信息

命令格式
get_asset [资产名称或ID]
示例
get_asset COCOS

get_asset asset_name_or_id

结果:

2.2.20 获取账户的账户 ID

命令格式
get_account_id [账户名]
示例
get_account_id official-account

get_account_id account_name

结果:

2.2.21 获取代币资产的信息

命令格式
get_asset [账户名]
示例
get_asset COCOS

get_asset asset_name

结果:

2.2.22 获取对象

命令格式
get_object [对象ID]
示例
get_object 1.2.6

get_object object_id

结果:

2.2.23 获取私钥

命令格式
get_private_key [公钥]
示例
get_private_key XXX6esv8d6u2eqzKyiQvCYJa6XK74c7BrmzUqL4Z3
说明
该私钥必须已经保存于钱包中才可获取

get_private_key public_key

结果:

2.2.24 锁定钱包

命令格式
lock

lock

结果:

2.2.25 返回一组安全的脑密钥、公钥、私钥

命令格式
suggest_brain_key

suggest_brain_key

结果:

2.2.26 注册委员会成员

命令格式
create_committee_member [账户名] [url地址] [是否广播(true/false)]
示例
create_committee_member official-account "http://my-web" true
说明
注册后只是成为了候选委员会成员,需获得一定的投票后才会成为正式的委员会成员

create_committee_member account "url" true

结果:

2.2.27 注册见证人

命令格式
create_witness [账户名] [url地址] [是否广播(true/false)]
示例
create_witness official-account "http://my-web" true
说明
注册后只是成为了候选见证人,需获得一定的投票后才会成为正式的见证人

create_witness account "url" true

结果:

2.2.28 列出见证人

命令格式
list_witnesses [lowerbound] [limit]
示例
list_witnesses "" 100
说明
以见证人账户名进行排序返回见证人,lowerbound 为最小限制,limit 为最大返回个数

list_witnesses lowerbound limit

结果:

2.2.29 列出委员会成员

命令格式
list_committee_members [lowerbound] [limit]
示例
list_committee_members "" 100
说明
以委员会成员账户名进行排序返回委员会成员,lowerbound 为最小限制,limit 为最大返回个数

list_committee_members lowerbound limit

结果:

2.2.30 返回见证人信息

命令格式
get_witness [见证人名称或ID]
示例
get_witness Witness-0

get_witness witness_name_or_id

结果:

2.2.31 返回委员会成员信息

命令格式
get_committee_member [委员会成员名称或ID]
示例
get_committee_member Witness-0

get_committee_member committee_member_name_or_id

结果:

2.2.32 创建合约

命令格式
create_contract [合约拥有者] [合约名称] [合约权限(一对公私钥中的公钥publicKey)] [合约内容] [是否广播(true/false)]
示例
create_contract 1.2.17 contract.helloworld "COCOS1DE213......" "function hello() chainhelper:log('Hello World!') end" true

create_contract owner name contract_authority data broadcast

结果:

2.2.33 更新合约

命令格式
revise_contract [合约更新人用户名] [合约名称或ID] [合约内容] [是否广播(true/false)]
示例
revise_contract 1.2.17 contract.helloworld "function hello() chainhelper:log('Hello World!') chainhelper:log(date('%Y-%m-%dT%H:%M:%S', chainhelper:time())) end" true

revise_contract owner name contract_authority data broadcast

结果:

2.2.34 调用合约

命令格式
call_contract_function [用户名或ID] [合约名称或合约ID] [函数名] [参数列表] [是否广播(true/false)]
示例
call_contract_function 1.2.17 contract.helloworld [] true

call_contract_function account_id_or_name contract_id_or_name function_name value_list broadcast

结果:

2.2.35 列出账户奖励金额信息

命令格式
get_vesting_balances [用户名]
示例
get_vesting_balances official-account

get_vesting_balances account_name

结果:

2.2.36 领取奖励金额(仅限见证人成员)

命令格式
withdraw_vesting [用户名] [数量] [资产符号] [是否广播(true/false)]
示例
withdraw_vesting cocos-witness-0 10 XXX true

withdraw_vesting(string witness_name, string amount, string asset_symbol, bool broadcast)

withdraw_vesting witness_name amount asset_symbol true

2.2.37 给见证人投票

命令格式
vote_for_witness [用户名] [见证人用户名] [同意与否] [是否广播(true/false)]
示例
vote_for_witness official-account cocos-witness-0 true true
前提步骤

  1. 进入命令行钱包所在目录,执行命令./cli_wallet-sws://127.0.0.1:8070-r127.0.0.1:8099登录命令行钱包
  2. 执行命令 unlock xxxx 解锁钱包
  3. 执行命令import_key official-account 5KaVpJa9G4oqA5WHcSGitauFRuzdHcPVEAaESaA7jG8s 导入用户
  4. 执行命令 import_balance official-
    account ["5KAUeN3Yv51FzpLGGf4S1ByKpMqVFNzXTJK7euqc3"] true 为用户导入资产
  5. 执行命令 vote_for_witness official-account cocos-witness-0 true true ,official-account 账户将 会为见证人账户 cocos-witness-0 投票
  6. 按照步骤4为其他见证人投票
vote_for_witness official-account cocos-witness-0 true true

结果:

2.2.38 给委员会成员投票

命令格式
vote_for_committee_member [用户名] [见证人用户名] [同意与否] [是否广播(true/false)]
示例
vote_for_committee_member official-account cocos-witness-0 true true
前提步骤

  1. 进入命令行钱包所在目录,执行命令./cli_wallet-sws://127.0.0.1:8070-r127.0.0.1:8099登录命令行钱包
  2. 执行命令 unlock xxxx 解锁钱包
  3. 执行命令import_keyofficial-account 5KaVpJa9G4oqA5WHcSGitauFRuzdHcPVEAaESaA7jG8s 导入用户
  4. 执行命令 import_balance official-account ["5KAUeN3Yv51FzpLGGf4S1ByKpMqVFNzXTJK7euq"] true 为用户导入资产
  5. 执行命令 vote_for_committee_member official-account Witness-0 true true ,official- account 账户将会为见证人账户 Witness-0 投票
  6. 按照步骤4为其他见委员会成员投票
vote_for_committee_member official-account cocos-witness-0 true true

结果:

2.2.39 委员会成员提议修改操作费率

命令格式

  1. propose_fee_change [用户名] [过期时间] [修改内容] [是否广播(true/false)]
  2. approve_proposal [用户名] [提议ID] [提议人用户名] [是否广播(true/false)]
    示例
  3. propose_fee_change Witness-0 "2018-07-24T06:55:40" {"transfer" : {"fee": 244000, "price_per_kbyte": 100000}} true
  4. approve_proposal Witness-0 1.10.0 {"active_approvals_to_add" : ["Witness-0"]} true
    前提步骤
  5. 进入命令行钱包所在目录,执行命令./cli_wallet-sws://127.0.0.1:8070-r127.0.0.1:8099登录命令行钱包
  6. 执行命令 unlock xxxx 解锁钱包
  7. 执行命令 import_key Witness-0 5KaVpJa9G4oqA5WHcSGitauFRuzdHcPVEAaE 导入委员会成员用户
  8. 执行命令 propose_fee_change Witness-0 "2018-07-24T06:55:40" {"transfer" : {"fee": 244000, "price_per_kbyte": 100000}} true 提议修改转账操作费率
  9. 执行命令 transfer official-account committee-account 100 XXX "" true 向用户 committee- account 转账(该用户是提议的执行者)
  10. 执行命令 approve_proposal Witness-0 1.10.0 {"active_approvals_to_add" : ["Witness-0"]} true 批准提议(提议的执行者是账户 committee-account,每个委员会成员根据自己的得票数占有该账户一定的活跃权限权重,因此,当批准该提议的委员会成员加起来的权重超过 committee-account 的阈值时,该提议才可以被执行)
  11. 当提议到达过期时间时,系统会自动判断提议是否可以执行,如果是,则会执行提议, 然后再下一个维护时间结束后更新操作费率。
propose_fee_change Witness-0 "2018-07-24T06:55:40" {"transfer" : {"fee": 244000, "price_per_kbyte": 100000}} true
approve_proposal Witness-0 1.10.0 {"active_approvals_to_add" : ["Witness-0"]} true

结果:

结果过长,只取部分

结果过长,只取部分

2.2.40 委员会成员提议修改链全局配置

◼ 命令格式
propose_parameter_change [用户名] [过期时间] [修改内容] [是否广播(true/false)]
◼ 示例
propose_parameter_change Witness-0 "2018-07-24T06:55:40" {"committee_proposal_review_period": 300} true
◼ 前提步骤

  1. 进入命令行钱包所在目录,执行命令./cli_wallet-sws://127.0.0.1:8070-r127.0.0.1:8099登录命令行钱包
  2. 执行命令 unlock xxxx 解锁钱包
  3. 执行命令 import_key Witness-0 5KaVpJa9G4oqA5WHcSGitauFRuzdHcPVEAaE 导入委员会成员用户
  4. 执行命令propose_parameter_change Witness-0 "2018-07-24T06:55:40" {"committee_proposal_review_period": 300} true 提议修改链全局配置中的委员会提议复审期时常
  5. 执行命令 transfer official-account committee-account 100 XXX "" true 向用户 committee- account 转账(该用户是提议的执行者)
  6. 执行命令 approve_proposal Witness-0 1.10.1 {"active_approvals_to_add" : ["Witness-0"]} true 批准提议(提议的执行者是账户 committee-account,每个委员会成员根据自己的得票 数占有该账户一定的活跃权限权重,因此,当批准该提议的委员会成员加起来的权重超过 committee-account 的阈值时,该提议才可以被执行)
  7. 当提议到达过期时间时,系统会自动判断提议是否可以执行,如果是,则会执行提议, 然后再下一个维护时间结束后更新操作费率
    ◼ 可配置参数
    "block_interval" 块间隔
    "maintenance_interval" 维护间隔
    "maintenance_skip_slots" 维护跳过周期
    "committee_proposal_review_period" 理事会提案审查期
    "maximum_transaction_size" 最大事务大小
    "maximum_block_size" 最大的块大小
    "maximum_time_until_expiration" 最长到期时间
    "maximum_proposal_lifetime" 理事会提案最大失效期
    "maximum_asset_whitelist_authorities" 最多资产白名单
    "maximum_asset_feed_publishers" 资产喂价的最大人数
    "maximum_witness_count" 最大BP节点数
    "maximum_committee_count" 最大理事会成员数
    "maximum_authority_membership" 最大权威会员数
    "reserve_percent_of_fee" 保留费用
    "network_percent_of_fee" 网络费用
    "lifetime_referrer_percent_of_fee" 终身费用参考百分比
    "cashback_vesting_period_seconds" 现金返还期(秒)
    "cashback_vesting_threshold" 奖励金保留阈值
    "count_non_member_votes" 非会员投票
    "allow_non_member_whitelists" 允许非成员白名单
    "witness_pay_per_block" 每个区块证人工资
    "worker_budget_per_day" 矿工每日预计
    "max_predicate_opcode" (每个块)最大操作数
    "fee_liquidation_threshold" 费用清算阈值
    "accounts_per_fee_scale" 收费标准
    "account_fee_scale_bitshifts" 账户费用转移比例
    "max_authority_depth" 最大鉴权深度,一个账号可以赋予另一个账号权限,配置这个权限最大可以往下生效几层
propose_parameter_change Witness-0 "2018-07-24T06:55:40" {"committee_proposal_review_period": 300} true

结果:


2.2 cli_wallet


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.