Biometric Solana wallet with Living Will β no seed phrase, fully decentralized
"Plant today. Harvest tomorrow. Let it bloom."
Built for Colosseum Solana Frontier Hackathon
vaultis/
βββ programs/vaultis/ β Steel on-chain program (Rust)
βββ mobile/ β React Native Expo app
βββ extension/ β Chrome Extension (MV3)
βββ bloom-wallet/ β Marketing landing page (React + Vite)
βββ README.md
Install these first:
# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Solana CLI (v1.18+)
sh -c "$(curl -sSfL https://release.solana.com/v1.18.0/install)"
# Steel CLI
cargo install steel-cli
# Node.js v20+
# Download from https://nodejs.org
# Expo CLI
npm install -g expo-cli eas-clicd programs/vaultis
# Build
cargo build-bpf
# Set Solana to devnet
solana config set --url devnet
# Create wallet (or use existing)
solana-keygen new --outfile ~/.config/solana/id.json
# Get devnet SOL
solana airdrop 2
# Deploy
solana program deploy target/deploy/vaultis.so
# COPY the program ID printed after deploy!mobile/constants/network.ts
export const PROGRAM_ID = {
devnet: 'YOUR_PROGRAM_ID_HERE',
...
}extension/src/utils/solana.ts
export const PROGRAM_ID_DEVNET = 'YOUR_PROGRAM_ID_HERE';cd bloom-wallet
# Install dependencies
npm install
# Start dev server
npm run dev
# Build for production
npm run buildcd mobile
# Install dependencies
npm install
# Start Expo (scan QR with Expo Go app)
npx expo start
# For Android emulator
npx expo start --android
# For iOS simulator (Mac only)
npx expo start --ios- App opens β Onboarding screen
- Enable biometric (Face ID / fingerprint)
- Wallet created, Share 2 shown β SAVE IT
- Home screen β Airdrop devnet SOL β Test send
- Will tab β Create will β Add beneficiaries β Check in
cd extension
# Install dependencies
npm install
# Build
npm run build
# This creates a dist/ folder
# Load in Chrome:
# 1. Open chrome://extensions
# 2. Enable "Developer mode" (top right toggle)
# 3. Click "Load unpacked"
# 4. Select the extension/dist/ folder
# 5. Bloom icon appears in toolbar- Click Bloom icon in Chrome
- Enable biometric (Touch ID / Windows Hello)
- Save Share 2 backup
- Airdrop devnet SOL
- Test send β Will tab β Create will
- Open two browser profiles or use Phantom devnet wallet
- Send SOL between them
solana program invoke <PROGRAM_ID> \
--instruction-data 02 \
--account <WILL_PDA> \
--account <BENEFICIARY>solana balance
solana airdrop 2
solana logs <PROGRAM_ID>
solana account <WILL_PDA_ADDRESS>- Private key NEVER stored whole β always in Shamir shares
- Share 1 on device (biometric-locked via expo-secure-store)
- Share 2 = your manual backup (save somewhere safe!)
- Share 3 = future on-chain encrypted storage
- Key reconstructed only in RAM, wiped after signing
- No admin key on program β fully trustless once deployed
- On-chain encrypted Share 3 storage (PDA)
- SPL token transfers in will (not just SOL)
- Guardian-based social recovery (3-of-5)
- Formal security audit
- iOS App Store + Chrome Web Store submission
- Mainnet deployment
| Layer | Tech |
|---|---|
| On-chain | Steel 3.0 (Rust) |
| Mobile | React Native + Expo SDK 54 |
| Biometric (mobile) | expo-local-authentication |
| Key storage | expo-secure-store |
| Extension | React + Vite + Chrome MV3 |
| Biometric (web) | WebAuthn API |
| Key splitting | shamirs-secret-sharing |
| Solana client | @solana/web3.js |
| Landing page | React + Vite |
| Network | Devnet (Helius for mainnet) |
Track: Consumer + Infrastructure Tagline: "The last wallet you'll ever need β even after you're gone" Built by: Rahul Patle Γ Claude
Bloom Wallet v1.0 β Devnet Only