BitShares2.0 —— 第一章 創世篇(四):初訪節點 運行命令行錢包

使用命令行錢包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. 本文參考這篇文章 修正了其中命令的錯誤並添加了輸出結果 ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章