Files
bal-electrum-plugin/docs/manual/README.md
2026-06-20 09:50:02 -04:00

509 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<p align="center">
<img src="./images/logo.png" alt="BitcoinAfter.Life logo" width="120" />
</p>
<h1 align="center">BitcoinAfter.Life — BAL PROTOCOL 1.0</h1>
<h3 align="center">USER MANUAL (revB)</h3>
> This is the GitHubfriendly (HTML/Markdown + images) edition of the official
> BAL user manual. The original PDF lives in the
> [bal_plugin_manual](https://bitcoin-after.life/gitea/bitcoinafterlife/bal_plugin_manual)
> Gitea repository. A styled singlepage version is available as
> [`manual.html`](./manual.html).
---
Welcome to using **BAL**, the opensource plugin for Electrum Wallet, dedicated
to managing **bitcoin digital inheritance**.
An opensource plugin is a software extension that adds functionality to an
existing program, and whose source code is publicly available. This means that
anyone can view, modify, and distribute the plugin code.
The plugin was designed for **Electrum**, the Gold standard of Bitcoin wallets.
It was not considered reasonable to proceed with the development of a new wallet
or a fork of a wallet (a bifurcation of Electrum's code) so as not to put funds
at risk. Instead, we thought it prudent to lean as a plugin on the most tested
and therefore secure opensource Bitcoin wallet (**Electrum**), trusting that in
the future the plugin will be placed directly on Electrum by default.
## Installing the BAL plugin
The steps for installing the BAL plugin are very simple:
1. Install the latest version of **Electrum** (Bitcoin wallet).
2. Install the **BAL plugin** (find the files on the Bitcoinafter.life site or
links on the Bitcointalk forum), copying it to the Electrum plugins folder.
3. Activate the plugin from the Electrum menu (**Tools → Plugins → BAL**).
4. **Restart Electrum.**
Now you are ready to leave your digital legacy to your heirs!
---
## The BAL interface
![Figure 1 — Electrum with the BAL plugin installed](./images/fig1.png)
*Figure 1 — the screen that appears after starting Electrum with the BAL plugin
installed.*
As you can see there are now two new tabs (**HEIRS** and **WILL**) on the
Electrum interface.
- **HEIRS** = the screen of heirs to whom you want to leave your inheritance.
- **WILL** = the screen that shows you the technical details of your inheritance:
- locktime
- creation time
- transaction fees for miners
- status
- heirs
- willexecutor with associated fees
> **NB:** Inheritance with the BAL plugin can also be set on a wallet that is
> still receiving incoming transactions not yet confirmed on the blockchain.
---
## The HEIRS parameters
You can leave the default plugin parameters; they are more than fine for 99 % of
inheritance cases.
![Figure 2 — HEIRS tab parameters](./images/fig2.png)
*Figure 2 — the parameters on the HEIRS tab: (1) Delivery Time, (2) Check Alive,
(3) Fees.*
### 1 — Delivery Time (Locktime)
Indicates the date on which the inheritance of your wallet on the blockchain
will be transferred to the recipient. You can enter the inheritance date either
as **Relative** (example: 1 year from today → `RAW = 1y`) or as a **Precise
Date** (`Date`).
If you choose **Raw**, you can insert various options based on a suffix:
- `d`: number of days after the current day (e.g. `1d` means tomorrow)
- `y`: number of years after the current day (e.g. `1y` means one year from today)
\* The locktime can be **anticipated** to update the will.
### 2 — Check Alive (Threshold)
*(i.e. check whether you are still alive, and then postpone the inheritance.)*
This parameter — settable as relative (`RAW`) or absolute (`DATE`) — indicates
the time by which the inheritance will **not** be changed by postponing it.
> **NB:** if you set it negative (i.e. back in time) it is as if it were not
> there. This can be useful for doing quick inheritance tests.
**Example:** if you set the inheritance to one year from today and the Check
Alive (threshold) parameter to 6 months, then in 8 months — if you open
Electrum — the BAL plugin will ask whether you want to update the inheritance
date.
**Why does it do this?** Because it assumes that if you open the Electrum wallet
with the plugin, you are still alive, and therefore estimates that you will
still live a certain amount of time, so you probably want to postpone the
inheritance so as not to transfer it too soon while you are still alive.
#### A practical example
Today is **January 1, 2025**. I set the inheritance for **December 1, 2025**
(11 months from now) and the CheckAlive (threshold) at **6 months** (so
**June 1, 2025**):
**Future case histories:**
- **Case 1** — I no longer access the Electrum wallet: the inheritance on
December 1, 2025 will be transferred to the heir (sent to Bitcoin nodes by the
willexecutors).
- **Case 2** — I access the wallet in 4 months (earlier than the set 6month
CheckAlive threshold); the inheritance will remain set for December 1, 2025.
- **Case 3** — I access the wallet in 7 months (later than the 6 months set);
the plugin will ask whether I want to **postpone** the date of the inheritance,
because it assumes I am still alive and may want to postpone the inheritance so
as not to transfer it while I am still alive.
### 3 — Fees
Denoted in **satoshi/vbyte**. This parameter indicates the fees that go to the
**miners** to have the transaction validated on the blockchain at the time of
inheritance. It is the classic fee/commission you pay every time you send
bitcoin to another wallet.
We recommend leaving the default value of **100 sat/vbyte**; this way you will be
sure the inheritance is accepted by the miners, even on days when the blockchain
is saturated and network costs are high. (As of January 2025, that is roughly
$25 USD for a wallet without too many UTXOs — a value that allows the tx to be
placed on the blockchain even on congested days.)
---
## IMPORTANT — sizing inheritance transaction amounts
**Automatic sizing to 100 % of the wallet.** The plugin always makes sure that
**ALL** the value of the wallet is delivered to the heirs.
- **Example:** I have a wallet with 3 BTC. I write as inheritance 1 BTC to JONNY
and 10 % to ANDREA. The BAL plugin sends 1 BTC to Jonny and **all the rest**
(2 BTC) to Andrea.
- Or: I set 5 % to Jonny and 80 % to Andrea. The plugin **recalculates** the
percentages proportionally so the wallet is completely emptied. Instead of
5 %/80 % it sends **5.9 %** to Jonny and **94.1 %** to Andrea, for a total of
100 %. (Otherwise 15 % would be left in the wallet.)
> **NB:** if you wanted to send only 80 % of the wallet to the heirs and make
> 20 % inaccessible forever (bitcoins lost forever — increasing digital scarcity
> and giving wealth to all bitcoin participants), just set **yourself** as an
> heir with a percentage (e.g. 20 %) to an internal wallet address. This also
> improves the privacy of the transaction, as it is difficult to understand the
> destination wallets.
- **Another example:** I own 10 BTC and want to give Jonny exactly 4 BTC and
Andrea exactly 2 BTC. What about the missing 4? The plugin recalculates to
transfer 100 %. The only way to give Jonny and Andrea the exact BTC is to
transfer the missing 4 to another wallet by designating a **third heir**.
---
## Staggered inheritance over time
Currently **BAL version 1.0** does not support this. It is already in development
for **version 2** of the protocol. In version 2 it will be possible, for
example, to stagger the inheritance 10 % per year until the tenth year, or even
1 % per month, month by month for 10 years — as if it were a kind of annuity,
but without the need for third parties or intermediaries.
---
## The [NEW HEIR] button
After setting steps 1, 2, 3, press the **[New Heir]** button and the *BAL New
Heirs* window appears:
![Figure 3 — New Heir window](./images/fig3.png)
*Figure 3 — adding a new heir.*
Here you enter the following parameters:
- **Name:** name of the heir, with any details you prefer.
- **Address:** the Bitcoin wallet address where the inheritance will be sent.
- **Amount:** how much you want to send to this heir (as a **percentage** or a
**fixed value**). The plugin always makes sure that 100 % of the inheritance
is given to the heirs (see *Sizing inheritance transactions*).
> **NB:** You can add several heirs — even 10 or more.
---
## Delivery time changes
If you change the **Delivery Time** of a will, when Electrum closes the BAL
plugin will notify you that you need to update the inheritance.
- **If you postponed the Delivery Time:** the plugin will create a transaction to
**invalidate** the current inheritance and create a new, postponed one. To do
this safely, the BAL plugin creates a transaction that it sends to the miners,
which you will have to **sign**, costing **100 sat/vbyte**.
- **If you anticipated the Delivery Time:** the plugin simply sends a new
inheritance transaction to the **WillExecutor servers**, which anticipates and
thus invalidates the transactions already sent to them.
> 👉 For a complete, codeaccurate breakdown of every change (add/remove heir,
> change percentages, fee, executor, date earlier/later) and whether it costs an
> onchain fee, see the companion
> [**Inheritance Options Guide**](../inheritance-options.md).
---
## RAW settings
If you set, for example, `RAW1d` and it is, say, 5 p.m., the plugin will not
execute the inheritance precisely 24 hours later (5 p.m. the next day) but will
roughly estimate the blockchain block number corresponding to that time — so
with a tolerance of a few hours.
> **NB:** Inheritance is executed on nodes, on average, with a tolerance of about
> 1 hour after the date/time set in the BAL plugin (because of the 11block
> Bitcoin median).
---
## Heirs sheet — quick test tip
If you want a quick test run, enter an upcoming legacy date/time (e.g. 18 hours
later). For such short intervals the **Check Alive** could create problems, so
set the Check Alive parameter **in the past** (a date before today) — e.g. a
previous month.
---
## Practical example — multiple dates
I have 2 children, **Peter** (12) and **Arnold** (16). I own 10 BTC and want
each to receive 5 BTC on their respective 18th birthdays.
In the current BAL plugin (1.0) it is **not** possible to set different delivery
dates — the inheritance date is unique. So in this case I prepare **two wallets**
of 5 BTC each and set the respective inheritance with the BAL plugin. Electrum
helps here, as it lets you easily create and manage multiple wallets.
---
## BAL plugin parameters
Accessible from the menu **Tools → Plugins**.
### Backup Transaction
![Figure 4 — Backup Transaction parameter](./images/fig4.png)
*Figure 4 — the Backup Transaction option (default: Disabled).*
**Backup Transaction** (default *Disabled*) is used to manage the inheritance
transaction (locktime tx) even **without** the BAL plugin automations that rely
on the online WillExecutor servers.
By enabling this option you also keep an **offline backup** of the signed legacy
transaction, useful in case all online WillExecutor servers are destroyed (a
highly unrealistic event).
The backup transaction is saved locally — on a USB stick or wherever you prefer.
For example, it can be delivered through a notary, trusted persons, or even
directly to the heir. (In the latter case, however, the heir becomes aware that
they will receive an inheritance on a specific date and amount, which could be
imprudent.)
The backup transaction, once delivered to the heir, can — at a later date than
the inheritance delivery time — be sent to the nodes via Electrum to receive the
funds in the inheritance wallet.
**Difficulties and risks of using only the backup transaction** (versus trusting
the automation of WillExecutor servers):
1. Risk of the transaction being **invalidated** later if you accidentally spend
even one satoshi from one of the wallets you presigned the legacy transaction
from.
2. Difficulty delivering the signed transaction to the heir (the heir would learn
about the inheritance and its value).
3. Each step must be handled by hand, with the risk of errors.
If you activated *Backup Transactions* in the parameters, this is visible in the
**[WILL]** screen with the status **NONE** in the WillExecutor column:
![Figure 5 — Backup transaction in the WILL screen](./images/fig5.png)
*Figure 5 — backup transaction shown with "NONE" willexecutor.*
Then, by rightclicking it and selecting **[Details]**, the following screen
appears, where you can save your transaction to your preferred medium (USB flash
drive, cloud, NAS, etc.):
![Figure 6 — Transaction details](./images/fig6.png)
*Figure 6 — transaction details / save dialog.*
---
## Wallet security — saving your will
To keep a copy of your will, simply save the wallet from Electrum
(**File → Save Backup**).
If, for example, your notebook is stolen or breaks down, just install Electrum on
a new computer together with the BAL plugin and open the previously saved wallet.
> **Remember** to save (and not lose) your wallet **password** on Electrum, or
> you will no longer be able to access the inheritance data saved with the
> wallet. If you restore your wallet from **SEED only**, you will regain access
> to your bitcoin funds but **lose the BAL inheritance data** saved with the
> wallet file.
You can also **export the heir list** to keep a printable copy of your
inheritance:
![Figure 7 — Export the heir list](./images/fig7.png)
*Figure 7 — exporting / printing the heir list.*
---
## WillExecutor service list
This window opens from the Electrum menu, **Tools → Willexecutor**, and shows
the official list of willexecutor servers.
If you want to make changes — such as adding an additional willexecutor server —
you can enter it manually or import a list of willexecutor servers (found on the
bitcointalk.org forum or on the official BAL website).
**Commands in the window:**
- **Ping:** checks which servers in the list are online — a **green dot** means
active.
- **Import:** imports a willexecutor list other than the default.
- **Export:** exports the list of willexecutor servers in your plugin (useful to
move it to another Electrum + BAL installation).
- **Add:** adds a willexecutor server manually.
### List columns
1. **URL** — the URL address of the willexecutor.
2. **Base Fee** — the commission/reward for the willexecutor. This reward lets
the willexecutor cover the cost of keeping the server online. The
willexecutor earns the base fee **only on the date of inheritance**, and only
if it is the **first** to send the transaction to the nodes — which sets in
motion a competition among willexecutors to earn the base fee. *(Example: I
set up an inheritance that will happen in 4 years; in that case the
willexecutor will only earn the fee in 4 years.)*
3. **Info** — server description or website link.
4. **Default Address** — the bitcoin wallet address where the base fee will be
sent.
5. **S** — server status. A **green dot** = server online.
**Rightclick** on a server line opens four subcommands:
![Figure 8 — Willexecutor rightclick menu](./images/fig8.png)
*Figure 8 — the willexecutor context menu.*
1. **Select** — rightclick the server, add the green check mark on the left, and
this willexecutor will be used in your inheritance.
2. **Edit** — edit the relevant column field.
3. **Ping** — verify that the server is online.
4. **Delete** — delete the server from the list.
---
## Privacy of (online) willexecutors
Transactions sent to willexecutor servers (*pushed*) by the BAL plugin are
stored on the servers. They are **not** publicly accessible (for privacy), but
from your BAL plugin you can check at any time whether the transaction is
properly stored on the servers: rightclick the inheritance transaction in the
**WILL** tab and choose **Check**. The transaction will be tagged in the
**Status** column as **Checked** if it is indeed online on the server.
### WILL tab columns
a. **Locktime** — the date of inheritance.
b. **Txid** — identification of the bitcoin transaction.
c. **WillExecutor** — address of the willexecutor.
d. **Status** — see the table below.
---
## Colour progression of transaction statuses
Transactions on the **WILL** page are coloured to conveniently display their
**status** of progress. Below are the colour progression states your legacy
transactions can have in the WILL tab, on each willexecutor that is online.
### Chromatic progression table
| # | Status | Meaning | Colour | HEX |
|---|--------|---------|--------|-----|
| 1 | **New** | TX new inheritance | White (transparent) | `#FFFFFF` |
| 2 | **Signed** | TX inheritance signed into the wallet | Azure | `#2BC8ED` |
| 3 | **Pushed** | TX sent to willexecutor | Azuregreen | `#73F3C8` |
| 4 | **Checked** | TX actually present in the willexecutor | Bright green | `#8AFA6C` |
| 5 | **Confirmed** | TX confirmed in the blockchain | Gray | `#BFBFBF` |
| 6 | **Pending** | TX awaiting confirmation on blockchain | Yellow | `#FFCE30` |
| 7 | **Failed** | Communication failure with willexecutor | Red | `#E83845` |
| 8 | **Invalidated** | UTXO input is no longer available | Orange | `#F87838` |
| 9 | **Replaced** | A backdatedlocktime transaction spends the same input | Violet | `#FF97E9` |
---
## WILL tab — commands
![Figure 9 — WILL tab and WillDetails window](./images/fig11.png)
*Figure 9 — the WILL tab with its commands.*
1. **Prepare** — prepares the inheritance and puts it on the list.
2. **Sign** — sign your legacy transaction with your private key (using your
wallet password or hardware key).
3. **Broadcast** — sends the inheritance transaction to the online WillExecutor
servers on your *WillExecutor Service List*.
4. **Display** — brings up the *WillDetails* window, where you can see the
transactions with all available data:
- Locktime (date of inheritance)
- Creation time
- Transaction fee (to the miners)
- Status (see table)
- Heirs
- Willexecutor (server address)
- Commission (base fee) — reward for the willexecutor
![Figure 10 — WillDetails window](./images/fig9.png)
*Figure 10 — the WillDetails window (Display).*
> **NB:** When you close Electrum, the plugin automatically proceeds to execute
> **Prepare → Sign → Broadcast** (if they have not already been completed) to
> ensure the inheritance is correctly executed.
---
## Using hardware keys
**Ledger, BitBox2, etc.** — all hardware keys that are compatible with and
recognised by Electrum are compatible with the BAL plugin.
---
## Insights (privacy)
### Caution: consolidation of UTXOs
When you send the entire contents of a wallet, you risk losing the privacy of
your UTXOs. It may be a good rule of thumb to execute the inheritance leaving a
small remainder to another wallet, to improve the privacy of the transaction —
especially if there is only one heir.
> **Example:** 99.7 % inheritance to the heir and 0.3 % to a random bitcoin
> address (e.g. taken randomly from a block explorer).
---
## Wallet inheritance behaviour when the balance / UTXO changes
If your wallet managed with the BAL plugin changes in balance — e.g. you send
additional funds or spend some — the inheritance **must be updated**.
The BAL plugin takes care, when closing Electrum, to check whether there has been
any such change (balance or UTXO) and then **updates the inheritance
automatically**.
Thanks to this you can use an *inheritanceready* wallet on Electrum even for
everyday Bitcoin transactions (possibly with a hardware key to sign), knowing
that in case of death the entire contents of the wallet will be sent to your
heirs.
If you use your **readonly** wallet on devices other than your Electrum (using
the public key `Zpub`/`Xpub`, e.g. to monitor funds remotely), any funds sent
directly into the wallet **will not** be added to the inheritance already set up.
To work around this, open your wallet on Electrum so the plugin can update the
inheritance UTXOs and resend them to the willexecutors, updated with the new
value.
> ⚠️ **WARNING:** If you use the same **SEED** on multiple devices (a behaviour
> always strongly discouraged), spending even one transaction of even one satoshi
> **invalidates** the inheritance, because it changes the wallet's UTXO structure
> and therefore the nodes discard the inheritance transaction.
---
About installing a willexecutor server or collaboration, send your request to:
**info@bitcoin-after.life**
---
<p align="right"><em>Signed,<br/>Svātantrya</em></p>