Passkey-native smart wallet for Mantle L2. Features π Seedless Authentication - Use device biometrics instead of seed phrases π± WebAuthn/FIDO2 - Industry-standard passkey protocol β½ ERC-4337
π Seedless Authentication - Use device biometrics instead of seed phrases
π± WebAuthn/FIDO2 - Industry-standard passkey protocol
β½ ERC-4337 Compatible - Account abstraction ready
π Multi-Owner Support - Add backup passkeys for recovery
β‘ Mantle Optimized - Built for low gas costs on Mantle L2
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User Device β
β βββββββββββββββ ββββββββββββββββ βββββββββββββ β
β β Biometric βββββΆβ Passkey βββββΆβ Wallet β β
β β Prompt β β (WebAuthn) β β SDK β β
β βββββββββββββββ ββββββββββββββββ βββββββββββββ β
ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββ
β Sign Transaction
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Mantle L2 β
β βββββββββββββββββββ βββββββββββββββββββββββββββββ β
β β MantissaFactoryβββββΆβ MantissaWallet (Clone) β β
β β (Deploys Wallets)β β β’ P-256 Signature Verify β β
β βββββββββββββββββββ β β’ Execute Transactions β β
β β β’ Multi-Owner Support β β
β βββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Package | Description |
|---|---|
| Solidity smart contracts (Foundry) |
| TypeScript SDK for passkey + wallet integration |
| Next.js demo application |
# Clone the repo
git clone https://github.com/subh/keymantle.git
cd keymantle
# Install dependencies
npm install
# Build all packages
npm run build# Terminal 1: Start local Mantle forkcd packages/contracts
anvil --fork-url https://rpc.sepolia.mantle.xyz
# Terminal 2: Deploy contracts
PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \
forge script script/Deploy.s.sol --rpc-url http://127.0.0.1:8545 --broadcast
# Terminal 3: Run demo appcd packages/demo
npm run devOpen http://localhost:3000 and click "Create Passkey Wallet"!
The core contracts implement a passkey-authenticated smart wallet:
MantissaWallet.sol - Smart wallet with P-256 signature verification
MantissaFactory.sol - Factory for deploying wallets (CREATE2)
WebAuthnVerifier.sol - On-chain WebAuthn signature verification
See packages/contracts/DEPLOYMENT.md for deployment instructions.
import { MantissaClient } from '@mantlepass/sdk';
// Initialize clientconst client = new MantissaClient({
rpcUrl: 'https://rpc.sepolia.mantle.xyz',
factoryAddress: '0x...',
});
// Create wallet with passkeyconst wallet = await client.createWallet({
name: 'My Wallet',
});
// Sign and send transactionconst txHash = await client.sendTransaction({
to: '0x...',
value: 1000000000000000000n, // 1 MNTdata: '0x',
});Network | Chain ID | Factory Address |
|---|---|---|
Mantle Sepolia | 5003 |
|
Mantle Mainnet | 5000 |
|
Local (Anvil) | 5003 |
|
# Run contract testscd packages/contracts
forge test -vvv
# Run SDK testscd packages/sdk
npm testkeymantle/
βββ packages/
β βββ contracts/ # Solidity contracts
β β βββ src/ # Contract source files
β β βββ test/ # Foundry tests
β β βββ script/ # Deployment scripts
β βββ sdk/ # TypeScript SDK
β β βββ src/
β β βββ client/ # MantissaClient
β β βββ webauthn/ # Passkey utilities
β β βββ utils/ # Helpers
β βββ demo/ # Next.js demo app
βββ package.json # Monorepo root
βββ README.md
# Build everything
npm run build
# Build specific package
npm run build --workspace=packages/sdk
# Run tests
npm testP-256 (secp256r1) - Hardware-backed elliptic curve cryptography
WebAuthn - W3C standard for passwordless authentication
On-chain verification - All signatures verified by smart contracts
No private key exposure - Keys never leave secure hardware
β οΈ Not audited - This is experimental software. Use at your own risk.
Core smart contracts
TypeScript SDK
Demo application
ERC-4337 Bundler integration
Social recovery module
Session keys for dApps
Mobile SDK (React Native)
Hardware wallet backup