wallet-cli asset unfreeze¶
Release matured frozen supply of the TRC10 you issued.
Synopsis¶
wallet-cli asset unfreeze
[--dry-run | (--sign-only | --build-only) [--expiration <ms>] | --wait [--wait-timeout <ms>]]
[--permission-id <n>] [options]
Description¶
Returns the part of the issued supply that was frozen at issuance and whose lock period is over, back to the issuer's balance.
There is no argument of any kind: the command always targets the token issued by the signing account, and the chain accepts neither "which tranche" nor "how much" — every matured tranche is released in one transaction. Tranches that have not matured are untouched; run the command again once they are.
A tranche matures at its issuance --start plus its days, not at the moment the token was actually issued: the chain writes each tranche's expire_time as start_time + days × 86400000 when the token is created. The resulting dates are visible in the Frozen section of asset info.
This is unrelated to stake unfreeze, which releases staked TRX; the only thing they share is the word.
By default the command returns at submission (stage: "submitted"), not confirmation — add --wait to block until confirmed/failed. Requires an account. The master password (via --password-stdin) is needed only by the modes that sign — --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 Ledger TRON app cannot sign TRC10 issuance contract types. Ledger accounts may dry-run or build unsigned hex, but signing modes fail with ledger_unsupported before device interaction.
Options¶
This command has no options of its own.
| Option | Description |
|---|---|
--dry-run |
Build and estimate only, no signature/broadcast; excludes --sign-only / --build-only |
--sign-only |
Sign without broadcasting, output the signed hex; excludes --dry-run / --build-only; pairs with --expiration |
--build-only |
Build and estimate, output the unsigned hex; 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 (fd 0) |
Plus the global options.
Examples¶
In the examples, $PW is your master password (from an environment variable, password manager, etc.), fed on stdin via --password-stdin.
echo "$PW" | wallet-cli asset unfreeze --network tron:3448148188 --wait --password-stdin
✅ Frozen supply released
Asset MyToken (id 1000123)
Issuer TQkXm4vN...5Zt7Uw
Released 100,000,000 MyToken
Still frozen 50,000,000 MyToken
TxID 6a5...
Block #57,883,560
Fee 0 TRX
Status success
echo "$PW" | wallet-cli asset unfreeze --network tron:3448148188 --wait --password-stdin -o json
{"schema":"wallet-cli.result.v1","success":true,"command":"asset.unfreeze","data":{"kind":"asset-unfreeze","stage":"confirmed","txId":"6a5...","confirmed":true,"blockNumber":57883560,"feeSun":0,"netUsed":288,"netFeeSun":0,"failed":false,"assetId":"1000123","name":"MyToken","issuerAddress":"TQkXm4vN...","releasedAmount":"100000000000000","stillFrozenAmount":"50000000000000","precision":6},"meta":{"durationMs":6410,"warnings":[]},"chain":{"family":"tron","network":"tron:3448148188","chainId":"3448148188"}}
Output¶
data varies by stage:
| Stage | Fields |
|---|---|
| default (submit) | kind: "asset-unfreeze", stage: "submitted", txId, assetId, name, issuerAddress, precision, and releasedAmount / stillFrozenAmount — present here too, but as the amounts this command intends to release |
--wait (confirmed) |
above, plus stage: "confirmed", confirmed (boolean), blockNumber, flat settlement fields when returned (feeSun, energyUsed, netUsed, energyFeeSun, netFeeSun), and failed; releasedAmount is then taken from the receipt |
releasedAmount and stillFrozenAmount are raw decimal strings (smallest unit); precision is included for scaling. Both are always present — before confirmation they are this command's own computation from the asset's frozen tranches, and only the confirmed releasedAmount is the receipt's number.
Exit status¶
0 submitted (or built/signed in early-exit modes) · 1 execution failure (not_an_issuer — this account has not issued a TRC10, no_frozen_supply, not_yet_unfreezable — nothing has matured yet, watch_only_no_signer, ledger_unsupported, auth_failed) · 2 usage error.
See also¶
asset info · asset issue · stake unfreeze · Script safety