Tool · Keys & addresses
Key forge
From a private key to a prl1 address, one step at a time
What it does
Start from a private key (a small number like 1, 2, 3…, a random one, or one you type) and follow it through five
cards to a Pearl address. Switch the network to see the same key as a prl1, tprl1 or rprl1 address.
How to read it
- Private key d: a secret number from 1 to just under 2²⁵⁶.
- Public key P = d·G: the curve’s starting point G multiplied by d. Compressed, it is a parity byte (02 or 03) and the 32-byte x-coordinate. Taproot keeps only x.
- Tweak t = TaggedHash(“TapTweak”, P.x). With no script tree (BIP-86) the tweak commits to the key alone.
- Output key Q = P + t·G: the key that appears on the chain.
- Address: the prefix, the separator 1, the witness version (p = 1), Q in 5-bit letters, and a 6-letter checksum.
Key 1 gives prl1pmfr3p9j00pfxjh0zmgp99y8zftmd3s5pmedqhyptwy6lm87hf5sse9xfq3, a test vector in the site’s
research.
Pearl specifics
- Pearl wallets make exactly these BIP-86 Taproot addresses by default, with the prefixes
prl(mainnet),tprl(testnet) andrprl(regtest). A mainnet address is 63 characters. - A real wallet derives its keys from 12 words along
m/86'/808276'/0'/0/i; this tool starts from the private key itself. - For learning only. A key shown on a web page is not secret. Never send PRL to an address made here. Small keys like 1, 2 or 3 are known to everyone. The page never saves a key, and only small-number keys go in the share link.
Under the hood
Runs entirely in your browser. Keys, the tweak and the address come from src/lib/keys.ts (privToPub,
bip86Details) and src/lib/bech32m.ts, on top of the audited @noble/curves. Unit tests reproduce the
research’s key-to-address vectors (public key, tweak, output key, address) and the official BIP-86 vectors.