# 管理钱包

通过钱包功能,您可以创建、管理本地账户和 worker key、设置默认账户、查看所有账户、重置 keystore 文件密码、导入私钥等。

wallet 命令如下表所示:

命令 说明
topio wallet createAccount 创建账户。
topio wallet importAccount 导入账户。
topio wallet createKey 为账户创建 worker key。
topio wallet listAccounts 查看钱包里所有账户。
topio wallet setDefaultAccount 设置默认账户,用来发送交易。
topio wallet resetKeystorePwd 重置 keystore 文件密码。
topio wallet exportAccount 导出私钥。

# 创建账户

在本地创建账户,可同时创建多个账户。

每个账户会有唯一一对公私钥对,称之为 owner key,它拥有账户的全部权限,包括且不限于发交易、挖矿等。

注意

建议您在创建账户后立刻备份您的 keystore 文件。

请记住keystore 文件的密码,如果丢失了密码,您将无法使用该账户。且系统没有“忘记密码”选项,只可以通过密码提示找回密码。

请安全保管您的 keystore 文件,不要与其他人分享您的 keystore 文件和文件密码,以免造成资产损失!

keystore 文件存储目录:

  • root 用户:/root/topnetwork/keystore

  • 非 root 用户:/home/您登陆服务器的用户名/topnetwork/keystore

请求方式

topio wallet createAccount

请求参数

无。

选项

选项名称 默认值 类型 说明
-f, --pwd_file_path - - 以密码文件的方式创建账户。
-h, --help - - 查看命令帮助信息。

返回参数

参数名称 类型 说明
Account Address String 为了简便实用,采用“账户地址”替代公钥从而代表账户。
您可以公开您的账户地址,其他人需要账户地址和您进行互动,例如给您的账号地址转账,或者您通过账号地址向别人发送一笔交易。
此处创建的为普通用户账户地址,以"T80000"为标识开头。
Owner public-key String 账户公钥,和私钥总是成对出现,私钥存储在 owner keystore 文件中,关于 keystore 文件,请参见 账户协议 中相关内容。
公钥用于加密及验签。

请求样例

topio wallet createAccount

运行命令后,根据提示输入需要设置的密码和密码提示。

Please set a password for the account keystore file.
Please input password again
Please set a password hint! If don't, there will be no hint when you forget your password.

返回样例

  • 成功返回

    Successfully create an account locally!
    
    Account Address: T800002276a7d58218ac4978733e5cca927a7d86cb7c87
    Owner public-Key: BAW5r2JJd/j7Wr6iISO7ki5+YE2OKflaG7dVbV+u1EkPpcAqe3Ou10EPNlKjlI4EsAJR9LBc+Fv9DC1Znm8rKcU=
    
    You can share your public key and account address with anyone. Others need them to interact with you!
    You must nerver share the private key or account keystore file with anyone! They control access to your funds!
    You must backup your account keystore file! Without the file, you will not be able to access the funds in your account!
    You must remember your password!Without the password,it's impossible to use the keystore file!
    
    
  • 失败提示

    输入空密码时提示:

    Error: empty password not allowed!
    

# 导入账户

通过导入私钥的方式导入账户。

请求方式

topio wallet importAccount

请求参数

无。

选项

选项名称 默认值 类型 说明
-f, --pwd_file_path - - 导入账户时为该账户设置密码,设置的密码从文件读取。
-h, --help - - 查看命令帮助信息。

返回参数

参数名称 类型 说明
Account Address String 导入的私钥所对应的账户地址。
Public-Key String 公钥,用于加密及验签。

请求样例

topio wallet importAccount

运行命令后,根据提示输入需要设置的密码和导入的私钥。

Please set a password for the account keystore file.
Please input password again
Please set a password hint! If don't, there will be no hint when you forget your password.

Please input private key.

返回样例

Import successfully.

Account Address: T80000968927100f3cb7b23e8d477298311648978d8613
Public-Key: BK2CfxnSP0cL9/dbi6b3krWUlQP1jP4EIHu5Y5c2vMBNLMYMOE8K3mqOubDPQXBXc/D4ydtR0LDyWUEyxHO/ZZU=

# 创建 worker key

给一个已存在的账户绑定多把公私钥对,这种公私钥对称之为 worker key。它可以被授予挖矿的权限,但没有发交易的权限。我们推荐您在线使用 worker key 挖矿,离线保管 owner key,让您的资产更加安全。

请求方式

