当前位置: 首页 > 工具软件 > BitShares > 使用案例 >

BitShares2.0 —— 第一章 创世篇(四):初访节点 运行命令行钱包

哈骞仕
2023-12-01

使用命令行钱包1

命令行钱包路径/bitshares-core/programs/cli_wallet
在上一篇 <<BitShares2.0 —— 第一章 创世篇(三):创世纪 运行见证节>> 中 , 运行了见证节点 , 我们要用钱包连接到这个节点上 .

  • 运行钱包 :

    命令
    cli_wallet --wallet-file=my-wallet.json --server-rpc-endpoint=ws://127.0.0.1:38090 --rpc-endpoint=0.0.0.0:38099 --rpc-http-endpoint=0.0.0.0:38092 --chain-id=20e5aa92b1e3b7f971796a3f3fba59ea0a34b1eeb6fb5e585b2e4c9e441015f4
    下面对指令参数进行解释:

    • --wallet-file:指定钱包json文件,该文件用于保存本钱包中所有加密后的私钥;
    • --server-rpc-endpoint:rpc服务器终端地址,指定钱包要连接的区块链全节点所需要的协议、地址和端口;
    • --rpc-endpoint:指定命令行钱包要监听的websocket RPC的ip地址和端口号;
    • --rpc-http-endpoint:指定命令行钱包要监听的HTTP RPC的ip地址和端口号;
    • --chain-id:指定要连接的区块链ID。不指定的话,钱包连接到bitshares的正式链上。
      注 : chain-id参数需要与见证节点运行时候的Chain ID一至 , 这样才会连接到你自己的节点上

    运行结果如下:

    3158674ms th_a  main.cpp:143  main  ] key_to_wif( committee_private_key ): 5KCBDTcyDqzsqehcb52tW5nU6pXife6V2rX9Yf7c3saYSzbDZ5W
    3158674ms th_a  main.cpp:147  main  ] nathan_pub_key: BTS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
    3158674ms th_a  main.cpp:148  main  ] key_to_wif( nathan_private_key ): 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3Starting a new wallet with chain ID 4ed977c9239731ebfb51f3291cfa5ea2bb0094845acba21357c8a3e140fc7b88 (from CLI)
    3158675ms th_a  main.cpp:195  main  ] wdata.ws_server: ws://127.0.0.1:38090
    3158677ms th_a  main.cpp:200  main  ] wdata.ws_user:  wdata.ws_password:Please use the set_password method to initialize a new wallet before continuing
    3158700ms th_a  main.cpp:238  main  ] Listening for incoming RPC requests on 0.0.0.0:38099
    3158701ms th_a  main.cpp:263  main  ] Listening for incoming HTTP RPC requests on 0.0.0.0:38092
    new >>>
    
  • 初始化钱包/创建钱包

    使用如下命令 给 钱包 创建密码 set_password 你的密码 此时 , 命令行变为 : locked >>>
    该密码用于加密钱包中所有的私钥,
    解锁 新创建的 钱包:unlock 你的密码 , 命令行变为 : unlocked >>>

  • 导入账号和资金

    要将帐户导入钱包,必须知道账户名称和私钥才行。使用import_key命令将代码中默认的账户nathan导入钱包(其私钥为5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3):

    import_key nathan 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
    

    输出结果:

    unlocked >>> import_key nathan 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
    import_key nathan 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
    2917900ms th_a  wallet.cpp:799  save_wallet_file  ] saving wallet to file allet-file=my-wallet.json
    2917902ms th_a  wallet.cpp:476  copy_wallet_file  ] backing up wallet allet-file=my-wallet.json to after-import-key-9407629b.wallet
    true
    

    注:帐户名称是前面在genesies.json文件中设置的, 私钥也是前面在config.ini文件中设置的。

    现在已经将私钥导入到钱包中,但初始账户仍然没有资金(后面升级账户需要资金)。 资金在genesies.json文件中的initial_balances字段已经设置好了。 使用import_balance命令可以将这些资金免费(相对于转账需要付手续费来说的)导入钱包:

    import_balance nathan ["5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"] true
    
    • 创建新帐户

      • 将nathan升级到LTM

        只能使用现有的账户去创建新账户,且该账户(称为注册商: registrar)必须支付注册费用。 此外,要求注册商账户必须是终身会员(LTM: lifetime member)。使用upgrade_account命令将nathan升级到LTM

        upgrade_account nathan true
        

        输出结果:

        unlocked >>> upgrade_account nathan true
        upgrade_account nathan true
        {
          "ref_block_num": 1738,
          "ref_block_prefix": 2410829715,
          "expiration": "2018-10-22T11:54:55",
          "operations": [[
              8,{
                "fee": {
                  "amount": 1000000000,
                  "asset_id": "1.3.0"
                },
                "account_to_upgrade": "1.2.17",
                "upgrade_to_lifetime_member": true,
                "extensions": []
              }
            ]
          ],
          "extensions": [],
          "signatures": [
            "1f0c3bd37a6de3947c59a56f155606626ac4eed3f912fd2593615f1dfb2e4d399605b41886a2f931eb0462810ba3d6feb212ce09d112c1d11d95898d035df9285c"
          ]
        }
        

        注:由于缓存问题 ,需要重启cli_wallet钱包,否则升级nathan没有更新。 按下ctrl+c停止CLI钱包,运行与以下命令重新运行钱包解锁

        • 运行钱包:
          cli_wallet --wallet-file=my-wallet.json --server-rpc-endpoint=ws://127.0.0.1:38090 --rpc-endpoint=0.0.0.0:38099 --rpc-http-endpoint=0.0.0.0:38092 --chain-id=20e5aa92b1e3b7f971796a3f3fba59ea0a34b1eeb6fb5e585b2e4c9e441015f4
          输出结果:
        ➜  wallet ./cli_wallet -wallet-file=my-wallet.json --server-rpc-endpoint=ws://127.0.0.1:38090 --rpc-endpoint=0.0.0.0:38099 --rpc-http-endpoint=0.0.0.0:38092 --chain-id=4ed977c9239731ebfb51f3291cfa5ea2bb0094845acba21357c8a3e140fc7b88
        Logging RPC to file: logs/rpc/rpc.log
        3311567ms th_a       main.cpp:143                  main                 ] key_to_wif( committee_private_key ): 5KCBDTcyDqzsqehcb52tW5nU6pXife6V2rX9Yf7c3saYSzbDZ5W
        3311567ms th_a       main.cpp:147                  main                 ] nathan_pub_key: BTS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
        3311567ms th_a       main.cpp:148                  main                 ] key_to_wif( nathan_private_key ): 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
        3311568ms th_a       main.cpp:195                  main                 ] wdata.ws_server: ws://127.0.0.1:38090
        3311571ms th_a       main.cpp:200                  main                 ] wdata.ws_user:  wdata.ws_password:
        3311583ms th_a       wallet.cpp:768                load_wallet_file     ] Account 1.2.17 : "nathan" updated on chain
        3311590ms th_a       main.cpp:238                  main                 ] Listening for incoming RPC requests on 0.0.0.0:38099
        3311590ms th_a       main.cpp:263                  main                 ] Listening for incoming HTTP RPC requests on 0.0.0.0:38092
        
        • 解锁:
          unlock 你的密码
          确认nathan现在处于LTM状态:
          get_account nathan
          输出结果:
          unlocked >>> get_account nathan
          get_account nathan
          {
            "id": "1.2.17",
            "membership_expiration_date": "1969-12-31T23:59:59",
            "registrar": "1.2.17",
            "referrer": "1.2.17",
            "lifetime_referrer": "1.2.17",
            "network_fee_percentage": 2000,
            "lifetime_referrer_fee_percentage": 8000,
            "referrer_rewards_percentage": 0,
            "name": "nathan",
            "owner": {
              "weight_threshold": 1,
              "account_auths": [],
              "key_auths": [[
                  "BTS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
                  1
                ]
              ],
              "address_auths": []
            },
            "active": {
              "weight_threshold": 1,
              "account_auths": [],
              "key_auths": [[
                  "BTS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
                  1
                ]
              ],
              "address_auths": []
            },
            "options": {
              "memo_key": "BTS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
              "voting_account": "1.2.5",
              "num_witness": 0,
              "num_committee": 0,
              "votes": [],
              "extensions": []
            },
            "statistics": "2.6.17",
            "whitelisting_accounts": [],
            "blacklisting_accounts": [],
            "whitelisted_accounts": [],
            "blacklisted_accounts": [],
            "owner_special_authority": [
              0,{}
            ],
            "active_special_authority": [
              0,{}
            ],
            "top_n_control_flags": 0
          }
          
          在打印的账户属性中,membership_expiration_date的属性值应该是1969-12-31T23:59:59 。 如果仍然是1970-01-01T00:00:00,那么账户就没有成功升级。
      • 新建帐户

        现在用原账户作为注册商注册一个新帐户了。 首先需要新帐户的公钥。可以通过suggest_brain_key命令来获得:
        命令输入:

        suggest_brain_key
        

        输出结果如下:

        {
          "brain_priv_key": "DIALLEL GADGET WHATA DUSKY YITE WAUR STEPT ABRADE TRIDUUM SWANNY WARTIME TUGUI BATLON ONCIN ANNUARY PAPBOAT",
          "wif_priv_key": "5Kd8CQj7okrxgMSdccZDTUS4bR8TLDiRCoJUpp87u4tFZi4gh4b",
          "pub_key": "BTS74AWCY222BVvCTAStoYsjsqtmnQNct8bXSsztgh8NUKuFNgLs4"
        }
        

        其中,
        brain_priv_key私钥助记符
        wif_priv_key是钱包导入格式的私钥
        pub_key公钥地址
        一定要记下以上重要的信息找个黑客攻击不到的地方保存起来,非常关键。

        现在可以使用register_account命令 注册一个新帐户。
        可以只使用前面推荐的公钥来注册一个名为alpha的新帐户:
        命令:
        register_account alpha BTS74AWCY222BVvCTAStoYsjsqtmnQNct8bXSsztgh8NUKuFNgLs4 BTS74AWCY222BVvCTAStoYsjsqtmnQNct8bXSsztgh8NUKuFNgLs4 nathan nathan 0 true

        输出结果:

        unlocked >>> register_account alpha BTS74AWCY222BVvCTAStoYsjsqtmnQNct8bXSsztgh8NUKuFNgLs4 BTS74AWCY222BVvCTAStoYsjsqtmnQNct8bXSsztgh8NUKuFNgLs4 nathan nathan 0 true
        register_account alpha BTS74AWCY222BVvCTAStoYsjsqtmnQNct8bXSsztgh8NUKuFNgLs4 BTS74AWCY222BVvCTAStoYsjsqtmnQNct8bXSsztgh8NUKuFNgLs4 nathan nathan 0 true
        {
          "ref_block_num": 2486,
          "ref_block_prefix": 2455595820,
          "expiration": "2018-10-22T12:58:45",
          "operations": [[
              5,{
                "fee": {
                  "amount": 200014062,
                  "asset_id": "1.3.0"
                },
                "registrar": "1.2.17",
                "referrer": "1.2.17",
                "referrer_percent": 0,
                "name": "alpha",
                "owner": {
                  "weight_threshold": 1,
                  "account_auths": [],
                  "key_auths": [[
                      "BTS74AWCY222BVvCTAStoYsjsqtmnQNct8bXSsztgh8NUKuFNgLs4",
                      1
                    ]
                  ],
                  "address_auths": []
                },
                "active": {
                  "weight_threshold": 1,
                  "account_auths": [],
                  "key_auths": [[
                      "BTS74AWCY222BVvCTAStoYsjsqtmnQNct8bXSsztgh8NUKuFNgLs4",
                      1
                    ]
                  ],
                  "address_auths": []
                },
                "options": {
                  "memo_key": "BTS74AWCY222BVvCTAStoYsjsqtmnQNct8bXSsztgh8NUKuFNgLs4",
                  "voting_account": "1.2.5",
                  "num_witness": 0,
                  "num_committee": 0,
                  "votes": [],
                  "extensions": []
                },
                "extensions": {}
              }
            ]
          ],
          "extensions": [],
          "signatures": [
            "204968215d10105fe47ba030340f9bd43a58de67154aad2d8e92ef8ddc3eee842f64d8660a275b9fa803887e75ea06333ff8978346efe6898f35a01ed7014c4ad0"
          ]
        }
        

        至此, 已经创建好了名为alpha的帐户.


  1. 本文参考这篇文章 修正了其中命令的错误并添加了输出结果 ↩︎

 类似资料: