Skip to content

wallet-cli account set

Set the account's on-chain name or account id.

Synopsis

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]

Description

Sets the account's on-chain name (a display alias, up to 32 bytes) or its account id (a globally unique identifier, 8–32 bytes). One at a time — --name and --id are mutually exclusive; to set both, run it twice.

⚠️ Each can be set only once and can never be changed — the value is permanent, and there is no confirmation prompt. This is not a mainnet-only rule: the CLI refuses a second write with name_already_set / id_already_set on every network, Nile and Shasta included, so a testnet run is not a rehearsal you can repeat. This is different from rename, which changes the local label and can be redone anytime.

Requires the account. The master password via --password-stdin is needed only when the selected mode signs — --dry-run and --build-only do not unlock the wallet and run without it. Watch-only accounts fail with watch_only_no_signer in a signing mode. The account id's uniqueness is enforced on-chain — a taken id fails with id_taken.

Ledger support differs by field: the TRON app can sign --name, but cannot sign --id (SetAccountIdContract). A Ledger account may still build or dry-run either field; a signing mode with --id fails with ledger_unsupported before device interaction.

Options

Option Description
--name <name> Required (one of). On-chain account name, up to 32 bytes; can be set once, on any network
--id <account-id> Required (one of). Account id, 8–32 bytes, globally unique; can be set once, on any network
--dry-run Build and estimate only; no signature/broadcast, no password. Excludes --sign-only / --build-only
--sign-only Build and sign, output the signed hex (feed tx broadcast). Excludes --dry-run / --build-only; pairs with --expiration
--build-only Build and estimate, output the unsigned hex (feed tx multisig --create). Excludes --dry-run / --sign-only; pairs with --expiration
--expiration <ms> Transaction expiration in ms, up to 86400000 (24h); only with --sign-only or --build-only; omitted = node default (~60s)
--permission-id <n> Permission group to sign with (0=owner, 1=witness, 2-9=active); default 0
--wait / --wait-timeout <ms> Poll after broadcast until confirmed/failed (cap default: config waitTimeoutMs, built-in 60000)
--password-stdin Master password from stdin

Plus the global options.

Examples

In the examples, $PW is your master password, fed on stdin via --password-stdin.

Set the on-chain name and wait for confirmation:

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"}}

Set the account id instead (--id); the id's uniqueness is enforced on-chain:

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

Output

data varies by stage:

Stage Fields
default (submit) kind: "account-set", stage: "submitted", txId, field (name/id), value, address
--wait (confirmed) the above, but stage: "confirmed", plus confirmed, blockNumber, feeSun, failed
--dry-run kind, mode: "dry-run", fee estimate, field, value, address; no txId

Exit status

0 submitted (or built/signed/dry-run in early-exit modes) · 1 execution failure (name_already_set, id_already_set, id_taken, watch_only_no_signer, ledger_unsupported — Ledger signing with --id, auth_failed, rpc_error, timeout) · 2 usage error (invalid_value, invalid_option — malformed or missing name/id).

After a confirmed transaction the command reads the account back to verify the change took effect. That follow-up never turns an already-paid transaction into a command failure: a mismatch or an unreadable read is reported as a meta.warnings entry (account_set_postcheck_mismatch / account_set_postcheck_unavailable) with success still true and exit 0.

See also

account activate · rename · account info