The SUBFROST Browser Extension Is Now Live
A browser wallet for Bitcoin is usually just a keyring with a send button. This one goes further, bringing the contract console along too. Read about the new wallet, and our guide on how to migrate your SUBFROST keystore wallet to the browser extension in one-minute, without ever displaying your seed phrase.
The entire SUBFROST stack packed into a browser side panel: your keys, every Alkane you hold, swaps, the vaults (coming soon), and a contract console. Plus a one-minute tutorial on how to migrate a web app keystore.
Install SUBFROST from the Chrome Web Store.
A browser wallet for Bitcoin is usually just a keyring with a send button. Balances, addresses, maybe a swap. The genuinely interesting part, the part where you actually talk to a contract, usually lives somewhere else: a desktop app, a CLI, or a custodial interface you have to trust.
The SUBFROST extension isn't split that way. It carries the same interface as the upcoming Android & iOS mobile wallets, including the contract console. You can send a transaction to an alkane, enrich it by its opcode, and execute operations on it, all inside a side panel that sits flush against whatever page you're currently on.
This post walks you through it: what you'll see when you open it, what's built in, and how to migrate an existing web app keystore without ever putting your seed phrase on screen.
The screenshots below are from the published Chrome build. Balances are from a test wallet.
The whole wallet, right there in the side panel
Install SUBFROST from the Chrome Web Store. It runs on Chrome as well as Chromium-based browsers.
Open it, and first set up your wallet by creating a new one or importing an existing one.
A balance sheet, right next to the page you're reading
Once unlocked, everything you hold is in the same list: native BTC, plus DIESEL, FIRE, frUSD, frBTC, and any other Alkanes tokens you hold. frBTC is SUBFROST's synthetic Bitcoin, pegged 1:1 to BTC and redeemable for native BTC, and it sits right beside your native BTC instead of pretending to be BTC.
The header carries your currently active address and the current block height, and the balance also shows when it was last fetched. Tokens are listed by their alkane id as well as their name, so DIESEL shows as 2:0, and you can tell two similarly named tokens apart without leaving the panel. Tabs separate all assets, alkanes, and orbital NFTs. The chain's state is never more than a glance away, and here that glance doesn't require you to switch any tabs at all.
Swap without leaving your tab
Send, receive, swap, and browser sit below the balances, each opening in the same panel rather than a new window. The swap interface takes both sides of a trade, shows your balance on each side, and prints the exchange rate before you confirm.
The gear on the rate line is trade settings (slippage, block expiry, and so on). The Liquidity tab next to Market is where you add and remove liquidity from pools. Nothing here hands your keys to whatever page you happen to be on, because the panel itself is the wallet, not an interface pointing at a wallet somewhere.
What's built in
- Send and receive across all four BTC address types.
- Alkane balances, with a detailed view of market info like global trades, market cap, and holders.
- AMM swaps with slippage control and multi-hop routing.
- Pools for adding and removing liquidity.
- Wrapping and unwrapping of frBTC (though that layer is abstracted away if you'd rather just use native BTC).
- Easy access to the FIRE vault via a link out to the web app.
- A block, transaction, and address explorer built into the wallet, with protostone tracing.
- Last but not least, cross-chain USDT/USDC<->BTC trades (deep liquidity coming soon).
Dapps talk to it through window.subfrost: connection-authorization gating, signPsbt, signPsbts, signPsbtBundle, message signing for BIP-322 and BIP-137, per-origin permissions, and accountsChanged and disconnect events.
Two omissions are deliberate. The extension supports mainnet only by design, and hardware wallets are not yet supported but will be in an upcoming update.
Migrating your web app keystore takes a minute
Your web app keystore is a BIP-39 seed, encrypted in your browser's storage. Migrating means importing that seed into the extension's keyring. There are three paths that do it, and they all end up in the same place, so you can choose based on how much you want to handle the seed phrase yourself.
Direct handoff is the path to use. Nothing lands in your downloads folder, and the seed phrase is never displayed.
- Install the extension. Then open app.subfrost.io. This method only works if you don't already have a wallet in your browser extension.
- In the web app, open your wallet, then click Settings.
- Then click Security and backup.
- Click Migrate to SUBFROST extension wallet.
- Migrate the WebApp keystore wallet to the browser extension
- Enter the password for your existing web app keystore. The password that protects the extension is set separately inside the extension.
- Approve the import in the browser extension's own window.
- If step 3 is missing, the page hasn't detected the extension yet. Refresh and look again. That button is a live probe of the extension provider, so it stays hidden rather than sitting there uselessly.
Under the hood, the page asks the extension for an ephemeral public key and encrypts your seed to it with X25519 and ChaCha20-Poly1305. Only ciphertext passes from the page to the extension, the keyring decrypts it in its own process, and it never hands the plaintext back to JavaScript. Your seed never exists in plaintext across that boundary. Extension builds early enough to predate this path fall back to a plaintext handoff, which still works, and the confirmation screen tells you so.
Alternative Methods (Keystore & Seed)
The keystore file is the cross-machine path.
- On the web app, navigate to Security & Backup, and click Export keystore. Your browser saves
subfrost-keystore-<timestamp>.json, encrypted with your existing keystore password and placed it on your computer. It's a wallet backup, so treat this file the way you'd treat a seed phrase. - In the extension, choose Import keystore JSON, then supply the file and that password.
The seed phrase is the universal fallback.
- On the web app, navigate to Security & Backup, and click Reveal Seed Phrase.
- Then in the extension, choose Import mnemonic, and enter the phrase.
- WARNING: When you do this, the phrase is shown on the screen and stays in your clipboard, so make sure there is nobody watching, and clear your clipboard afterward.
Your extension wallet can still only be recovered with the SEED PHRASE or the KEYSTORE file. Keep them somewhere safe.
What migration doesn't do
Migration is a copy. It is not a move. Your web app keystore stays as it is, untouched and still usable, holding the same wallet. Nothing gets deleted. If the extension ends up not being for you, the original is untouched.
The extension can import keystore JSON, but it can't export it yet. The extension shouldn't be the only place your wallet can be recovered from. Keep the seed phrase or that keystore file offline somewhere you'll still have it a year from now. If you've never backed up the seed phrase, do it before you migrate, not after.
Firefox runs the same code
A Firefox build already exists, sharing the views with Chrome and differing only in the platform glue, so everything above applies to it unchanged. It isn't listed on addons.mozilla.org yet. Chrome is the store listing today, and the Firefox listing follows.
The console moved into your browser
Alkanes puts application logic on Bitcoin L1, settling with each block, with no sequencer and nothing batching your transactions on your behalf. Not a sidechain, not an L2. Reaching that logic used to mean leaving your browser. Now it's a side panel that holds your own keys, one click away from whatever page you happen to be reading.
Install it, migrate in a minute, then execute.
You are responsible for your own keys. Anyone who holds your seed phrase holds your funds, and no one at SUBFROST will ever ask you for it.