跳转至

wallet-cli account set

设置账户的链上名称或账户 id。

用法

wallet-cli account set (--name <name> | --id <account-id>)
                       [--dry-run | (--sign-only | --build-only) [--expiration <ms>] | --wait [--wait-timeout <ms>]]
                       [--permission-id <n>] [options]

说明

设置账户的链上名称(显示别名,最多 32 字节)或其账户 id(全局唯一标识,8–32 字节)。一次只能设置一个——--name--id 互斥;两者都要设置就运行两次。

⚠️ 两者各自只能设置一次,且永远无法更改——该值是永久性的,写入前也不会再次提示确认。这项规则适用于所有网络,包括 Nile 和 Shasta;第二次写入会返回 name_already_set / id_already_set。因此,即使在测试网上也不能把该操作当作可重复的演练。这与 rename 不同,后者只修改本地标签,可以随时再次更改。

命令需要所修改的账户。仅在需要签名的模式下,才必须通过 --password-stdin 提供 master password。 --dry-run--build-only 不会解锁钱包,因此无需密码。仅观察账户无法签名,会返回 watch_only_no_signer。账户 ID 的唯一性由链上保证;ID 已被占用时返回 id_taken

Ledger 的支持情况因字段而异:TRON 应用可以对 --name 签名,但无法对 --idSetAccountIdContract)签名。Ledger 账户仍可对这两个字段做构建或试运行;但带 --id 的签名模式会在与设备交互之前就以 ledger_unsupported 失败。

选项

选项 说明
--name <name> 必填(二选一)。链上账户名称,最多 32 字节;在任何网络上都只能设置一次
--id <account-id> 必填(二选一)。账户 id,8–32 字节,全局唯一;在任何网络上都只能设置一次
--dry-run 只构建和估算;不签名、不广播、不需要密码。与 --sign-only / --build-only 互斥
--sign-only 构建并签名,输出已签名的 hex(交给 tx broadcast)。与 --dry-run / --build-only 互斥;配合 --expiration 使用
--build-only 构建并估算,输出未签名的 hex(交给 tx multisig --create)。与 --dry-run / --sign-only 互斥;配合 --expiration 使用
--expiration <ms> 交易过期时间(毫秒),最大 86400000(24 小时);仅可与 --sign-only--build-only 同用;省略时使用节点默认值(约 60 秒)
--permission-id <n> 用于签名的权限组(0=owner,1=witness,2-9=active);默认 0
--wait / --wait-timeout <ms> 广播后轮询直到已确认/失败(上限默认取配置 waitTimeoutMs,内置 60000)
--password-stdin 从 stdin 读取 master password

此外还有全局选项

示例

示例中的 $PW 是你的 master password,通过 --password-stdin 从 stdin 传入。

设置链上名称并等待确认:

echo "$PW" | wallet-cli account set --name "Acme Treasury" --network tron:3448148188 --wait --password-stdin
✅ On-chain name set
  Address  TQkXm4vN8pR2sD6fWbYc3LhJa9Ee5Zt7Uw
  Name     Acme Treasury
  TxID     f2b...
  Block    #84,341,590
  Fee      0.3 TRX
  Status   success
echo "$PW" | wallet-cli account set --name "Acme Treasury" --network tron:3448148188 --wait --password-stdin -o json
{"schema":"wallet-cli.result.v1","success":true,"command":"account.set","data":{"kind":"account-set","stage":"confirmed","txId":"f2b...","confirmed":true,"blockNumber":84341590,"feeSun":300000,"failed":false,"field":"name","value":"Acme Treasury","address":"TQkXm4vN8pR2sD6fWbYc3LhJa9Ee5Zt7Uw"},"meta":{"durationMs":6420,"warnings":[]},"chain":{"family":"tron","network":"tron:3448148188","chainId":"3448148188"}}

改为设置账户 id(--id);id 的唯一性由链上强制:

echo "$PW" | wallet-cli account set --id acme-treasury-01 --network tron:3448148188 --wait --password-stdin
✅ On-chain id set
  Address  TQkXm4vN8pR2sD6fWbYc3LhJa9Ee5Zt7Uw
  ID       acme-treasury-01
  TxID     3d9...
  Block    #84,341,730
  Fee      0.3 TRX
  Status   success

输出

data 随阶段而变:

阶段 字段
默认(提交) kind: "account-set"stage: "submitted"txIdfieldname/id)、valueaddress
--wait(已确认) 同上,但 stage: "confirmed",另加 confirmedblockNumberfeeSunfailed
--dry-run kindmode: "dry-run"、费用估算、fieldvalueaddress;没有 txId

退出码

0 已提交(早退模式下为已构建/已签名/试运行) · 1 执行失败(name_already_setid_already_setid_takenwatch_only_no_signerledger_unsupported——用 Ledger 对 --id 签名、auth_failedrpc_errortimeout) · 2 用法错误(invalid_valueinvalid_option——name/id 格式错误或缺失)。

在交易已确认之后,本命令会回读账户以核实改动是否生效。这一后续检查绝不会把一笔已经付过费的交易变成命令失败:不一致或读取失败会作为 meta.warnings 条目(account_set_postcheck_mismatch / account_set_postcheck_unavailable)报告,success 仍为 true,退出码为 0

另请参见

account activate · rename · account info