wallet-cli stake delegate
August 10, 2026 · View on GitHub
Delegate resource to another address.
Synopsis
wallet-cli stake delegate --receiver <address> --amount-sun <n>
[--resource energy|bandwidth] [--lock [--lock-period <blocks>]]
[--dry-run | (--sign-only | --build-only) [--expiration <ms>] | --wait [--wait-timeout <ms>]] [--permission-id <n>] [options]
Description
Lends the resource backed by your staked TRX to another address — the receiver gets the energy/bandwidth; the TRX itself never leaves your stake. Amount is expressed as the staked-TRX backing, in SUN. The receiver must be a different address than the owner.
--lock makes the delegation non-reclaimable for a period (--lock-period in blocks, ~3 s per block) — a guarantee for the receiver. Without it you can stake undelegate any time.
Check how much you can still delegate with stake delegated (Max delegatable).
By default the command returns at submission; --wait blocks until confirmed. 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.
Options
| Option | Description |
|---|---|
--amount-sun <string> | Required. Staked-TRX amount backing the delegated resource, in SUN |
--receiver <string> | Required. Address receiving the resource (must differ from owner) |
--resource <energy|bandwidth> | Resource type to delegate (default bandwidth) |
--lock | Lock the delegation; prevents early undelegation |
--lock-period <number> | Lock duration in blocks (~3 s/block); requires --lock |
--dry-run | 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 only, 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 |
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.
Default — returns the submitted receipt:
echo "$PW" | wallet-cli stake delegate --receiver TYzp9RbQmtAjCtyGeHb9W7GRwjDKtjUvvx --amount-sun 1000000000 --resource energy --network tron:nile --password-stdin
⏳ Delegated 1,000 TRX of energy
To TYzp9RbQmtAjCtyGeHb9W7GRwjDKtjUvvx
TxID b7c...
Status pending — not yet on-chain
! Track it: wallet-cli tx info --network tron:nile --txid b7c...
echo "$PW" | wallet-cli stake delegate --receiver TYzp9RbQmtAjCtyGeHb9W7GRwjDKtjUvvx --amount-sun 1000000000 --resource energy --network tron:nile --password-stdin -o json
{"schema":"wallet-cli.result.v1","success":true,"command":"stake.delegate","data":{"kind":"stake-delegate","stage":"submitted","txId":"b7c...","amountSun":"1000000000","resource":"energy","receiver":"TYzp9RbQmtAjCtyGeHb9W7GRwjDKtjUvvx"},"meta":{"durationMs":15,"warnings":[]},"chain":{"family":"tron","network":"tron:nile","chainId":"nile"}}
Output
data varies by stage:
| Stage | Fields |
|---|---|
| default (submit) | kind: "stake-delegate", stage: "submitted", txId, amountSun (string), resource, receiver |
--wait (confirmed) | above, plus confirmed, blockNumber, feeSun, failed |
Exit status
0 submitted (or built/signed in early-exit modes) · 1 execution failure (watch_only_no_signer, auth_failed, rpc_error, timeout) · 2 usage error (invalid_value — receiver = owner, --lock-period without --lock).