Shield6 in the interactive console wallet
Use this walkthrough after completing Shield6 setup. It describes the v1.21.83 interactive menu. The wallet keeps signing keys and proof construction local and connects to your running node through IPC.
Menus · Receive · Fund · Send · Check a payment
Start the wallet
In a second terminal, with the node already synced and running:
export TKM_SHIELD6_RECIPIENT_PARAMETERS="$HOME/.tkmchain/shield6-parameters"
gtkm wallet interactive --datadir "$HOME/.tkmchain" --language en
Use the actual node data directory and, if needed, the --keystore option described in the setup guide. gtkm wallet also opens the interactive wallet. This interface is different from the JavaScript gtkm attach console.
Menu reference
- 1 — Portfolio: inspect the wallet/account information.
- 2 — Send: select the sender, paste a receiving code and enter the amount.
- 7 — Stamp address: register the account's original stamp if it is not already registered.
- 15 — Show Shield6 payment code: display the registered receiving code.
- 16 — Migrate legacy notes to Shield6: an explicit two-step public-boundary migration.
- 17 — Deposit TKM to Shield6: convert public TKM into an owned private note.
- 18 — Withdraw Shield6 to stamped address: send value to a stamped public address.
- 19 — Register Shield6 recipient keys: authorize the immutable key commitment and pay public registration gas.
The prompt text may still mention Shield3 in the generic Send screen. The complete tkmshield6r. prefix selects the Shield6 payment flow. Use the menu label as well as its number when comparing a newer release.
Prepare a receiving account
- Select 7 — Stamp address, choose the intended account and follow the stamp flow if it has not already been stamped. Review the requested identity information and public gas. Type
STAMPonly after reviewing the registration. The wallet saves the stamp in the encrypted keyfile. - Select 19 — Register Shield6 recipient keys. Choose the same account, review the permanent binding and type
REGISTERto authorize it. Enter the PQ account password at its prompt. - Save the transaction hash. The console waits for inclusion; inspect the canonical receipt and allow 12 confirmations before relying on a fresh registration.
- Select 15 — Show Shield6 payment code, choose the account and enter its password. Copy the entire
tkmshield6r.code and give it to the payer.
A valid receiving code is long and chain-bound. Copy all of it as one line. Never shorten it or substitute a public account address. The code does not contain a spend secret, but it can link payments when shared with a counterparty.
Deposit public TKM into private notes
Choose 17 — Deposit TKM to Shield6. Select the funding account, enter the public deposit amount, then review the sender, amount and gas reserve. Type DEPOSIT to authorize the transaction and enter the PQ account password when prompted.
The public sender and deposit amount are visible on-chain. Keep public TKM for gas. The wallet reports the deposit transaction hash and waits for inclusion; verify canonical confirmations before spending the new note. Registration alone does not create private funds.
Send a private Shield6 payment
Obtain the recipient's registered mainnet code, then choose 2 — Send. The sequence below shows the prompts; replace the angle-bracket text with real input rather than copying it literally:
Select an option: 2
From account number: 1
Recipient: <paste the full tkmshield6r. receiving code>
Amount in TKM: 1
Type SEND to build and submit the Shield6 private payment: SEND
PQ account password: <entered at the password prompt>
The exact generic recipient prompt may mention Shield3, usernames and public addresses. Paste the full Shield6 code directly and press Enter; its prefix is what selects Shield6. In this release, do not use the generic file:/... input route for a Shield6 payment: that route enters the older Shield3 send workflow.
After you authorize SEND, the wallet verifies your registered stamp, derives your Shield6 keys, scans owned notes, selects up to 16 inputs, builds recipient and payment proofs, signs locally and submits to the node. Proof building can take several minutes. Keep this wallet process open and save the resulting transaction hash.
A typical successful result includes:
Building Shield6 private payment: <input count> input note(s), <output count> output(s).
Shield6 private payment broadcast.
Transaction hash: <0x transaction hash>
The console Send flow reports broadcast; it does not itself establish 12 canonical confirmations. Check the payment before sending another one. The web pending-request recovery flow is a separate feature; do not assume its browser request journal exists for a console operation.
Check a payment
Use the saved hash in the explorer, or inspect the local node's receipt. Replace the example placeholder with the actual 32-byte transaction hash:
curl --fail --silent --show-error http://localhost:8545 \
-H 'Content-Type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"eth_getTransactionReceipt","params":["<0x transaction hash>"]}'
A null receipt means no receipt is available yet. A receipt with status: 0x1 indicates successful execution in its block. Verify that its blockHash still matches the canonical block returned by eth_getBlockByNumber, and allow 12 blocks after that block. A receipt on an orphaned block is not confirmation.
If submission or receipt lookup times out, first check the saved hash on the same network. A timeout does not establish that the payment failed. Do not blindly repeat a console send with a new transaction. If no hash was reported, retain the error and inspect the account's transaction history and pending transactions before deciding to retry.
Insufficient private notes and the input limit
Public TKM does not satisfy a private send's note requirement. Deposit with menu 17 when you intend to fund private notes. If the private balance is spread over more notes than one transaction can use, choose a smaller payment or an explicit funding/consolidation workflow supported by your wallet.
A new deposit uses one of the 16 input slots. To fund a specific larger payment with one new note, calculate the gap against the largest 15 existing notes, not all 16. The web wallet's rejected-payment guidance does this calculation for you. The interactive Shield6 send does not automatically split a payment or perform the legacy Shield3 consolidation flow.
Public withdrawal
Menu 18 — Withdraw Shield6 to stamped address is an explicit privacy exit. Select the account and destination, review the public amount and type the withdrawal confirmation requested by the wallet. The destination must be a stamped public account; the destination and amount will be visible.
Legacy-note migration
Menu 16 performs two separately authorized steps: a legacy self-withdrawal, then a Shield6 deposit. It waits for 12 canonical confirmations of the withdrawal before offering the deposit, and checks again before broadcasting it. Both public boundary amounts are visible. If you cancel the second step, the withdrawn value remains in that account's public balance. Do not treat migration as a private Shield6-to-Shield6 payment.
Keep the correct backups
Keep the original encrypted account keyfile, password recovery material and stamp data secure. Keep the authenticated parameter directory available for later wallet sessions; parameters are public and can be downloaded again, while account secrets cannot. Recipient registration is immutable, so recovering the original account matters more than creating a new wallet with a similar label.
Setup and parameter installation · Web wallet instructions · Release source