Skip to content

feat(bsv): add CAIP-10 profile for BRC-100 identity keys - #202

Open
sirdeggen wants to merge 2 commits into
ChainAgnostic:mainfrom
sirdeggen:feat/bsv-caip10
Open

feat(bsv): add CAIP-10 profile for BRC-100 identity keys#202
sirdeggen wants to merge 2 commits into
ChainAgnostic:mainfrom
sirdeggen:feat/bsv-caip10

Conversation

@sirdeggen

Copy link
Copy Markdown
Contributor

Summary

Follow-up to #190, specifically @bumblefudge's review: BSV's account model is not BTC/BCH, and a CAIP-10 profile is needed so those assumptions are not smuggled across.

A BSV account in this namespace is a BRC-100 wallet identity public key (compressed secp256k1 PubKeyHex, 66 hex chars), not a Bitcoin address.

bsv:mainnet:036d239847413cdf9f15c0faad7c658bede087d3f601f2e2427d1f90ce84c0718a

Resolved with getPublicKey({ identityKey: true }) on a BRC-100 wallet whose getNetwork() matches the CAIP-2 prefix.

Why this is not bip122 CAIP-10

Assumption from BTC/BCH (bip122) BSV / BRC-100
Account ≈ on-chain address Account ≈ identity public key
Legacy P2PKH (1…) is excluded as obsolete P2PKH is the ordinary locking script
SegWit / Taproot / Bech32 None of those exist on BSV
BCH CashAddr names payees BSV kept original Base58; a BSV 1… address is visually identical to a BTC 1… address
BIP32 / BIP44 HD paths Forbidden; per-payment destinations are BRC-42 ECDH children, unlinkable to the identity by default

The identity key never appears on chain. Paying hash160(identityKey) as P2PKH is not a BRC-29 payment. Derived child keys have the same compressed-pubkey syntax as identity keys; syntactic validity does not prove identity, which the profile states explicitly.

This follows the casper CAIP-10 precedent of using a public key as the account identifier.

Files

  • bsv/caip10.md — profile (semantics, syntax, resolution, test cases, BTC/BCH warnings)
  • bsv/README.mdrequires CAIP-10 and a short pointer at the profile

Related: x402-foundation/x402#2890 (x402 exact on BSV uses this identity key as payTo).

Follow-up to ChainAgnostic#190: a BSV account in this namespace is a BRC-100
wallet identity public key (compressed secp256k1 PubKeyHex), not a
Bitcoin address. Document the BTC/BCH assumptions this breaks —
bip122 CAIP-10 excludes legacy P2PKH, BSV has no SegWit/Taproot/
CashAddr, and on-chain outputs pay BRC-42 children rather than the
identity key.

Signed-off-by: Deggen <d.kellenschwiler@bsvassociation.org>
Signed-off-by: Deggen <d.kellenschwiler@bsvassociation.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant