Eternal Key

A Bitcoin inheritance vault that works automatically. Built with Charms Protocol

App: https://eternalkeybtc.vercel.app/app


The Problem

Imagine someone holds a large amount of Bitcoin and passes away. Their family knows the assets exist, but cannot access them.

Bitcoin has no recovery system. No support line. No legal override.

If private keys are lost, the funds are permanently inaccessible.

This is not rare. It happens to everyday users.

Bitcoin can outlive its owner. Access does not.


The Solution

Eternal Key is an automated inheritance system for Bitcoin.

It functions like a dead man’s switch:

  • You create a vault
  • You assign beneficiaries
  • You define a timeout period
  • You check in periodically

If you stop checking in, the system assumes inactivity and triggers distribution.

Funds are transferred automatically to the selected recipients based on your predefined allocation.

No lawyers No manual key transfer No reliance on memory or hidden backups


How It Works

1. Create a Vault

Define the structure of your inheritance:

  • Add beneficiaries
  • Assign percentage shares

2. Stay Active

Check in regularly to keep the vault locked

  • Each check-in resets the timer
  • No action is taken while you remain active

3. Automatic Execution

If the timeout expires:

  • Beneficiaries can claim their share
  • Distribution follows your predefined split

Technical Overview

  • Backend: Rust smart contract using Charms Protocol SDK
  • Frontend: React and Next.js
  • Network: Bitcoin testnet

The system uses real Bitcoin testnet transactions, not simulations.

Deployed contract: tb1qb55df1e19a57fa98938f2e776abd07ed


Getting Started

Install and Run

npm install  
npm run dev  

Open: http://localhost:3000/app

Requirements

  • A Bitcoin testnet wallet

    • Recommended: Unisat Wallet
  • Switch wallet to testnet mode

Get Testnet Bitcoin

  • Coinfaucet.eu
  • Mempool testnet faucet
  • Any Bitcoin testnet faucet

Testing

Check vault state via API:

curl -X POST http://localhost:3000/api/charms/vault-state \
-H "Content-Type: application/json" \
-d '{"vaultId": "test-vault", "network": "testnet"}'

Or use the UI for a simpler experience.


Current Limitations

  • Testnet only
  • Not safe for real funds
  • Private keys stored in plain text for demo purposes
  • Requires a browser wallet extension such as Unisat or Xverse

Roadmap

  • Multi-signature support
  • Stronger key management
  • Mainnet deployment

Why This Matters

Large amounts of Bitcoin are permanently lost when owners die without sharing access.

Traditional assets pass through legal systems. Bitcoin does not.

Existing solutions rely on manual processes such as:

  • Writing down seed phrases
  • Storing them in physical locations
  • Trusting others to find and use them correctly

These methods are fragile and error prone.

Eternal Key replaces them with automation.

  • No trust required
  • No manual intervention
  • Fully deterministic execution

This is inheritance as code.

Built With

Share this project:

Updates