Build Banano dApps with MonkeyMask
MonkeyMask is a production-ready browser extension wallet for Banano with enterprise-grade security, Phantom-style API compatibility, and comprehensive ecosystem integration.
Installation
- Download the latest release from GitHub
- Open Chrome and go to
chrome://extensions/
- Enable Developer mode
- Click Load Unpacked and select the
dist
folder - MonkeyMask will appear in your extensions!
git clone https://github.com/thekesslereffect/monkeymask.git
cd monkeymask/extension
npm install
npm run build
Quickstart
// providers/index.tsx
import { MonkeyMaskProvider } from './MonkeyMaskProvider';
export function Providers({ children }) {
return (
<MonkeyMaskProvider
config={{
autoConnect: true,
onConnect: (publicKey) => {
console.log('Wallet connected:', publicKey);
},
onDisconnect: () => {
console.log('Wallet disconnected');
},
onError: (error) => {
console.error('Wallet error:', error);
},
}}
>
{children}
</MonkeyMaskProvider>
);
}
// app/layout.tsx
import { Providers } from '@/providers';
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
<Providers>{children}</Providers>
</body>
</html>
);
}
Core Features
- • Per-origin permissions
- • AES-256 encryption
- • Auto-lock protection
- • User approval required
- • No auto-approvals
- • Event-driven architecture
- • Connection persistence
- • Standardized error codes
- • TypeScript support
- • Silent reconnection
- • Resolve .ban domains
- • Human-readable addresses
- • Automatic resolution
- • Transaction support
- • Developer-friendly API
API Reference
Connection Management
Account Information
Transactions
Banano Name System (BNS)
Message Verification
Event System
Error Handling
MonkeyMask follows EIP-1193 error standards for consistent error handling across dApps.
Advanced Examples
Security Best Practices
Per-Origin Permissions: Each website requires explicit user approval
Persistent Authorization: Approved connections survive browser restarts
User Control: Users can revoke permissions anytime via Connected Sites
No Auto-Approvals: Every transaction requires user confirmation
Auto-Lock: Configurable timeouts (1/5/15/60 minutes)
AES-256 Encryption: Private keys encrypted with PBKDF2
Local Storage: Keys never leave the browser
Secure Approval: Clear transaction previews
✅ Do
- • Always handle user rejection gracefully
- • Verify signatures server-side for authentication
- • Use domain-separated messages for signing
- • Listen for disconnect events
- • Implement proper error handling
- • Show clear transaction details to users
❌ Don't
- • Never store private keys in your dApp
- • Don't assume connection persists
- • Avoid requesting unnecessary permissions
- • Don't ignore error codes
- • Never auto-submit transactions
- • Don't trust client-side verification alone
Extension Features
- • Auto-Lock Timer: 1, 5, 15, or 60 minutes
- • Theme Options: Dark, Light, or Banano theme
- • Connected Sites: Manage permissions per website
- • Account Management: Multiple accounts with custom names
- • Transaction History: View past transactions
- • QR Code Generation: Share addresses easily
- • Explore Screen: 50+ Banano ecosystem sites
- • Faucet Integration: Built-in faucet access
- • NFT Display: View Banano NFTs (coming soon)
Ready to build with MonkeyMask?
Join the growing Banano ecosystem and create amazing dApps with enterprise-grade wallet integration.