A developer-first browser extension wallet for blockchain testing with multiple seed phrases and multiple derived accounts in one plugin.
This project is designed for engineering teams testing blockchain products across multiple roles, seed phrases, and addresses.
- Problem: switching between different extension wallets or re-importing different seed phrases is slow and error-prone.
- Core value: manage multiple seed phrases and multiple derived addresses in one wallet to improve test efficiency.
- Data principle: the project does not collect seed phrases or private keys.
- Local recovery principle: seed phrases/private keys can be recovered locally for debugging and environment rebuild.
- Usage boundary: this wallet is for testing/validation only, not for managing production assets.
- Import multiple independent mnemonic roles.
- Derive multiple accounts per mnemonic using incremental index (
#0,#1,#2, ...). - Derivation path follows
m/44'/60'/0'/0/x(BIP-44 EVM standard). - One-click switch between roles and derived accounts.
- Accounts:
- Role list with collapse/expand.
- Per-role account list with index, address, balance, and active marker.
+ Deriveto create the next account index.
- Assets:
- Native ETH balance card.
Sendentry for transfer flow.
- Activity:
- Unified activity timeline with filters (
All,Tx,Sign). - Shows outgoing and incoming records.
- Unified activity timeline with filters (
- Networks:
- Add/edit custom RPC networks.
- Health status checks for configured networks.
- Watchlist token management moved into Edit Network.
- Danger zone: clear all local sensitive data.
- Security:
- Session lock (password + timeout + lock now/disable lock).
- Allowed origin management (add/remove/revoke all).
- Two-step flow:
Form -> Preview/Confirm -> Broadcast. - Confirmation panel includes:
- Transaction Type
- Network Fee
- Wallet Account
- Recipient Address
- Amount
- Advanced section: Nonce (optional), Data, Gas Limit
- EIP-1193 provider behavior and request pipeline.
- EIP-6963 multi-provider discovery support.
- Origin-based authorization and permission revoke support.
- Structured provider errors (
code/message/data).
- Outgoing ETH/ERC20 transfers.
- Incoming ETH transfers (block scan).
- Incoming ERC20 transfers (
Transferlog scan). - Signature records (
eth_sign,personal_sign,eth_signTypedData*).
- Compatible with Safe typed-data signing format used by the main
signing-service. - Includes test coverage for Safe EIP-712 typed-data signature recovery and normalized
vvalue.
- Test wallet only. Do not import production seed phrases or private keys.
- Wallet data is stored locally in
chrome.storage.local. - Mnemonic storage uses reversible local encoding for testing/debug convenience, not production-grade custody encryption.
- Use the built-in local data wipe capability after testing.
- React + TypeScript
- Vite + CRXJS (Manifest V3)
- Viem
- Tailwind CSS
- Chrome Extension APIs (
storage,runtime, content script + background)
- Node.js 18+
- pnpm
cd switch-wallet-plugin
pnpm installpnpm build- Open
chrome://extensions/. - Enable Developer mode.
- Click Load unpacked.
- Select
switch-wallet-plugin/dist.
cd switch-wallet-plugin
pnpm dev
pnpm build
pnpm testswitch-wallet-plugin/
src/
background/ # provider request handling, signing, permissions
content/ # page bridge, approval, request policy
popup/ # extension popup UI
utils/ # storage, wallet derivation, security helpers
types/ # shared types and provider error model
tests/ # node:test suites (permissions, multi-address, safe signing)
docs/ # PRD, review notes, UI workflow
- This is not a production wallet and does not target institutional custody/security standards.
- No E2E browser automation suite is included yet.
- Some advanced wallet ecosystem features are intentionally out of scope for the testing-first objective.