Two things I learned shipping a BRC100 claim page this week. Both cost me time; maybe they save someone else some.
Two things I learned shipping a BRC-100 claim page this week. Both cost me time; maybe they save someone else some.
1 · You cannot detect which ordinals basket a wallet uses.
BRC-147 makes it normative — the basket MUST be exactly 1sat. The new HandCash desktop does that. Yours uses p 1sat ordinals, which predates the standard. BSV Desktop doesn't handle collectibles natively at all.
Normally you'd route around a split like that with feature detection. You can't, and this is the part worth knowing:
I probed a live BRC-100 wallet for both basket names. Both returned totalOutputs: 0. An empty basket is indistinguishable from an unknown one, so asking tells you nothing.
And BRC-100 has no vendor identification. The only hook is getVersion(), documented as returning [vendor]-[major].[minor].[patch] — a prefix convention inside a version string. No vendor field, no capabilities list, nothing to negotiate against.
So an app parses a string prefix and hopes. Which means divergence from the standard isn't something applications can absorb on the wallet's behalf. It has to be resolved at the wallet.
2 · Not everything that costs one satoshi belongs in the ordinals basket.
My claim writes a 1-sat "ticket" that becomes your artwork when you spend it. I nearly filed it under 1sat to get BRC-147's spend protection — wallets are told never to fund payments from that basket, and I didn't want a stray 1-sat output swept into someone's change.
Then I read my own covenant instead of reasoning about it. One public method. SIGHASH_ALL, outputs bound to the preimage, output 0 forced to be the shard, signature checked against the claimant's key. It cannot be transferred to anyone. The only thing it can become is that person's artwork.
BRC-147's basket is for things a wallet holds, lists and transfers. Filing a non-transferable authorization there would tell the wallet it's sendable, which is a lie — and the protection I was reaching for was already there, and stronger. Consensus refuses the spend. Convention only asks nicely.
Not everything one-satoshi-shaped is an ordinal. @shruggr this is your patch of ground if you have a view. 🌱