The model
HandCash tokens are Bitcoin Native Tokens (BNT), the open mode of the BRC-255 draft. The holder’s signature alone moves an output, and the recipient checks every hop back to the deploy, so no indexer or issuer is trusted.
The wallet builds, signs, and checks every BNT transaction itself. Apps ask for it with the four methods below and never write, spend, or relinquish a BNT output directly.
BSV-21 / BRC-162 tokens are not supported. Requests that name the
bsv21 basket, carry bsv21 tags, or contain a BRC-162 lock return 400 ASSET_PROTOCOL_RETIRED, and p bsv21 … baskets return 400 UNSUPPORTED_P_BASKET.Read holdings
listBntAssets returns every open asset this wallet holds, with its balance and supply policy:
403 TOKEN_VIEW_DENIED.
p bntnft … and the same scopes as p 1sat … — see Collectables.
Issue
sym; an item needs name, has a supply of exactly 1, and may carry content and a collection (the asset id of a token whose authority you hold). The supply policy is fixed at deploy:
Only open mode is issued today;
mode other than 'open' is refused.
Mint
deploy (txid_vout) when this wallet has never seen the asset, or tip (any mint, txid.vout); the wallet follows its spends to the newest mint.
Send
bnt message box, and the recipient’s wallet checks it before filing. There is no internalizeAction step for the receiving app.
Prompts and errors
Issue, mint, and send each show the user an approval prompt. A refusal before anything is staged returns400 BNT_<REASON>, for example BNT_BAD_ASSET_ARGS, BNT_FIXED_SUPPLY, BNT_OVER_CAP, or BNT_UNSUPPORTED_MODE.