Skip to main content
Beta — BRC wallet only. Desktop / Mobile over BRC-100.

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:
To list the outputs behind a holding, use a token view basket. Token view is its own grant, separate from item view; a denied prompt returns 403 TOKEN_VIEW_DENIED.
BNT items are read through the item grant with p bntnft … and the same scopes as p 1sat … — see Collectables.

Issue

A token needs 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

For an open-mint token you do not issue, pass 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

The recipient is an identity key. The wallet delivers the transfer and its proof to the recipient’s 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 returns 400 BNT_<REASON>, for example BNT_BAD_ASSET_ARGS, BNT_FIXED_SUPPLY, BNT_OVER_CAP, or BNT_UNSUPPORTED_MODE.

Next steps