钱包管理¶
用于创建、导入、导出和选择本地钱包的命令,以及标准 CLI 的别名系统。
需要注意的几处模式差异:
- REPL 维持一个已登录的会话:用
Login/LoginAll鉴权一次,钱包便保持解锁,直到Logout、Lock或退出。 - 标准 CLI 每次调用都是无状态的:不存在交互式登录。需要签名交易的命令从
MASTER_PASSWORD(或--password-stdin)读取密码,并作用于活动钱包(set-active-wallet)或由--wallet指定的钱包。 - 若干 REPL 钱包操作(私钥/助记词/Ledger 导入,助记词/keystore 导出,修改密码)没有标准 CLI 等价命令,因为它们需要交互式输入密文。
创建钱包 —— register-wallet / RegisterWallet¶
创建一个全新钱包,生成新的助记词,并把加密 keystore 存入 Wallet/。
export MASTER_PASSWORD='your-wallet-password'
java -jar build/libs/wallet-cli.jar --network nile register-wallet --name my-wallet --words 12
--name(必填)—— 钱包名称。--words(可选)—— 助记词单词数,12或24(默认12)。- keystore 用
MASTER_PASSWORD加密。新创建的钱包会自动设为活动钱包。
RegisterWallet
交互式提示输入密码(输入两次)和助记词单词数(12 或 24)。
生成子账户 —— generate-sub-account / GenerateSubAccount¶
从当前钱包的助记词在给定索引处派生一个额外账户。
java -jar build/libs/wallet-cli.jar --network nile generate-sub-account --index 1 --name sub-1
--index(必填)—— 派生索引。--name(必填)—— 子账户名称。需要鉴权。
GenerateSubAccount
交互式提示输入派生索引和名称。
导入钱包(仅 REPL)¶
这些命令以交互方式接受密文,仅存在于 REPL 中。
ImportWallet # 从原始私钥导入(提示输入)
ImportWalletByMnemonic # 从 12/24 词的 BIP39 助记词导入(提示输入)
ImportWalletByBase64 # 从 Base64 编码的私钥导入(提示输入)
ImportWalletByKeystore tronlink <keystore-file> # 从 TronLink keystore 文件导入
ImportWalletByLedger # 从 Ledger 硬件钱包导入账户
ImportWalletByKeystore接受固定的tronlink通道关键字,后跟导出的 keystore JSON 文件路径。 keystore 密码在提示时交互输入。ImportWalletByLedger需要连接 Ledger 设备,并引导你完成账户选择。
生成独立地址 —— GenerateAddress(仅 REPL)¶
生成一个随机的 TRON 密钥对,打印地址和私钥,不存储 keystore。
GenerateAddress [isECKey]
isECKey(可选)—— 默认生成 EC(secp256k1)密钥。
登录并选择钱包¶
标准 CLI 不进行交互式登录。它作用于活动钱包,或用全局选项 --wallet <name|path>
在每条命令上单独选择钱包。
# 列出钱包及其活动状态
java -jar build/libs/wallet-cli.jar list-wallet
# 按地址或名称设置活动钱包
java -jar build/libs/wallet-cli.jar set-active-wallet --address TXyz...
java -jar build/libs/wallet-cli.jar set-active-wallet --name my-wallet
# 显示当前活动钱包
java -jar build/libs/wallet-cli.jar get-active-wallet
set-active-wallet接受--address或--name(提供其一)。- 签名命令的鉴权使用
MASTER_PASSWORD(或--password-stdin)。
Login # 选择一个钱包并登录
LoginAll # 登录所有已存储的钱包
SwitchWallet # 在已登录的钱包之间切换活动钱包
Logout # 结束会话
Lock # 锁定钱包(使用前必须 Unlock)
Unlock [durationSeconds] # 解锁 N 秒(默认 300)
备份钱包(仅 REPL)¶
BackupWallet # 打印钱包私钥(通过密码校验后)
BackupWallet2Base64 # 以 Base64 编码打印私钥
ExportWalletMnemonic # 打印钱包的 BIP39 助记词(通过密码校验后)
ExportWalletKeystore tronlink <directory> # 把 keystore 文件导出到目录
ViewBackupRecords # 列出本地备份历史
以上命令都需要钱包密码且为交互式,因此仅限 REPL。
从助记词派生私钥 —— GetPrivateKeyByMnemonic(仅 REPL)¶
提示输入 BIP39 助记词,并打印在默认路径 m/44'/195'/0'/0/0 派生出的私钥。它不会导入或存储钱包。
GetPrivateKeyByMnemonic
修改钱包密码 —— ChangePassword(仅 REPL)¶
ChangePassword
提示输入当前密码和新密码。
重命名钱包 —— modify-wallet-name / ModifyWalletName¶
java -jar build/libs/wallet-cli.jar modify-wallet-name --name new-name
--name(必填)—— 新的钱包名称。需要鉴权。
ModifyWalletName new_wallet_name
清除 keystore —— clear-wallet-keystore / ClearWalletKeystore¶
从本地存储中删除钱包的加密 keystore 文件。此操作具有破坏性。
java -jar build/libs/wallet-cli.jar clear-wallet-keystore --force
--force在语法上是可选的,但在标准 CLI 模式下执行这一破坏性操作时必须提供 —— 不带它命令会 以用法错误失败。需要鉴权。
ClearWalletKeystore
重置钱包 —— reset-wallet / ResetWallet¶
把本地钱包状态清回初始状态。此操作具有破坏性。
java -jar build/libs/wallet-cli.jar reset-wallet --confirm delete-all-wallets
--confirm必须传入确切的值delete-all-wallets才会执行重置。不带--confirm运行reset-wallet是一次试运行(列出将被删除的文件);传入其他任何值都是用法错误。
ResetWallet
地址簿 —— AddressBook(仅 REPL)¶
打开交互式的本地地址簿,可在其中为常用地址存储和管理友好名称。它会提示输入,而非接受参数。
AddressBook
查看交易历史 —— ViewTransactionHistory(仅 REPL)¶
列出当前钱包在本地记录的交易历史。
ViewTransactionHistory
别名(仅标准 CLI)¶
标准 CLI 支持别名 —— 为账户和代币起的友好名称 —— 这样你可以写 --to my-friend 而不是原始的
Base58 地址。别名按网络隔离,来自两层:一组内置别名(只读)和你的用户别名。
别名解析作用于地址字段,而非数字 ID:
- 账户别名(
--type ACCOUNT)作用于诸如--to、--from、--owner、--receiver、--address等地址字段。 - 代币别名(
--type TOKEN)作用于合约地址字段 —— 合约--contract选项,以及get-contract/get-contract-info的--address。
它们不作用于 TRC-10 资产 ID(--asset)或 --token-id,这些按数字 ID 原样读取。当别名被
解析时,解析结果会在 JSON 模式下以 meta.resolved 上报。
# 添加账户别名
java -jar build/libs/wallet-cli.jar --network nile alias-add \
--name treasury --type ACCOUNT --address TXyz... --note "team treasury"
# 添加代币别名(带精度)
java -jar build/libs/wallet-cli.jar --network nile alias-add \
--name usdt --type TOKEN --address TR7NHq... --decimals 6
# 列出别名(可按类型过滤)
java -jar build/libs/wallet-cli.jar --network nile alias-list --type ACCOUNT
# 把别名或地址解析为其规范形式
java -jar build/libs/wallet-cli.jar --network nile alias-resolve --name treasury
# 删除用户别名
java -jar build/libs/wallet-cli.jar --network nile alias-remove --name treasury
选项说明:
alias-add:--name、--type(ACCOUNT或TOKEN)、--address为必填。--decimals仅对TOKEN有效;--note仅对ACCOUNT有效。- 内置别名不可覆盖或删除。要替换某个用户别名,先
alias-remove,再重新alias-add。 alias-list和alias-resolve接受可选的--type过滤。