topio wallet createKey

请求参数

参数名称 是否必选 默认值 类型 说明
account_addr 默认账户 String worker key 所属账户。如不指定,将为默认账户创建 worker key。

选项

选项名称 默认值 类型 说明
-f, --pwd_file_path - - 以密码文件的方式创建worker key。
-h, --help - - 查看命令帮助信息。

返回参数

参数名称 类型 说明
Public Key String 公钥,和私钥总是成对出现。
用于加密及验签。
worker public_key String worker key 的公钥。

请求样例

topio wallet createKey

运行命令后,根据提示输入需要设置的密码和密码提示。

Please set a password for the keystore file.
Please input password again
Please set a password hint! If don't, there will be no hint when you forget your password.

返回样例

  • 成功返回

    Successfully create a worker keystore file!
    
    Account Address: T800002276a7d58218ac4978733e5cca927a7d86cb7c87
    worker public-key: BAW5r2JJd/j7Wr6iISO7ki5+YE2OKflaG7dVbV+u1EkPpcAqe3Ou10EPNlKjlI4EsAJR9LBc+Fv9DC1Znm8rKcU=
    
    You can share your public key and account address with anyone. Others need them to interact with you!
    You must nerver share the private key or account keystore file with anyone! They control access to your funds!
    You must backup your account keystore file! Without the file, you will not be able to access the funds in your account!
    You must remember your password if you set it! Without the password, it's impossible to use the keystore file!
    
    
  • 失败返回

    输入空密码时提示:

    Error: empty password not allowed!
    

    未指定账户且未设置默认账户返回:

    Please set a default account by command `topio wallet setDefaultAccount`. 
    Create worker key failed, you should specify an account address, or set a default account.
    

# 列出钱包中所有账户

列出钱包中所有账户。

请求方式

topio wallet listAccounts

请求参数

无。

选项

选项名称 默认值 类型 说明
-h,--help - - 查看命令帮助信息。

返回参数

参数名称 类型 说明
account String 账户地址。如账户地址后标记"default account",表示此账户是当前正在使用的账户。
owner public-key String 账户 base58 格式公钥。如 owner public-key 后标记"registered as minerkey",表示此 owner key 被注册成为 miner key。
balance Uint64 账户余额,单位 TOP。
请注意 balance 显示为"-"和"0"的区别:
  • "-"表示此账户还未在链上创建
  • "0"表示此账户已在链上创建,但是当前余额为 0。
nonce Uint64 该账户最新共识成功的交易序号,唯一。
worker public-key String 此账户的 worker key 的 base58 格式公钥列表。如 worker public-key 后标记"registered as minerkey",表示此 worker key 被注册成为 miner key。

请求样例

topio wallet listAccounts

返回样例

  • 成功返回

    No default account
    account #0: T8000066ab344963eaa071f9636faac26b0d1a39900325
    owner public-key: BFPQ1X11sm+OU9ua3DeEnzwYb7npoa+uhJXcdi4i205y7PaXzfDwAUGGdaV6qj3k2V7lUQiFDuofl5CaFhjaXlQ=
    balance: 10000000.000000 TOP
    nonce: 0
    worker public-key list:
    public key #0: BG2KavysdOhOzfHPIHR2kBpq2SMw/M+n4S0Q90PS7bVZ9tV2ipPsbKeQmgyBx+BErOH0kgnGFvq++3rj3v6YxfA=
    ------------------------------------------------------
    
    account #1: T8000085a8e8acd53c72dca85dcb002a6710796975b4ba
    owner public-key: BJL6rIirL1m7ox+hKHymSISULh8HPYI8772Wq7h0oUga8exzuRrTR599inROGNkGK5O8buwFhe+E2WKyYD3l8tE=
    balance: 30000000.000000 TOP
    nonce: 0
    
  • 失败返回

    There is no account in wallet.
    

# 设置默认账户

设置默认账户可以在连续操作时减少输入keysotre密码的次数

以下场景需要设置默认账户:

  • 钱包中有多个账户,需要设置一个默认账户,用于发送交易。

  • 切换发送交易的账户。

  • 在 TOPIO 前台 30 分钟内无任何操作(查询或发送交易),您设置的默认账户将失效,需要重新设置一个默认账户。

请求方式

topio wallet setDefaultAccount

请求参数

参数名称 是否必选 默认值 类型 说明
account_addr - String 账户地址。

选项

选项名称 默认值 类型 说明
-f, --pwd_file_path - - 以密码文件的方式设置默认账户。
-h, --help - - 查看命令帮助信息。

返回参数

无。

请求样例

topio wallet setDefaultAccount T8000085a8e8acd53c72dca85dcb002a6710796975b4ba

运行命令后,如果keystore设置过密码,根据提示输入keystore的密码。

Please input password.

返回样例

  • 成功返回

    Set default account successfully.
    
  • 失败返回

    账户 owner key 不存在:

    The account's owner keystore file does not exist in wallet.
    

    密码错误:

    Wrong password, set default account failed.
    

# 重置 keystore 文件密码

支持重置 owner keystore 和 worker keystore 文件密码。

请求方式

topio wallet resetKeystorePwd

请求参数

参数名称 是否必选 默认值 类型 说明
public_key - String owner key 或者 worker key 的公钥。

选项

选项名称 默认值 类型 说明
-h, --help - - 查看命令帮助信息。

返回参数

无。

请求样例

  • 旧格式:

    topio wallet resetKeystorePwd BERrbuiBZ66gYHHhx2/4OzqHwqC+DrJRh7vdPz5e8fHD+OwGhgmRjnoNbyM2rnI9eXTjuSOvAGG5J1tOAyMFnVQ=
    
  • 新格式:

    topio wallet resetKeystorePwd ad827f19d23f470bf7f75b8ba6f792b5949503f58cfe04207bb9639736bcc04d2cc60c384f0ade6a8eb9b0cf41705773f0f8c9db51d0b0f2594132c473bf6595
    

运行命令后,根据提示输入旧密码和需要设置的新密码和密码提示。

Please input old password. [If the keystore has no password, press Enter directly.(empty password will be deprecated soon)]
Please set a new password. Pressing Ctrl+C can exit the command.
Please input password again
Please set a password hint! If don't, there will be no hint when you forget your password.

返回样例

  • 成功返回

    Successfully reset password!
    
  • 失败返回

    输入错误旧密码返回:

    Old password wrong,
    Reset password failed.
    

# 导出私钥

导出并展示钱包私钥和 keystore 文件内容。导出后,您可复制并保存在本地。

请求方式

topio wallet exportAccount

请求参数

参数名称 是否必选 默认值 类型 说明
account_addr - String 账户地址。

选项

选项名称 默认值 类型 说明
-h,--help - - 查看命令帮助信息。

返回参数

参数名称 类型 说明
Account Address String 账户地址。当导出 keystore 文件时,此处会打印对应的账户地址。
Private-Key String key 的私钥。

请求样例

topio wallet exportAccount T80000968927100f3cb7b23e8d477298311648978d8613

运行命令后,如果keystore设置过密码,根据提示输入keystore的密码。

Please input password.

返回样例

关于 Keystore 文件格式,可参见 账户协议

Export successfully.

Keystore file: /root/topnetwork/keystore/T80000968927100f3cb7b23e8d477298311648978d8613
Account Address: T80000968927100f3cb7b23e8d477298311648978d8613
Private-Key: b0032f8057051b611a7c0ea373da4d7a6764351030ed497e6134fd9e11775b19

{
   "account_address" : "T80000968927100f3cb7b23e8d477298311648978d8613",
   "address" : "968927100f3cb7b23e8d477298311648978d8613",
   "crypto" : {
      "cipher" : "aes-128-ctr",
      "cipherparams" : {
         "iv" : "e40a554c807b913c6e882e933ee6c103"
      },
      "ciphertext" : "762381ac2219511c647d27424761e81fecc14170eeff6e20412d6c9311149060",
      "kdf" : "scrypt",
      "kdfparams" : {
         "dklen" : 32,
         "n" : 262144,
         "p" : 1,
         "r" : 8,
         "salt" : "69c473d9a1ae16ad7cbab057101ccb9632d4109bf7f44e7ff2eba59e269f9932"
      },
      "mac" : "7d3c31b6aa3f43885682259e6e632b44799700cc7030bdbc1dddb2f587066dac"
   },
   "hint" : "",
   "id" : "b2951865-c391-9d98-ff85-83e149f88990",
   "key_type" : "owner",
   "public_key" : "BK2CfxnSP0cL9/dbi6b3krWUlQP1jP4EIHu5Y5c2vMBNLMYMOE8K3mqOubDPQXBXc/D4ydtR0LDyWUEyxHO/ZZU=",
   "version" : 3
}