Inheritable Account is a Stellar smart-account contract that lets you control an on-chain account today, and name heirs who can take over if you stop using it for long enough.
Think of it as digital succession for a blockchain account: you stay in charge while you are active; if you go silent past a waiting period you chose, a designated heir can claim control without needing your help.
This repository contains the on-chain contract. Day-to-day use is easiest with the companion desktop app StellarInheritableAccountUX.
| License | AGPL-3.0-or-later |
| Role | What you do |
|---|---|
| Admin | Current owner. Signs actions, manages heirs and notes, keeps the account “alive” by using it. |
| Candidate (heir) | Designated successor. After the waiting time of inactivity, can claim admin rights alone. |
You might use this if you want:
- An account that can outlive your ability (or willingness) to keep signing.
- Heirs you choose yourself, each with their own waiting period.
- Private notes that provisioned heirs can decrypt with a proper client (not only you as admin).
- You are the admin. Your key controls the account.
- You name one or more candidates and set a waiting time for each (for example: 1 year, 2 years).
- Every time you use the account as admin, the inactivity clock resets.
- If you stay inactive longer than a candidate’s waiting time, that person may claim and become the new admin.
Two different ways control can change hands:
| Inheritance (claim) | Transfer | |
|---|---|---|
| Who starts it | The heir | The current admin |
| Needs old admin? | No — that is the point of inheritance | Yes — you hand over deliberately |
| Typical case | You are gone or unable to act | You still can sign and want to pass control now |
The account can store notes (short summaries and longer bodies). The contract keeps only encrypted data on chain; encryption and decryption happen in the client app.
With a client such as InheritableAccountUX:
- You (admin) can create and read notes while you control the account.
- When you add an heir, the app stores setup material (
migration_data) so that heir can already decrypt notes without claiming—and without you staying online. - Claim is about taking over the account, not about first unlocking note plaintext.
- Raw note bytes on the public ledger are not human-readable; privacy depends on encryption, not on hiding data from the network.
Anyone can fetch the ciphertext; plaintext is for the admin and for heirs you have already provisioned.
| Piece | Role |
|---|---|
| This repo (StellarInheritableAccount) | Smart contract on Stellar (the rules of succession and storage). |
| StellarInheritableAccountUX | Desktop app to unlock your key, manage heirs, edit notes, watch inactivity, and claim when eligible. |
Typical flow for an admin
- Deploy or point the app at an Inheritable Account contract.
- Open InheritableAccountUX and unlock with your password (your signing key stays in memory for that session).
- Add candidates and waiting times; write any notes you want heirs to inherit.
- Keep using the account when you are active so the succession clock does not run out by accident.
Typical flow for an heir
- Open the same app with your key (you should already be registered as a candidate).
- Check inactivity and whether you can claim yet.
- When the waiting time is met, claim admin—no action required from the previous admin.
- Complete any note hand-off steps the app guides you through, then manage the account as the new admin.
You can integrate other wallets or tools with the same contract; InheritableAccountUX is the reference client built for this design.
- Experimental software. Do not rely on it alone for critical estate planning or large sums without your own review and backups.
- Not a legal will. On-chain succession is a technical mechanism; laws and family agreements are separate.
- Naming an heir is meaningful. A provisioned candidate is meant to be able to decrypt notes even before they claim the account.
- Stay active if you want to remain admin. Successful admin use resets the inactivity timer.
- Waiting times are per heir. You can give different people different delays.
This package is a Soroban contract (inheritable_account) written in Rust. Source lives under src/. For local checks: cargo test. Prefer InheritableAccountUX for interactive use rather than calling contract methods by hand.
Copyright (C) 2026 InheritableAccount contributors
This project is licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later).
See the LICENSE file, or https://www.gnu.org/licenses/.