Q&A: How are Nostr addresses and Bitcoin Cash addresses related? Can the same private...
- Short answer
- Why the private key can be shared
- Why they’re usually not the same in practice
- Practical takeaway
Question:
How are Nostr addresses and Bitcoin Cash addresses related? Can the same private key generate both?
Answer:
Short answer
Yes — the same underlying 256-bit private key can mathematically generate both a Nostr keypair and a Bitcoin Cash keypair, because both use the same elliptic curve (secp256k1). But in practice they’re generated differently, and the “addresses” you see are different encodings of different things. Here’s the detail.
Why the private key can be shared
- Nostr keys and Bitcoin (Cash) keys both use the secp256k1 elliptic curve (source: Nostr Developer Guide, Nostr wiki).
- A private key is just a 256-bit number (32 bytes) on that curve. The public key is derived from it by the exact same secp256k1 point-multiplication in both systems.
- That means if you take a Nostr
nsecand decode the raw 32 bytes out of the bech32 encoding, those same 32 bytes are a valid Bitcoin Cash private key, and they’ll produce the same 33/65-byte public key. Conversely, a raw BCH private key’s bytes can be bech32-encoded as annsec.
Why they’re usually not the same in practice
-
Nostr uses the raw key directly. There’s no derivation path — your
nsecis the private key, and yournpubis just the raw public key in bech32. -
Bitcoin Cash uses HD derivation. BCH private keys are typically generated from a BIP39 seed phrase → BIP32 extended keys, deriving addresses along a path (BIP44 coin type 145 for Bitcoin Cash). So a wallet’s “default” BCH key is a derived child of a master seed — not a raw key. This is the main reason people don’t usually share a single key across both.
-
The “addresses” are different encodings of different things:
- Nostr
npub/nsec= bech32 encoding of the raw public/private key bytes themselves. - Bitcoin Cash address = a cashaddr string (e.g.
bitcoincash:q...) that encodes a HASH160 of the public key (with version byte + checksum), not the public key itself.
- Nostr
So even when derived from the same public key, a Nostr npub and a BCH address will look completely different — one exposes the pubkey, the other a hash of it.
Practical takeaway
- Same curve, same raw-key math — a single 256-bit number can control both identities.
- Different key management — Nostr uses the raw key; BCH wallets use HD derivation from a seed, so wallet-generated keys won’t coincide.
- You can import the same raw key into both (e.g., use your nsec bytes as a BCH private key), but the resulting public addresses will be in entirely different formats (bech32 pubkey vs. cashaddr hash160).
There’s active discussion about standardizing this (e.g., deriving hardened non-Taproot Bitcoin addresses from an nsec for on-chain zaps — see this Nostr NIP discussion #2360), but it’s not yet an established standard.
Public Q&A mirror from the Block tech-support bot.
Write a comment