βββββββ ββββ βββββββββββ βββ βββ ββββββ βββ ββββββ βββββββββ
βββββββββββββ βββββββββββββ βββ ββββββββββββββ ββββββ βββββββββ
βββ ββββββββββββββββββββββ βββ ββββββββββββββ ββββββ βββ
βββ ββββββββββββββββββββββ ββββ βββββββββββββββ ββββββ βββ
βββββββββββ βββ βββββββββββ βββββββ βββ βββββββββββββββββββββββ
βββββββ βββ ββββββββββ βββββ βββ βββ βββββββ βββββββββββ
Frontier Hackathon β Eitherway Track Submission
Built for the Birdeye and Solflare partner tracks.
A fully on-chain, trustless digital inheritance protocol β the first of its kind on Solana.
βΆ Click to watch the full demo on YouTube
Quantum-secured on-chain inheritance β Initialize Vault β Register Heir β Deposit SOL β Send Heartbeat
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β $140,000,000,000+ in Bitcoin is permanently inaccessible today β
β β
β 4,000,000 BTC estimated lost forever β never to move β
β β
β Every single day, people die holding crypto with no exit plan. β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Why does this happen?
| Scenario | What Happens to Your Crypto |
|---|---|
| π You die unexpectedly | Gone. Forever. No one has the keys. |
| π₯ You're incapacitated for months | Frozen. No mechanism to reach it. |
| π You're imprisoned | Inaccessible. Family can't help. |
| π΄ You develop memory loss | Lost. Even you can't find it. |
Existing "solutions" are broken:
- Leave keys with family β Single point of failure. Human betrayal risk.
- Multisig with a lawyer β You're trusting a human. Humans can be bribed or coerced.
- Custodial services β You just rebuilt the bank you escaped.
- Nothing β The most popular "strategy" and the most catastrophic outcome.
DeadMan Protocol solves all of this. On-chain. Permanently. Without trusting anyone.
"As long as I keep proving I'm alive, my assets stay locked under my control. The moment I stop β for too long β my assets automatically flow to exactly the people I chose, in exactly the amounts I decided. No one can stop it. No one can speed it up."
Core innovations:
- π On-chain dead man's switch β a single
heartbeattransaction resets the countdown - π§© BPS-precision multi-heir distribution β split assets across up to 10 beneficiaries
- π Encrypted secret transmission β pass seed phrases, passwords, final messages β encrypted per heir using their public key, stored on IPFS
- β‘ Sub-second Solana execution β claims settle in milliseconds, not days
- π‘οΈ Grace period protection β configurable buffer prevents false triggers
- π Live Birdeye data β real-time USD values for all vault balances
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DEADMAN PROTOCOL LIFECYCLE β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£
β β
β PHASE 1: SETUP β
β Owner creates vault (90 days deadline, 7 days grace period) β
β Deposits 5 SOL + 10,000 USDC β valued live via Birdeye API β
β Adds 3 beneficiaries: Alice 60% β Bob 30% β Carol 10% β
β Encrypts will + secrets per heir β stored on IPFS β
β β
β PHASE 2: ACTIVE β
β Every 30-90 days: Owner sends heartbeat() βββΊ countdown reset β
β Watcher daemon monitors 24/7 β fires Slack/Discord alerts at: β
β T-30 days βββΊ β οΈ WARNING β
β T-7 days βββΊ π΄ URGENT β
β T-1 day βββΊ π¨ CRITICAL β
β β
β PHASE 3: TRIGGER β
β No heartbeat for 90 days β deadline reached β grace period begins β
β After grace period: vault UNLOCKED for claims β
β β
β PHASE 4: DISTRIBUTION β
β Alice claims β 3.0 SOL + 6,000 USDC received instantly β
β USDC amount displayed in real-time via Birdeye price feed β
β Immutable proof of claim recorded on-chain forever β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
This project competes in the Birdeye and Solflare partner tracks.
Birdeye is not just a price ticker in this app. It is the financial intelligence layer of the entire vault system.
1. Live Vault Valuation Engine (useBirdeye.ts)
βββ TRANSACTION LOG ββββββββββββββββββββββββ
[17:26:34] Depositing 10 SOL to vault...
[17:26:40] ERROR: Simulation failed. Message: Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1. Logs: [ "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program FscnjuLXzegHTn6LYdSS2HbjaaDDa7Tn2tBCgSp3dLSq invoke [1]", "Program log: Instruction: DepositSol", "Program 11111111111111111111111111111111 invoke [2]", "Transfer: insufficient lamports 9892434800, need 10000000000", "Program 11111111111111111111111111111111 failed: custom program error: 0x1", "Program FscnjuLXzegHTn6LYdSS2HbjaaDDa7Tn2tBCgSp3dLSq consumed 5618 of 199700 compute units", "Program FscnjuLXzegHTn6LYdSS2HbjaaDDa7Tn2tBCgSp3dLSq failed: custom program error: 0x1" ]. Catch the SendTransactionError and call getLogs() on it for full details.
Every deposit, balance display, and vault status card shows real-time USD value powered by Birdeye's price API β not a static number, a live feed.
// hooks/useBirdeye.ts β Production integration
const BIRDEYE_SOL_USD = 'https://public-api.birdeye.so/defi/price?address=So11111111111111111111111111111111111111112';
// Fetches live SOL/USD price every 30 seconds
// Falls back to CoinGecko API if Birdeye is unavailable
// Powers: DepositPanel, VaultPulse, HeirManagement2. Deposit Panel with Live Conversion
When a user types "2 SOL" in the deposit form, the USD value updates instantly via Birdeye β showing them exactly what they're locking in dollars at that precise moment.
3. Vault Balance Dashboard
The "THE PULSE" dashboard shows the vault's total balance in both SOL and USD, refreshed every 30 seconds using Birdeye data. Users can instantly see if their estate value has changed significantly.
Why this is deep Birdeye integration:
Birdeye data is the core intelligence layer. Without it, users have no financial context for their inheritance decisions. Every financial action in the app is Birdeye-powered.
Solflare is treated as a first-class citizen in the entire UX flow, not just a "connect" button.
1. Solflare-First Wallet Architecture
The wallet modal is configured with Solflare as the primary adapter, with the deepest integration points:
// providers.tsx β Solflare prioritized
const wallets = useMemo(() => [
new SolflareWalletAdapter(), // Primary β deepest integration
new PhantomWalletAdapter(),
new CoinbaseWalletAdapter(),
new LedgerWalletAdapter(),
new TrustWalletAdapter(),
new TorusWalletAdapter(),
], []);2. Transaction Signing Flow
Every protocol instruction (heartbeat, add_beneficiary, deposit, cancel_vault) routes through the Solflare signing interface with full transaction simulation before broadcast.
3. Vault PDA Derived From Wallet
The vault itself is a PDA derived from the user's Solflare wallet address β the wallet IS the vault access key. Losing access to your Solflare wallet means losing vault control.
4. Wallet-Gated UI State
The entire dashboard is wallet-state aware. Before connecting Solflare, users see an empty state. After connecting, the vault loads their specific on-chain data instantly.
programs/dead-man-protocol/src/
βββ lib.rs β 11 instruction entrypoints
βββ instructions/
β βββ initialize_vault.rs β Create VaultConfig PDA
β βββ heartbeat.rs β Reset countdown clock
β βββ add_beneficiary.rs β Add heir with BPS share
β βββ remove_beneficiary.rs β Remove heir
β βββ update_will.rs β Update encrypted IPFS CID
β βββ deposit.rs β SOL + SPL token deposits
β βββ claim_inheritance.rs β Heir claims after deadline
β βββ emergency_cancel.rs β Owner cancels
β βββ extend_deadline.rs β Owner extends window
βββ state/
β βββ vault_config.rs β VaultConfig PDA definition
β βββ beneficiary_record.rs β BeneficiaryRecord PDA definition
βββ events.rs β Full on-chain audit trail
βββ errors.rs β Custom error codes
βββ constants.rs β Protocol safety constants
VaultConfig PDA β seeds: [b"vault", owner.pubkey]
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VaultConfig β
ββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ€
β owner β Pubkey (32 bytes) β
β last_heartbeat β i64 β unix timestamp β
β deadline_seconds β i64 β inactivity window β
β grace_period_seconds β i64 β buffer after deadline β
β encrypted_will_cid β Vec<u8> β IPFS CID β
β will_hash β [u8;32] β SHA-256 integrity β
β total_shares β u16 β sum of all BPS β
β beneficiary_count β u8 β max 10 β
β is_executed β bool β
β is_cancelled β bool β
β bump β u8 β PDA canonical bump β
ββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββ
BeneficiaryRecord PDA β seeds: [b"beneficiary", vault.pubkey, heir.pubkey]
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BeneficiaryRecord β
ββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ€
β vault β Pubkey β parent vault β
β wallet β Pubkey β heir's wallet β
β share_bps β u16 β share in basis points β
β encrypted_secret_cid β Vec<u8> β heir's IPFS secret β
β is_claimed β bool β
β claimed_at β i64 β when claimed β
β bump β u8 β PDA canonical bump β
ββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββ
app/src/
βββ app/
β βββ globals.css β Claude-inspired warm design system
β βββ layout.tsx β Fraunces + Outfit fonts, SEO
β βββ page.tsx β Main dashboard assembly
β βββ providers.tsx β Solana wallet providers (6 wallets)
β βββ api/quantum/route.ts β IBM Quantum encryption API route
βββ components/
β βββ VaultPulse.tsx β Live vault status + countdown
β βββ HeartbeatTrigger.tsx β Heartbeat signing + tx logs
β βββ HeirManagement.tsx β Beneficiary table + modal form
β βββ EncryptedSecret.tsx β IPFS will upload + display
β βββ DepositPanel.tsx β SOL deposit + live USD (Birdeye)
β βββ Sidebar.tsx β DMB logo + navigation
β βββ WalletButton.tsx β Styled wallet connect
β βββ TerminalLog.tsx β Live transaction log
β βββ TypewriterText.tsx β Animated text component
βββ hooks/
βββ useBirdeye.ts β π¦
Birdeye live price feed
βββ useVault.ts β Vault PDA fetching + Borsh decoding
βββ useProgram.ts β Anchor instruction calls
app/
βββ prisma/schema.prisma β DB schema (QuantumState, AuditLog)
βββ src/app/api/quantum/ β Next.js API route
βββ .env β IBM_QUANTUM_API_KEY + DATABASE_URL
docker-compose.yml β One-command PostgreSQL boot
The off-chain layer uses IBM Quantum API entropy to seed encryption keys for user payload signatures, stored in PostgreSQL via Prisma ORM. This creates an immutable off-chain audit trail that complements the on-chain Anchor state.
Layer 1: Solana On-Chain
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β’ PDA signer authority β vault PDA owns all token accounts
β’ Ed25519 signature verification on every instruction
β’ has_one = owner constraint on all sensitive instructions
β’ Canonical bump validation β prevents PDA substitution attacks
Layer 2: Financial Safety
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β’ Check-Effects-Interactions pattern (is_claimed = true BEFORE transfer)
β’ checked_add / checked_mul β overflow impossible
β’ Basis points precision β no lamport rounding loss
β’ total_shares validated on every mutation (max 10,000 bps)
Layer 3: Temporal Security
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β’ Deadline can ONLY be extended, never shortened
β’ Grace period is immutable after vault creation
β’ last_heartbeat updatable ONLY by vault owner
Layer 4: Will Privacy (Off-Chain)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β’ AES-256-GCM encryption before IPFS upload
β’ Each heir has their own uniquely encrypted secret
β’ SHA-256 hash stored on-chain for integrity verification
β’ IBM Quantum API for high-entropy key seeding
| Attack Vector | Defense | Status |
|---|---|---|
| Premature claim | deadline + grace_period check |
β Blocked |
| Double claim | is_claimed flag (CEI pattern) |
β Blocked |
| Fake heartbeat | has_one = owner constraint |
β Blocked |
| Share overflow | total_shares β€ 10000 validation |
β Blocked |
| Deadline shortening | Extend-only logic | β Blocked |
| PDA substitution | Canonical bump validation | β Blocked |
| Arithmetic overflow | checked_* everywhere |
β Blocked |
| Will tampering | On-chain SHA-256 verification | β Blocked |
| Reentrancy | Check-Effects-Interactions | β Blocked |
git clone https://github.com/at264939-ctrl/dead-man-protocol
cd dead-man-protocol
chmod +x run.sh
./run.shThis automatically:
- π Starts PostgreSQL (port 5440) via Docker
- π Provisions Prisma schema (Quantum State tables)
- π Launches Next.js frontend at
http://localhost:3000
node --version # v18+
docker --version # any recent version# app/.env
DATABASE_URL="postgresql://dmb_admin:PASSWORD@localhost:5440/quantum_vault"
IBM_QUANTUM_API_KEY="your-ibm-quantum-api-key"| Feature | DeadMan Protocol | Multisig | Lawyer + Will | Custodial Service |
|---|---|---|---|---|
| Trustless (zero human trust) | β | β | β | |
| On-chain enforcement | β | β | β | β |
| Automatic execution | β | β | β | |
| Encrypted secret transmission | β | β | ||
| Live USD valuation (Birdeye) | β | β | β | β |
| Multi-wallet support | β | β | β | |
| No single point of failure | β | β | β | |
| Dead man's switch | β | β | β | β |
| Sub-second settlement | β | β | β | |
| No third-party fees | β | β | β |
β
Full lifecycle: create β heartbeat β add heirs β execute β claim
β
Multi-beneficiary BPS distribution with exact verification
β
SPL token inheritance end-to-end
β
Emergency cancel returns all funds
β
Deadline extension increases window correctly
β
Double-claim attempt blocked (is_claimed CEI)
β
Non-owner heartbeat rejected
β
Shares > 10000 bps rejected
β
Claim before deadline rejected (Bankrun clock simulation)
β
Claim during grace period rejected
β
Claim after grace period accepted
βββββββββββββββββββββββββββββββββ
RESULT: 22/22 TESTS PASSING β
v1.0 ββββββββββββββββββββ CURRENT β HACKATHON SUBMISSION
β’ SOL + SPL token inheritance
β’ Multi-beneficiary with basis-point precision
β’ Birdeye live price integration
β’ Solflare + 5 wallet adapters
β’ IPFS encrypted wills
β’ IBM Quantum off-chain security layer
β’ PostgreSQL audit log
v1.1 ββββββββββββββββββββ Q3 2025
β’ NFT + cNFT inheritance
β’ Quicknode webhooks for real-time alerts
β’ Kamino vault position tracking
v1.2 ββββββββββββββββββββ Q4 2025
β’ ZK-encrypted private beneficiary lists
β’ DFlow execution for inheritance claim swaps
β’ Mobile-first Progressive Web App
v2.0 ββββββββββββββββββββ Q1 2026
β’ DAO governance for protocol parameters
β’ Cross-chain (Wormhole bridge)
β’ Mainnet launch
dead-man-protocol/
βββ programs/dead-man-protocol/ β Anchor Rust program
β βββ src/
β βββ lib.rs β 11 instruction entrypoints
β βββ instructions/ β One file per instruction
β βββ state/ β Account data structures
β βββ events.rs β On-chain audit events
β βββ errors.rs β Custom error codes
β βββ constants.rs β Protocol constants
βββ tests/ β Bankrun integration suite
βββ cli/ β TypeScript CLI tool
βββ watcher/ β Monitoring daemon (Docker)
βββ app/ β Next.js frontend
β βββ src/
β β βββ components/ β 9 UI components
β β βββ hooks/ β useBirdeye, useVault, useProgram
β β βββ app/api/quantum/ β IBM Quantum encryption route
β βββ prisma/schema.prisma β PostgreSQL schema
βββ docker-compose.yml β PostgreSQL container
βββ run.sh β One-command project launcher
βββ upload_to_github.py β GitHub auto-deployment script
This is experimental software deployed on devnet for hackathon purposes. It has not been formally audited. The protocol is trustless by design β there is no admin key, no recovery mechanism, no support line if a mistake is made.
Test on devnet first. Read the code. Understand what you're signing.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β Your assets should outlive you. β
β Your trust in humans shouldn't have to. β
β β
β Built on Solana β’ Powered by Birdeye β’ Solflare-First β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Built for the Frontier Hackathon β Eitherway Track
Partner Tracks: π¦
Birdeye Β· π Solflare
β Star this repo if you believe crypto estates deserve better than nothing.
