One-click BIP-322 signature verification for Bitcoin wallets with MetaMask-like UX.
- ✅ One-click signing - Simple as MetaMask
- 🔐 BIP-322 compliant - Industry standard
- 🎯 Multi-wallet support - UniSat, Xverse, Leather, OKX
- ⚛️ React component - Drop-in UI widget
- 📦 TypeScript - Full type safety
- 🚀 Zero dependencies - Lightweight
npm install @reservebtc/bip322-connectorimport { BIP322Connector, WalletDetector } from '@reservebtc/bip322-connector'
// Detect available wallets
const wallets = WalletDetector.detectAll()
console.log('Available wallets:', wallets)
// Connect and sign
const connector = new BIP322Connector()
await connector.connect('unisat')
const result = await connector.sign(
'bc1q...',
'Sign this message'
)
console.log('Signature:', result.signature)import { BIP322SignButton } from '@reservebtc/bip322-connector'
function MyApp() {
const handleSigned = (result) => {
console.log('Signed!', result)
}
return (
<BIP322SignButton
message="Sign this message"
onSigned={handleSigned}
/>
)
}Main class for wallet connection and signing.
Methods:
connect(walletName: SupportedWallet): Promise<void>- Connect to walletsign(address: string, message: string): Promise<BIP322SignatureResult>- Sign messagedisconnect(): void- Disconnect from walletgetWalletName(): SupportedWallet | null- Get connected wallet
Utility for detecting installed wallets.
Methods:
detectAll(): WalletDetectionResult[]- Detect all available walletsisInstalled(walletName: SupportedWallet): boolean- Check if wallet installedgetProvider(walletName: SupportedWallet): any- Get wallet providergetFirstAvailable(): WalletDetectionResult | null- Get first available wallet
React component for one-click signing.
Props:
message: string- Message to signonSigned: (result: BIP322SignatureResult) => void- Success callbackonError?: (error: Error) => void- Error callback (optional)className?: string- Custom CSS class (optional)style?: React.CSSProperties- Inline styles (optional)
- UniSat Wallet
- Xverse Wallet
- Leather Wallet (ex-Hiro)
- OKX Wallet
See /examples directory for complete examples:
- Vanilla JavaScript example
- React example
- Next.js example
Before (6 steps, 2 minutes):
- Install wallet
- Find signing feature
- Copy message
- Paste in wallet
- Sign
- Copy signature back
After (1 click, 5 seconds):
<BIP322SignButton message="Sign this" onSigned={handleSign} />https://app.reservebtc.io/bip322-demo
We welcome contributions! Please see CONTRIBUTING.md
MIT License - see LICENSE
Built by ReserveBTC team.
Improving Bitcoin DeFi UX, one signature at a time.