94 Commits
main ... main

Author SHA1 Message Date
672cacbb68 Home: static Will-Executors drawing
- Bar and dot animations removed (the bars grew across the text)
2026-11-06 19:51:48 +01:00
ee9d04db44 Home: Will-Executors strip under the animated guide, with the WeList invitation
- The 'beating heart' section moves up and merges with a drawn mini leaderboard (inline SVG, no image)
- Buttons to the Will-Executor list and to the Terms (run your own); manual links kept; old section removed
2026-11-06 19:49:13 +01:00
355c082359 Blog: the Binance hack and the case for self-custody
- new post binance-hack-not-your-keys.html with cover image
- cards on home and blog pages, latest-post pointer in the hero
- sitemap entry and Keep reading links in two related posts
2026-11-01 15:46:48 +01:00
b7d8371962 Homepage: lighter hero and guides band
- Guides card: white band under the hero, no frame around the card,
  soft shadow on the cover image only.
- Hero: new opt-in .hero-light class; the two notes lose their white
  boxes and the four stats lose their grey tiles. Existing rules untouched.
2026-10-29 16:14:50 +01:00
f7955800f6 Homepage: add 'How it works' card linking to the animated guides
- Add a card under the hero with the cover image, a quick tour button
  (8 steps) and a full guide button (15 steps); new .how-* CSS only.
- Publish the narrated guides in /how-it-works/, regenerated from the
  explainer source, without noindex; remove the hidden /preview-2a86b5/.
- Add both guide pages to sitemap.xml.
2026-10-29 15:48:16 +01:00
5d6fc4a491 Explainer preview: big "Tap to start" screen over the drawing
- browsers play sound only after a first tap: the screen makes it obvious
- a tap on it starts the story from step 1 with the voice
- text in English, or Italian / Spanish with ?lang=it / ?lang=es
2026-10-23 16:23:59 +02:00
89991cf35b Explainer preview: always light, no light/dark button
- the light/dark button is removed (owner: start light and stay light)
- the pages stay in the light theme also on phones set to dark mode
2026-10-23 16:21:42 +02:00
72a690cbc8 Explainer preview: always start light, add a light/dark button
- the pages start in the light theme also on phones set to dark mode
- new light/dark button next to the music and sound buttons
2026-10-23 16:21:24 +02:00
7e90fb5753 Move the explainer preview to English names, English first
- preview-2a86b5/ replaces anteprima-2a86b5/ (removed): index.html (full), simple.html (simple)
- audio folders renamed: voice-it/en/es and voice-full-it/en/es
- the pages always start in English; language buttons EN, IT, ES
- still hidden: noindex, not linked from the site
2026-10-23 16:08:02 +02:00
240da9e71f Add link-preview tags and cover to the explainer preview
- Open Graph and Twitter card tags in English on index.html and semplice.html
- cover.jpg (1200x630): the light-blue drawing with the title
- so Telegram, X and WhatsApp show title, description and image
2026-10-23 15:53:26 +02:00
ca29b6ca6a Add hidden preview of the narrated BAL PROTOCOL explainer
- anteprima-2a86b5/index.html: full 15-step version, light-blue, voice IT/EN/ES
- anteprima-2a86b5/semplice.html: simple 8-step version, light-blue, voice IT/EN/ES
- audio clips in voce*/ and voce-det*/ next to the pages
- noindex, not linked from menus or sitemap: preview to share by link only
2026-10-23 15:38:28 +02:00
e6657633e6 Fix 'More doors are opening': correct BAL Easy Heirs link and attribution, mention Electrum external plugins list 2026-10-11 17:00:05 +02:00
0c734d63f6 Add blog post: The Plugin Is Just the First Door, BAL Is a Protocol 2026-10-11 16:26:31 +02:00
fb572d0df1 New share image (og:image) with the homepage illustration 2026-10-06 12:55:31 +02:00
f54f0eae0e SEO: add Keep reading links between blog posts, plus manual and plugin links 2026-10-04 22:20:15 +02:00
7484f349f4 SEO: search-friendly titles and descriptions (max 155 chars) for older blog posts 2026-10-04 22:13:54 +02:00
6dbe95d022 Add blog post: Should You Tell Your Family About Your Bitcoin? 2026-10-04 22:03:27 +02:00
4d496a5ec9 SEO: add time and timezone to BlogPosting dates 2026-10-04 18:59:08 +02:00
92b8825fb5 SEO: list all blog posts in sitemap, add BlogPosting structured data 2026-10-04 18:54:51 +02:00
c8674d9bde Add blog post: Proof of Life Without Surveillance 2026-09-24 17:31:55 +02:00
93bd945007 Replace hero card logo with the inheritance-tree illustration
The BAL logo now sits at the base of the circuit tree (in place of the
generic Bitcoin coin), the art fills the card width, and the card's lower
edge lines up with the text column.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-19 15:58:39 +02:00
649087adc9 Surface the blog on the homepage
Add a latest-post pointer in the hero and a three-card blog section
after the FAQ. Both reuse existing classes; the blog was previously
reachable only from the navbar.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 14:48:27 +02:00
c3fe8db0e4 Add blog post: The Quietest Day
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 14:28:20 +02:00
0a19fb9d8f Fix link text: correct article title, not a nickname
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 11:16:17 +02:00
8c3df1516a Add blog post: Liquid Network's $320M Lesson
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 11:04:41 +02:00
1023b2efd7 Update manifesto.html
update link
2026-09-05 15:16:27 +00:00
c29f14ded1 Add blog post: What Can a Will-Executor Actually See? 2026-09-05 10:38:49 +02:00
c2dc7ef1f5 Upload files to "/"
added article willexecutor
2026-08-30 21:45:59 +00:00
1721096c8f Upload files to "blog/img"
img
2026-08-30 21:45:04 +00:00
620cc56cae Upload files to "blog"
run a willexecutor article
2026-08-30 21:44:27 +00:00
ef513b7b2c Upload files to "/"
Update blog index: add the Electrum plugin post
2026-08-23 13:27:18 +00:00
6c21a88f00 Upload files to "blog/img"
Add cover image for the Electrum plugin post
2026-08-23 13:24:41 +00:00
e69536c2d5 Upload files to "blog"
Add blog post: why we built BAL as an Electrum plugin
2026-08-23 13:24:15 +00:00
cf0597ea78 Update index.html 2026-08-18 21:25:40 +00:00
4808066d37 Update index.html
fix: use real release asset URL from Gitea API instead of hardcoded filename
2026-08-18 00:33:21 +00:00
ab29afa0eb Update blog.html
modified img blog
2026-08-17 08:54:27 +00:00
d7e1ca49f1 Update blog.html
Update blog index thumbnail for inheritance-when-trust-fails post
2026-08-17 08:53:21 +00:00
f9fd24e30d delete old image 2026-08-17 08:51:49 +00:00
0ace181b94 delete old image 2026-08-17 08:51:40 +00:00
3a0b9bd84e Update blog/inheritance-when-trust-fails.html
removed mid image
2026-08-17 08:46:24 +00:00
75a4d489c3 Update blog/inheritance-when-trust-fails.html
Update cover image
2026-08-17 08:45:46 +00:00
39a4bcf6b4 Upload files to "blog/img"
new img
2026-08-17 08:43:58 +00:00
f212265569 Add blog post: What Happens to Your Bitcoin When You're Gone?
- New article (Week 1): blog/what-happens-to-your-bitcoin.html, built on
  the existing it-all-starts-with-the-seed.html template/layout.
- Cover image: blog/img/what-happens-to-your-bitcoin-cover.webp (1600x900,
  WebP, ~76KB).
- blog.html: add the new post card at the top of the index (newest-first).
- blog.html: fix .post-card thumbnail crop -- object-fit:cover was cutting
  off image edges/text with no margin; switched to object-fit:contain with
  16px padding and a white frame so the full thumbnail is visible on all
  cards.
2026-08-15 15:55:09 +02:00
b3f8b3a6e8 Upload files to "pitura"
SEO optimize
2026-08-14 23:15:40 +00:00
47dbeaad3c Upload files to "/"
SEO
2026-08-14 23:14:58 +00:00
4d9643cddf Upload files to "/"
SEO
2026-08-14 23:14:34 +00:00
7be2c34cb8 Update blog/it-all-starts-with-the-seed.html
SEO
2026-08-14 23:13:54 +00:00
ae7d45c581 Update blog/inheritance-when-trust-fails.html
SEO
2026-08-14 23:10:39 +00:00
345747b125 Update blog.html
SEO
2026-08-14 23:09:46 +00:00
3dc156d7de Update manifesto.html
SEO
2026-08-14 23:08:53 +00:00
aa9be1376e Update index.html
SEO
2026-08-14 23:07:34 +00:00
cdd1716c12 Update blog/it-all-starts-with-the-seed.html
Brand protect from language translate
2026-08-03 16:52:09 +00:00
331b36fb2b Update blog/inheritance-when-trust-fails.html
brand protect from language translate
2026-08-03 16:50:32 +00:00
b7656dc250 Update blog.html
brand protect from language translate
2026-08-03 16:48:45 +00:00
0b6abe7a09 Update blog.html 2026-08-03 15:55:33 +00:00
a10d4957d9 Update blog/it-all-starts-with-the-seed.html 2026-08-03 15:52:30 +00:00
9deb45691e Update manifesto.html
Add translate=no 
to protect brand name from machine translation
2026-08-03 12:40:22 +00:00
8d2258db3e Update index.html
Add translate=no 
to protect brand name from machine translation
2026-08-03 12:39:40 +00:00
9be73c8008 Update blog.html 2026-08-03 12:20:38 +00:00
62aa69e816 Update blog.html
blog index - add seed article card
2026-08-03 12:19:12 +00:00
b97ca5005b Update blog/it-all-starts-with-the-seed.html
correct extension img
2026-08-03 12:11:31 +00:00
abd24c0e88 Upload files to "blog"
Add blog post: it all starts with the seed
2026-08-03 12:10:34 +00:00
223555f98f Upload files to "blog/img"
Add seed article cover
2026-08-03 12:09:24 +00:00
b8e33d09c4 Update index.html
remove server colums, and added link to server information in docs page.
2026-08-02 15:58:02 +00:00
998bce1148 Update index.html
max width Faq-more box
2026-08-02 15:38:59 +00:00
4d626608d7 Update index.html
reduced the number of FAQs on the homepage and moved them to the official documentation.
2026-08-02 15:27:36 +00:00
cac59258a4 Update manifesto.html
add link press-kit in footer.
2026-08-02 15:17:54 +00:00
60debcd061 Update index.html
added press-kit link in footer
2026-08-02 15:17:09 +00:00
39a79ad38e Update index.html
Added links to the official BAL documentation
2026-07-30 12:36:06 +00:00
46ec6428bb Update index.html
ix(release): correct plugin zip filename to bal_<tag>.zip
2026-07-25 16:48:17 +00:00
0df10e2a6a fix(pgp): rename public_key.gpg to svatantrya.asc and update links 2026-07-22 20:43:47 -04:00
55f21ee9a8 Update mobile-check.html 2026-07-21 22:35:19 +00:00
a0bea41876 Update blog/img/inheritance-mid.png 2026-07-21 22:29:22 +00:00
5342998996 Update blog/inheritance-when-trust-fails.html
patch javascript for Tor browsers
2026-07-21 16:54:42 +00:00
89af335dc5 Upload files to "/"
test mobile  view
2026-07-21 16:53:42 +00:00
b42f1ffd3e Update manifesto.html
javascript patch for Tor browser
2026-07-21 16:53:04 +00:00
78ad182ca6 Update index.html
javascript patch
2026-07-21 16:52:14 +00:00
baff204308 Update blog.html
javascript patch
2026-07-21 16:51:31 +00:00
0a84c0b33d Update blog/inheritance-when-trust-fails.html 2026-07-21 16:37:38 +00:00
cd209d9761 Update blog/img/inheritance-cover.png 2026-07-21 16:36:12 +00:00
19f88963bd Update blog.html 2026-07-21 16:35:28 +00:00
414f09d864 Upload files to "/"
Add blog section with the first article
2026-07-21 16:33:48 +00:00
2d2291f01e Update manifesto.html
Improve mobile readability on the manifesto page
2026-07-21 16:31:25 +00:00
636cf306c4 Update index.html
Improve mobile readability: hamburger menu, type scale, scrollable table
2026-07-21 16:30:23 +00:00
bitcoinafterlife
0a5ed14e9a Update FAQ #17: wallet compatibility (multisig unsupported, TrustedCoin unknown); fix download links; update subtitle to 17 answers 2026-07-19 11:08:08 +02:00
1608bbf406 Upload files to "/" 2026-07-17 18:22:26 +00:00
4a23a54df2 Update manifesto.html
Add favicon links to head
2026-07-17 18:20:47 +00:00
736ed9941a Update index.html
Add favicon links to head
2026-07-17 18:19:52 +00:00
56fdba228f Update index.html
Fix latest-release download links

The homepage built the download and signature URLs from an outdated
filename scheme (bal_<tag>.zip / .asc). Update them to the current
release asset names: bal_electrum_plugin_<tag>.zip and .zip.sig.
2026-07-17 17:15:19 +00:00
8d89d3b272 fix(hero): correct release asset filename pattern (bal_{tag}.zip) 2026-07-17 09:34:54 -04:00
d71ffa8927 feat(hero): dynamic latest release tag + direct download links 2026-07-17 09:31:44 -04:00
cede26f504 Update index.html
updated plugin version v0.6.0
2026-07-17 13:15:24 +00:00
0d592c7416 Update index.html
update versione 0.6.0
2026-07-17 13:13:28 +00:00
e2f26246cd Upload files to "/"
Changed the plugin version and adjusted the GUI
2026-07-17 00:46:59 +00:00
111 changed files with 7785 additions and 108 deletions

437
blog.html Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,362 @@
<!DOCTYPE html>
<html lang="en" class="nojs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bitcoin Inheritance Protocol: BAL Is Not Just a Plugin — Bitcoin After Life</title>
<meta name="description" content="The Electrum plugin is only the first way to use Bitcoin After Life. The protocol and its Will-Executors can carry much more than inheritance.">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Bitcoin After Life">
<meta property="og:title" content="Bitcoin Inheritance Protocol: BAL Is Not Just a Plugin — Bitcoin After Life">
<meta property="og:description" content="The Electrum plugin is only the first way to use Bitcoin After Life. The protocol and its Will-Executors can carry much more than inheritance.">
<meta property="og:url" content="https://bitcoin-after.life/blog/bal-is-a-protocol-not-a-plugin.html">
<meta property="og:image" content="https://bitcoin-after.life/blog/img/bal-protocol-not-plugin-cover.webp">
<meta property="og:image:width" content="1600">
<meta property="og:image:height" content="900">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@BitcoinAfterLif">
<meta name="twitter:title" content="Bitcoin Inheritance Protocol: BAL Is Not Just a Plugin — Bitcoin After Life">
<meta name="twitter:description" content="The Electrum plugin is only the first way to use Bitcoin After Life. The protocol and its Will-Executors can carry much more than inheritance.">
<meta name="twitter:image" content="https://bitcoin-after.life/blog/img/bal-protocol-not-plugin-cover.webp">
<meta name="theme-color" content="#2d6cdf">
<link rel="canonical" href="https://bitcoin-after.life/blog/bal-is-a-protocol-not-a-plugin.html">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "The Plugin Is Just the First Door: BAL Is a Protocol, and Will-Executors Are Its Foundation",
"description": "The Electrum plugin is only the first way to use Bitcoin After Life. The protocol and its Will-Executors can carry much more than inheritance.",
"image": "https://bitcoin-after.life/blog/img/bal-protocol-not-plugin-cover.webp",
"datePublished": "2026-10-11T18:00:00+02:00",
"dateModified": "2026-10-11T18:00:00+02:00",
"author": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/"
},
"publisher": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/",
"logo": {
"@type": "ImageObject",
"url": "https://bitcoin-after.life/pitura/logo/Logo_nero.svg"
}
},
"mainEntityOfPage": "https://bitcoin-after.life/blog/bal-is-a-protocol-not-a-plugin.html",
"inLanguage": "en"
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Bitcoin After Life",
"item": "https://bitcoin-after.life/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://bitcoin-after.life/blog.html"
},
{
"@type": "ListItem",
"position": 3,
"name": "The Plugin Is Just the First Door: BAL Is a Protocol, and Will-Executors Are Its Foundation",
"item": "https://bitcoin-after.life/blog/bal-is-a-protocol-not-a-plugin.html"
}
]
}
</script>
<link rel="icon" type="image/x-icon" href="/pitura/ico/Logo_nero.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/pitura/ico/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/pitura/ico/favicon-16.png">
<script>
/* Runs before first paint: removes the `nojs` class set on <html>, so the
mobile menu button is only shown when it can actually work. */
document.documentElement.classList.remove('nojs');
</script>
<style>
:root{
--maxw:1120px;
--radius:10px;
--bg:#eef1f4;
--panel:#ffffff;
--ink:#1a2027;
--muted:#5b6672;
--line:#dfe4ea;
--line-strong:#cbd2da;
--accent:#2d6cdf;
--accent-soft:#e6eefc;
--display:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--body:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
--shadow:0 1px 2px rgba(20,30,50,.05);
--shadow-lg:0 6px 20px rgba(20,30,50,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);
line-height:1.55;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
/* ---------- Top bar (shared with home and manifesto) ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.86);
backdrop-filter:saturate(150%) blur(8px);border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:18px;height:60px}
.topbar .logo{display:flex;align-items:center;gap:10px;font-family:var(--display);
font-weight:600;color:var(--ink)}
.topbar .logo img{width:30px;height:30px;display:block}
.topbar .logo span{font-size:15px;letter-spacing:-.01em}
.topbar nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
.topbar nav a{color:var(--muted);font-size:13px;padding:7px 11px;border-radius:7px}
.topbar nav a:hover{color:var(--ink);background:var(--accent-soft);text-decoration:none}
.topbar nav a.active{color:var(--accent);font-weight:600;border:1px solid #cfe0fb;
background:var(--accent-soft)}
.topbar .x{color:var(--ink);font-weight:600}
.navtoggle{
display:none;margin-left:auto;width:44px;height:44px;flex:none;
align-items:center;justify-content:center;
background:var(--panel);border:1px solid var(--line-strong);border-radius:9px;
color:var(--ink);cursor:pointer;padding:0;
}
.navtoggle:hover{border-color:var(--accent);color:var(--accent)}
.navtoggle .bars{display:block;width:18px;height:2px;background:currentColor;position:relative}
.navtoggle .bars::before,.navtoggle .bars::after{
content:"";position:absolute;left:0;width:18px;height:2px;background:currentColor}
.navtoggle .bars::before{top:-6px}
.navtoggle .bars::after{top:6px}
.navtoggle[aria-expanded="true"] .bars{background:transparent}
.navtoggle[aria-expanded="true"] .bars::before{top:0;transform:rotate(45deg)}
.navtoggle[aria-expanded="true"] .bars::after{top:0;transform:rotate(-45deg)}
/* ---------- Footer (shared) ---------- */
footer{border-top:1px solid var(--line);margin-top:56px;padding:34px 0 40px;
color:var(--muted);font-size:14px;background:var(--panel)}
footer .sig{font-family:var(--display);font-weight:600;color:var(--ink);font-size:16px}
footer .links{display:flex;gap:16px;flex-wrap:wrap;margin:14px 0}
footer .built{font-size:13px;color:var(--muted);margin-top:8px}
@media (max-width:900px){
.navtoggle{display:inline-flex}
.topbar nav{
position:absolute;top:100%;left:0;right:0;
margin-left:0;display:none;flex-direction:column;gap:2px;flex-wrap:nowrap;
background:var(--panel);border-bottom:1px solid var(--line);
box-shadow:var(--shadow-lg);padding:10px 20px 16px;
}
.topbar nav.open{display:flex}
.topbar nav a{font-size:15.5px;padding:0 12px;min-height:44px;
display:flex;align-items:center;border-radius:8px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/*
Without JavaScript the panel cannot be toggled, so the links are shown
inline. On narrow screens they wrap under the logo and the bar is allowed
to grow, instead of being clipped by the fixed 60px height.
*/
.nojs .navtoggle{display:none}
.nojs .topbar nav{position:static;display:flex;flex-direction:row;flex-wrap:wrap;
box-shadow:none;border-bottom:0;padding:0;margin-left:auto;background:transparent}
@media (max-width:900px){
.nojs .topbar .wrap{height:auto;min-height:56px;flex-wrap:wrap;padding-bottom:8px;gap:10px}
.nojs .topbar nav{margin-left:0;width:100%;gap:4px 6px}
.nojs .topbar nav a{font-size:14.5px;min-height:40px;padding:0 10px;
display:flex;align-items:center;border:1px solid var(--line);border-radius:8px}
}
.post-head{padding:44px 0 30px;border-bottom:1px solid var(--line);
background:radial-gradient(820px 280px at 50% -40%,var(--accent-soft),transparent 70%)}
.post-head .wrap{max-width:760px}
.post-head .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.14em;
text-transform:uppercase;color:var(--accent);display:block;margin-bottom:14px}
.post-head h1{font-family:var(--display);font-weight:600;font-size:40px;
letter-spacing:-.02em;line-height:1.12;margin:0 0 14px}
.post-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
font-size:13px;color:var(--muted)}
.post-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--line-strong)}
.article{max-width:760px;margin:0 auto;padding:34px 20px 8px}
.article p{font-size:17px;line-height:1.8;color:#36404b;margin:0 0 20px}
.article p strong{color:var(--ink);font-weight:600}
.article h2{font-family:var(--display);font-weight:600;font-size:25px;
letter-spacing:-.01em;margin:38px 0 14px;padding-bottom:10px;
border-bottom:1px solid var(--line-strong)}
.article ol{padding-left:22px;margin:0 0 20px}
.article li{font-size:17px;line-height:1.8;color:#36404b;margin-bottom:14px}
.article li strong{color:var(--ink);font-weight:600}
.article figure{margin:30px 0}
.article figure img{width:100%;height:auto;display:block;border-radius:var(--radius);
border:1px solid var(--line);box-shadow:var(--shadow)}
.article hr{border:0;border-top:1px solid var(--line-strong);margin:34px 0 22px}
.article .disclaimer{font-size:14px;color:var(--muted);font-style:italic;line-height:1.7}
.back{max-width:760px;margin:26px auto 0;padding:0 20px 8px}
.back a{font-size:14px;font-weight:600}
@media (max-width:700px){
.post-head{padding:30px 0 24px}
.post-head h1{font-size:29px}
.article{padding:28px 18px 8px}
.article h2{font-size:22px;margin-top:32px}
.article figure{margin:24px -18px}
.article figure img{border-radius:0;border-left:0;border-right:0}
}
@media (max-width:400px){
.post-head h1{font-size:25px}
.wrap{padding:0 15px}
.article{padding:24px 16px 8px}
.article figure{margin:22px -16px}
}
</style>
</head>
<body>
<div class="topbar">
<div class="wrap">
<a class="logo" href="../index.html"><img src="../pitura/logo/Logo_nero.svg" alt="Bitcoin After Life logo"><span translate="no">Bitcoin After Life</span></a>
<button class="navtoggle" id="navToggle" type="button"
aria-expanded="false" aria-controls="mainNav" aria-label="Open menu">
<span class="bars"></span>
</button>
<nav id="mainNav">
<a href="../index.html#features">Features</a>
<a href="../index.html#how">How it works</a>
<a href="../index.html#plugin">Plugin</a>
<a href="../index.html#faq">FAQ</a>
<a class="active" href="../blog.html">Blog</a>
<a href="../manifesto.html">Manifesto</a>
<a class="x" href="https://x.com/BitcoinAfterLif" title="@BitcoinAfterLif on X">@X</a>
</nav>
</div>
</div>
<main>
<header class="post-head">
<div class="wrap">
<span class="eyebrow">Blog</span>
<h1>The Plugin Is Just the First Door: BAL Is a Protocol, and Will-Executors Are Its Foundation</h1>
<div class="post-meta">
<time datetime="2026-10-11">11 October 2026</time>
<span class="dot"></span>
<span translate="no">Bitcoin After Life</span>
<span class="dot"></span>
<span>6 min read</span>
</div>
</div>
</header>
<article class="article">
<figure>
<img src="img/bal-protocol-not-plugin-cover.webp" width="1600" height="900" fetchpriority="high" alt="An open door with the Bitcoin symbol, other doors still closed beside it, all standing on three connected servers">
</figure>
<p>When people discover Bitcoin After Life, they usually describe it the same way: "the inheritance plugin for Electrum". That is true. It is also the smallest possible way to describe it.</p>
<p>The plugin is the first door. Behind it there is a Bitcoin inheritance protocol that does not know what an inheritance is, a network of servers that do one simple thing very well, and a set of possibilities we are only beginning to build. This article is about what is behind the door.</p>
<h2>What the protocol actually is</h2>
<p>Strip Bitcoin After Life down to its parts and you find three of them.</p>
<p>The first is a <strong>transaction you sign today that cannot be used until a date you choose</strong>. Bitcoin has supported this for years through the locktime field; the network simply refuses the transaction until the time comes. Nothing exotic, no new opcodes, no sidechain: we wrote about that choice in <a href="why-electrum-and-timelocks.html">Why We Built BAL as an Electrum Plugin</a>.</p>
<p>The second is a <strong>network of independent servers, the Will-Executors</strong>, that hold your signed transaction and broadcast it the moment it becomes valid. They do not control it. They cannot change it. They cannot spend it early, because the network would reject it.</p>
<p>The third is <strong>Bitcoin itself</strong>, which decides when the transaction is valid, and makes sure that only one version of it can ever be spent.</p>
<p>None of the three knows about the others, and none of them knows what the transaction is for. The plugin is what assembles them for one specific purpose: making sure your heirs receive your coins on a date you set. The protocol underneath is indifferent to that purpose. A time-locked transaction, held by a server and broadcast on time, is a general tool. Inheritance is just the first thing we built with it.</p>
<h2>What a Will-Executor really does</h2>
<p>A Will-Executor does three things. It receives a signed transaction. It keeps it. When the locktime passes, it broadcasts it, and if its broadcast is the one that confirms, it collects the fee written inside the transaction.</p>
<p>That is the whole job. A Will-Executor does not see your balance, does not hold a key, does not know your name, and cannot tell whether the transaction it holds is a will, a gift or a payment. We described exactly what it can and cannot see in <a href="what-a-will-executor-can-see.html">What Can a Will-Executor Actually See?</a>.</p>
<p>This simplicity is not a limitation. It is the point. A server that does one thing, and needs to know nothing about who is asking, can serve any wallet, any interface and any service built on top of the protocol. It does not need to be updated when a new use appears, because it never understood the old one.</p>
<h2>Bitcoin recurring payments without a custodian</h2>
<p>Here is one of those new uses.</p>
<p>Imagine you want to send a fixed amount of sats every month to a child who is studying abroad. Or pay a rent. Or support a project you believe in, for a year, without having to remember it twelve times.</p>
<p>Today the honest options are poor. You can do it by hand every month, and forget. You can leave the coins with a service that pays on your behalf, and give that service your keys, your balance and your trust. Or you can give up and use the banking system.</p>
<p>The protocol offers a fourth way. You sign twelve transactions today: the same amount, the same recipient, each one with a different locktime, one per month. You hand them to the Will-Executors. Then you do nothing. Each month, one transaction becomes valid, a server broadcasts it, and the sats arrive.</p>
<p>Notice what did not happen. Nobody held your funds: the coins stayed in your wallet, under your keys, until each payment was due. Nobody could change the amount or the recipient, because every transaction was already signed. Nobody could stop a payment except you, by spending the coins it depends on, which is exactly how a will is cancelled today. And if you do spend those coins for something else, the plugin rebuilds the remaining series the next time you close Electrum, the same way it keeps an inheritance current.</p>
<figure>
<a href="img/bal-protocol-recurring-payments.webp" target="_blank" rel="noopener"><img src="img/bal-protocol-recurring-payments.webp" width="1440" height="1120" loading="lazy" alt="Twelve transactions signed once, one per month, each valid on a different month and sent from the sender&#x27;s wallet to the recipient&#x27;s wallet"></a>
<figcaption>Click or tap the diagram to open it full size.</figcaption>
</figure>
<p>The same pattern turns an inheritance into something gentler. Instead of a single delivery on a single day, a will can be split into instalments: a part every year, for as long as you choose. For an heir who has never handled bitcoin, receiving it gradually is often safer than receiving it all at once.</p>
<p>We want to be precise about the status of this. <strong>The protocol already allows it; the interfaces that make it simple are being built, and are not public yet.</strong> We mention it here because it shows what the protocol is, not to announce a product.</p>
<h2>More doors are opening</h2>
<p>The Electrum plugin was the first interface, and it is listed among the <a href="https://plugins.electrum.org/plugins.html">external plugins on the Electrum Wallet plugins page</a>. <a href="https://github.com/ManX-SAFE21/BALeasyHeirs">BAL Easy Heirs</a> was the second: an app built not by us but by independent developers who believe in the BAL protocol, for the person on the receiving end. Other wallets and services are now being developed on the same protocol, again by others who have already started writing apps for it, because the protocol is open and nobody needs our permission to use it.</p>
<p>Every one of those doors leads to the same room. Whatever interface signs the transaction, it is the same kind of transaction, held by the same Will-Executors, broadcast by the same rule. A server that joined the network to serve inheritances will serve recurring payments, instalments, and whatever comes next, without changing a line.</p>
<h2>Why running a Will-Executor is a bet on the whole protocol</h2>
<p>Today a Will-Executor broadcasts inheritance transactions. By their nature those are rare: a will executes once, years after it was signed.</p>
<p>Recurring payments change the arithmetic. A single user setting up a monthly payment produces twelve transactions a year. An inheritance paid in instalments produces one a year for a decade. Each of those transactions carries a fee for the server that broadcasts it first, paid in bitcoin, only on success. The more that is built on the protocol, the more transactions pass through the Will-Executors, and the more there is to earn for the servers that are there, reliable, and quick.</p>
<p>The servers that are there first also gain something that cannot be bought later: a track record. Users choose their Will-Executors from <a href="https://welist.bitcoin-after.life/">welist</a>, and a server that has been broadcasting on time for years is the one people pick. How to run one, and what it costs, is in <a href="run-a-will-executor.html">Run a Will-Executor</a>.</p>
<h2>Two invitations</h2>
<p>The protocol has no owner. It is a way of using Bitcoin that anyone can adopt.</p>
<p>If you run infrastructure, run a Will-Executor. The work is small, the role is honest, and every new use of the protocol increases what it earns.</p>
<p>If you build software, build a door. The plugin is one way in; it will not be the last. A wallet that signs time-locked transactions and hands them to Will-Executors is already a Bitcoin After Life client, whether or not we ever hear about it.</p>
<p>The inheritance plugin is how most people will meet the protocol. It is not where the protocol ends.</p>
<aside class="related">
<h2>Keep reading</h2>
<ul style="padding-left:22px">
<li><a href="run-a-will-executor.html">Run a Will-Executor: Earn Bitcoin Fees by Powering Decentralized Inheritance</a></li>
<li><a href="what-a-will-executor-can-see.html">What Can a Will-Executor Actually See? Privacy in the BAL Protocol</a></li>
<li><a href="why-electrum-and-timelocks.html">Why We Built BAL as an Electrum Plugin — and Why Timelocks Remove the Need for Trust</a></li>
</ul>
<p>New to Bitcoin After Life? Read the <a href="https://bitcoin-after.life/docs/">user manual</a> or <a href="../index.html#plugin">get the Electrum plugin</a>.</p>
</aside>
<hr>
<p class="disclaimer">Bitcoin After Life is open source and Bitcoin-only. Explore the plugin and the server on <a href="https://bitcoin-after.life/gitea/bitcoinafterlife" target="_blank" rel="noopener">Gitea</a> and read the full manual at <a href="https://bitcoin-after.life/docs/" target="_blank" rel="noopener">bitcoin-after.life/docs</a>.</p>
</article>
<div class="back">
<a href="../blog.html">← Back to the blog</a>
</div>
</main>
<footer>
<div class="wrap">
<div class="sig">Svātantrya</div>
<div>Signed — <span translate="no">Bitcoin After Life</span> Protocol</div>
<div class="links">
<a href="https://bitcoin-after.life">bitcoin-after.life</a>
<a href="mailto:info@bitcoin-after.life">info@bitcoin-after.life</a>
<a href="https://x.com/BitcoinAfterLif">@BitcoinAfterLif</a>
<a href="https://bitcoin-after.life/pgp">PGP Key</a>
<a href="https://bitcoin-after.life/gitea/bitcoinafterlife">Source Code</a>
</div>
<div class="built">Built with ₿itcoin. No FIAT was used in the making of this protocol.</div>
</div>
</footer>
<script>
/* Mobile menu toggle -- identical behaviour across all pages. */
(function () {
const toggle = document.getElementById('navToggle');
const nav = document.getElementById('mainNav');
if (!toggle || !nav) return;
function setOpen(open) {
nav.classList.toggle('open', open);
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
}
toggle.addEventListener('click', function () {
setOpen(!nav.classList.contains('open'));
});
nav.addEventListener('click', function (e) {
if (e.target.tagName === 'A') setOpen(false);
});
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') setOpen(false);
});
})();
</script>
</body>
</html>

View File

@@ -0,0 +1,349 @@
<!DOCTYPE html>
<html lang="en" class="nojs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The $6 Billion Binance Hack and the Case for Self-Custody — Bitcoin After Life</title>
<meta name="description" content="Hackers took $6.3 billion from Binance in twenty minutes. Issuers froze $3 billion of it with a click — the Bitcoin, nobody could. Why BAL is Bitcoin-only.">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Bitcoin After Life">
<meta property="og:title" content="The $6 Billion Binance Hack and the Case for Self-Custody — Bitcoin After Life">
<meta property="og:description" content="Hackers took $6.3 billion from Binance in twenty minutes. Issuers froze $3 billion of it with a click — the Bitcoin, nobody could. Why BAL is Bitcoin-only.">
<meta property="og:url" content="https://bitcoin-after.life/blog/binance-hack-not-your-keys.html">
<meta property="og:image" content="https://bitcoin-after.life/blog/img/binance-hack-not-your-keys-cover.webp">
<meta property="og:image:width" content="1600">
<meta property="og:image:height" content="900">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@BitcoinAfterLif">
<meta name="twitter:title" content="The $6 Billion Binance Hack and the Case for Self-Custody — Bitcoin After Life">
<meta name="twitter:description" content="Hackers took $6.3 billion from Binance in twenty minutes. Issuers froze $3 billion of it with a click — the Bitcoin, nobody could. Why BAL is Bitcoin-only.">
<meta name="twitter:image" content="https://bitcoin-after.life/blog/img/binance-hack-not-your-keys-cover.webp">
<meta name="theme-color" content="#2d6cdf">
<link rel="canonical" href="https://bitcoin-after.life/blog/binance-hack-not-your-keys.html">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Six Billion Dollars in Twenty Minutes: What the Binance Hack Proves About Keys",
"description": "Hackers took $6.3 billion from Binance in twenty minutes. Issuers froze $3 billion of it with a click — the Bitcoin, nobody could. Why BAL is Bitcoin-only.",
"image": "https://bitcoin-after.life/blog/img/binance-hack-not-your-keys-cover.webp",
"datePublished": "2026-11-01T18:00:00+01:00",
"dateModified": "2026-11-01T18:00:00+01:00",
"author": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/"
},
"publisher": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/",
"logo": {
"@type": "ImageObject",
"url": "https://bitcoin-after.life/pitura/logo/Logo_nero.svg"
}
},
"mainEntityOfPage": "https://bitcoin-after.life/blog/binance-hack-not-your-keys.html",
"inLanguage": "en"
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Bitcoin After Life",
"item": "https://bitcoin-after.life/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://bitcoin-after.life/blog.html"
},
{
"@type": "ListItem",
"position": 3,
"name": "Six Billion Dollars in Twenty Minutes: What the Binance Hack Proves About Keys",
"item": "https://bitcoin-after.life/blog/binance-hack-not-your-keys.html"
}
]
}
</script>
<link rel="icon" type="image/x-icon" href="/pitura/ico/Logo_nero.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/pitura/ico/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/pitura/ico/favicon-16.png">
<script>
/* Runs before first paint: removes the `nojs` class set on <html>, so the
mobile menu button is only shown when it can actually work. */
document.documentElement.classList.remove('nojs');
</script>
<style>
:root{
--maxw:1120px;
--radius:10px;
--bg:#eef1f4;
--panel:#ffffff;
--ink:#1a2027;
--muted:#5b6672;
--line:#dfe4ea;
--line-strong:#cbd2da;
--accent:#2d6cdf;
--accent-soft:#e6eefc;
--display:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--body:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
--shadow:0 1px 2px rgba(20,30,50,.05);
--shadow-lg:0 6px 20px rgba(20,30,50,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);
line-height:1.55;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
/* ---------- Top bar (shared with home and manifesto) ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.86);
backdrop-filter:saturate(150%) blur(8px);border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:18px;height:60px}
.topbar .logo{display:flex;align-items:center;gap:10px;font-family:var(--display);
font-weight:600;color:var(--ink)}
.topbar .logo img{width:30px;height:30px;display:block}
.topbar .logo span{font-size:15px;letter-spacing:-.01em}
.topbar nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
.topbar nav a{color:var(--muted);font-size:13px;padding:7px 11px;border-radius:7px}
.topbar nav a:hover{color:var(--ink);background:var(--accent-soft);text-decoration:none}
.topbar nav a.active{color:var(--accent);font-weight:600;border:1px solid #cfe0fb;
background:var(--accent-soft)}
.topbar .x{color:var(--ink);font-weight:600}
.navtoggle{
display:none;margin-left:auto;width:44px;height:44px;flex:none;
align-items:center;justify-content:center;
background:var(--panel);border:1px solid var(--line-strong);border-radius:9px;
color:var(--ink);cursor:pointer;padding:0;
}
.navtoggle:hover{border-color:var(--accent);color:var(--accent)}
.navtoggle .bars{display:block;width:18px;height:2px;background:currentColor;position:relative}
.navtoggle .bars::before,.navtoggle .bars::after{
content:"";position:absolute;left:0;width:18px;height:2px;background:currentColor}
.navtoggle .bars::before{top:-6px}
.navtoggle .bars::after{top:6px}
.navtoggle[aria-expanded="true"] .bars{background:transparent}
.navtoggle[aria-expanded="true"] .bars::before{top:0;transform:rotate(45deg)}
.navtoggle[aria-expanded="true"] .bars::after{top:0;transform:rotate(-45deg)}
/* ---------- Footer (shared) ---------- */
footer{border-top:1px solid var(--line);margin-top:56px;padding:34px 0 40px;
color:var(--muted);font-size:14px;background:var(--panel)}
footer .sig{font-family:var(--display);font-weight:600;color:var(--ink);font-size:16px}
footer .links{display:flex;gap:16px;flex-wrap:wrap;margin:14px 0}
footer .built{font-size:13px;color:var(--muted);margin-top:8px}
@media (max-width:900px){
.navtoggle{display:inline-flex}
.topbar nav{
position:absolute;top:100%;left:0;right:0;
margin-left:0;display:none;flex-direction:column;gap:2px;flex-wrap:nowrap;
background:var(--panel);border-bottom:1px solid var(--line);
box-shadow:var(--shadow-lg);padding:10px 20px 16px;
}
.topbar nav.open{display:flex}
.topbar nav a{font-size:15.5px;padding:0 12px;min-height:44px;
display:flex;align-items:center;border-radius:8px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/*
Without JavaScript the panel cannot be toggled, so the links are shown
inline. On narrow screens they wrap under the logo and the bar is allowed
to grow, instead of being clipped by the fixed 60px height.
*/
.nojs .navtoggle{display:none}
.nojs .topbar nav{position:static;display:flex;flex-direction:row;flex-wrap:wrap;
box-shadow:none;border-bottom:0;padding:0;margin-left:auto;background:transparent}
@media (max-width:900px){
.nojs .topbar .wrap{height:auto;min-height:56px;flex-wrap:wrap;padding-bottom:8px;gap:10px}
.nojs .topbar nav{margin-left:0;width:100%;gap:4px 6px}
.nojs .topbar nav a{font-size:14.5px;min-height:40px;padding:0 10px;
display:flex;align-items:center;border:1px solid var(--line);border-radius:8px}
}
.post-head{padding:44px 0 30px;border-bottom:1px solid var(--line);
background:radial-gradient(820px 280px at 50% -40%,var(--accent-soft),transparent 70%)}
.post-head .wrap{max-width:760px}
.post-head .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.14em;
text-transform:uppercase;color:var(--accent);display:block;margin-bottom:14px}
.post-head h1{font-family:var(--display);font-weight:600;font-size:40px;
letter-spacing:-.02em;line-height:1.12;margin:0 0 14px}
.post-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
font-size:13px;color:var(--muted)}
.post-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--line-strong)}
.article{max-width:760px;margin:0 auto;padding:34px 20px 8px}
.article p{font-size:17px;line-height:1.8;color:#36404b;margin:0 0 20px}
.article p strong{color:var(--ink);font-weight:600}
.article h2{font-family:var(--display);font-weight:600;font-size:25px;
letter-spacing:-.01em;margin:38px 0 14px;padding-bottom:10px;
border-bottom:1px solid var(--line-strong)}
.article ol{padding-left:22px;margin:0 0 20px}
.article li{font-size:17px;line-height:1.8;color:#36404b;margin-bottom:14px}
.article li strong{color:var(--ink);font-weight:600}
.article figure{margin:30px 0}
.article figure img{width:100%;height:auto;display:block;border-radius:var(--radius);
border:1px solid var(--line);box-shadow:var(--shadow)}
.article hr{border:0;border-top:1px solid var(--line-strong);margin:34px 0 22px}
.article .disclaimer{font-size:14px;color:var(--muted);font-style:italic;line-height:1.7}
.back{max-width:760px;margin:26px auto 0;padding:0 20px 8px}
.back a{font-size:14px;font-weight:600}
@media (max-width:700px){
.post-head{padding:30px 0 24px}
.post-head h1{font-size:29px}
.article{padding:28px 18px 8px}
.article h2{font-size:22px;margin-top:32px}
.article figure{margin:24px -18px}
.article figure img{border-radius:0;border-left:0;border-right:0}
}
@media (max-width:400px){
.post-head h1{font-size:25px}
.wrap{padding:0 15px}
.article{padding:24px 16px 8px}
.article figure{margin:22px -16px}
}
</style>
</head>
<body>
<div class="topbar">
<div class="wrap">
<a class="logo" href="../index.html"><img src="../pitura/logo/Logo_nero.svg" alt="Bitcoin After Life logo"><span translate="no">Bitcoin After Life</span></a>
<button class="navtoggle" id="navToggle" type="button"
aria-expanded="false" aria-controls="mainNav" aria-label="Open menu">
<span class="bars"></span>
</button>
<nav id="mainNav">
<a href="../index.html#features">Features</a>
<a href="../index.html#how">How it works</a>
<a href="../index.html#plugin">Plugin</a>
<a href="../index.html#faq">FAQ</a>
<a class="active" href="../blog.html">Blog</a>
<a href="../manifesto.html">Manifesto</a>
<a class="x" href="https://x.com/BitcoinAfterLif" title="@BitcoinAfterLif on X">@X</a>
</nav>
</div>
</div>
<main>
<header class="post-head">
<div class="wrap">
<span class="eyebrow">Blog</span>
<h1>Six Billion Dollars in Twenty Minutes: What the Binance Hack Proves About Keys</h1>
<div class="post-meta">
<time datetime="2026-11-01">1 November 2026</time>
<span class="dot"></span>
<span translate="no">Bitcoin After Life</span>
<span class="dot"></span>
<span>6 min read</span>
</div>
</div>
</header>
<article class="article">
<figure>
<img src="img/binance-hack-not-your-keys-cover.webp" width="1600" height="900" fetchpriority="high" alt="Tether and USDC coins frozen inside blocks of ice, while a Bitcoin coin stands free beside its key">
</figure>
<p>On 29 October 2026, at around four in the afternoon New York time, the largest theft in the history of money began. It lasted about twenty minutes. When it was over, roughly <a href="https://www.cnbc.com/2026/10/30/binance-hack-stolen-crypto-recovery.html" target="_blank" rel="noopener">$6.3 billion in digital assets</a> had left the hot wallets of Binance, the world's largest cryptocurrency exchange, across ten different blockchains. Investigators at <a href="https://www.trmlabs.com/resources/blog/north-korea-steals-usd-6-36-billion-from-binance-in-the-largest-hack-in-history" target="_blank" rel="noopener">TRM Labs</a> attribute the attack to TraderTraitor, a group tied to North Korea's Lazarus — the same actors behind the Bybit hack of 2025, which held the previous record at a quarter of this size.</p>
<p>Binance, to its credit, responded the way a serious company responds. It halted trading, suspended withdrawals, promised to cover every loss from its own reserves, and within days said it had replenished most of what was taken. If that holds, no customer will lose a single satoshi.</p>
<p>This article is not an attack on Binance. It is about what those twenty minutes revealed: three things that were always true, and that six billion dollars made impossible to ignore.</p>
<h2>One building held six billion dollars</h2>
<p>An account on an exchange is not a wallet. It is an entry in a company's database: the coins sit in the company's wallets, under the company's keys, and what you own is a promise. Most days the difference is invisible. On 29 October it became the whole story — because when the keys that matter are someone else's, so is the decision of what happens next.</p>
<p>That evening, millions of people who had done nothing wrong discovered that their balance had an off switch, and that the switch was in someone else's hands. Withdrawals were suspended for days. The happy ending — Binance absorbing the loss — depended entirely on one company being both solvent and honest. This time it was. <strong>"Not your keys, not your coins"</strong> stopped being a slogan that evening and became a line item: $6.3 billion, gone in the time it takes to drink a coffee.</p>
<h2>Three billion dollars frozen with a click</h2>
<p>While the stolen funds were still moving, something remarkable happened. Tether and Circle — the companies behind the stablecoins USDT and USDC — <a href="https://www.npr.org/2026/10/31/nx-s1-6024426/binance-crypto-heist-cyber-criminals-north-korea" target="_blank" rel="noopener">froze roughly $3 billion</a> of the loot. Tether blocked the attacker's haul less than two hours after the theft. It was the right thing to do, and it will likely save Binance billions.</p>
<p>But stop and look at what that click means. A stablecoin is an entry in an issuer's ledger. The issuer can mark any address unspendable — remotely, instantly, without your key and without asking you. This week that power was pointed at thieves. The mechanism, however, does not know the difference between a thief and you: it simply executes a decision taken in an office. Issuers freeze addresses routinely, at the request of governments and courts around the world.</p>
<p>A banknote can be stolen, but it cannot be switched off from a desk on another continent. A freezable token can. In that precise sense, <strong>a token with a freeze function is weaker than cash</strong>: it looks like money right up to the moment someone decides it isn't.</p>
<h2>The coins nobody could freeze</h2>
<p>About $1.5 billion of the stolen funds were in bitcoin. That part was not frozen — not because nobody tried, but because <strong>there is nobody to call</strong>. Bitcoin has no issuer, no administrator, no freeze function. The only weapons against the thieves are the public ledger, which records every move forever, and the exchanges that will refuse the coins when they surface.</p>
<p>Let's be honest: in this story, that property helped the attackers. It would be dishonest marketing to pretend otherwise.</p>
<p>But the property does not choose sides, and that is exactly the point. The same rule that shields a thief this week shields a saver every week: the person fleeing a collapsing currency, the dissident whose accounts were closed, or simply you, holding savings that no office can switch off. An asset either has a kill switch or it does not. If it has one, history says it will eventually be used — and not only on thieves.</p>
<p>Bitcoin held with your own keys is the one asset whose ownership is enforced by mathematics, verified by tens of thousands of independent nodes, and beyond the reach of any single company or government. That is why the BAL protocol is built on Bitcoin and nothing else — the reasoning we laid out in <a href="liquid-network-and-why-we-trust-only-bedrock.html">why we trust only bedrock</a>.</p>
<h2>The excuse the hack should bury</h2>
<p>If the lesson is "hold your own keys", why do so many people still keep their savings on exchanges? Convenience, yes. But there is a quieter reason, and we hear it constantly: <strong>inheritance</strong>. "If something happens to me, at least there's a company my family can write to." A custodian's support desk feels like an inheritance plan. Your own keys feel like a dead end that dies with you.</p>
<p>Bitcoin After Life exists to remove exactly that excuse. With BAL, your keys never leave your wallet. You sign a time-locked Bitcoin transaction today that delivers your coins to your heirs on a date you choose, and as long as you are alive your wallet quietly keeps pushing that date forward. Independent <a href="what-a-will-executor-can-see.html">Will-Executor servers</a> hold the signed transaction and broadcast it when — and only when — the time comes. They cannot spend it, cannot change it, and cannot see who you are.</p>
<p>Notice what is missing: the honeypot. There is no building where six billion dollars sits behind one company's keys. A Will-Executor holds nothing a thief can use — only transactions that can go to one place, on one date, written by you. The coins stay where they belong, under your keys, until the day they move to the people you love.</p>
<p>Six billion dollars sat in one place, and twenty minutes was enough. Your savings — and your family's future — should not depend on any building, any database, or any company's promise. Only on keys you hold, and rules that mathematics enforces.</p>
<aside class="related">
<h2>Keep reading</h2>
<ul style="padding-left:22px">
<li><a href="inheritance-when-trust-fails.html">The vanishing inheritance: when trust fails, mathematics doesn't</a></li>
<li><a href="what-happens-to-your-bitcoin.html">What Happens to Your Bitcoin When You're Gone?</a></li>
<li><a href="should-you-tell-your-family-about-your-bitcoin.html">Should You Tell Your Family About Your Bitcoin? What They Need to Know, and What They Don't</a></li>
</ul>
<p>New to Bitcoin After Life? Read the <a href="https://bitcoin-after.life/docs/">user manual</a> or <a href="../index.html#plugin">get the Electrum plugin</a>.</p>
</aside>
<hr>
<p class="disclaimer">Figures about the hack come from public reporting by <a href="https://www.cnbc.com/2026/10/30/binance-hack-stolen-crypto-recovery.html" target="_blank" rel="noopener">CNBC</a>, <a href="https://www.npr.org/2026/10/31/nx-s1-6024426/binance-crypto-heist-cyber-criminals-north-korea" target="_blank" rel="noopener">NPR</a> and <a href="https://www.trmlabs.com/resources/blog/north-korea-steals-usd-6-36-billion-from-binance-in-the-largest-hack-in-history" target="_blank" rel="noopener">TRM Labs</a>, and may be revised as the investigation continues. Bitcoin After Life is open source and Bitcoin-only. Explore the plugin and the server on <a href="https://bitcoin-after.life/gitea/bitcoinafterlife" target="_blank" rel="noopener">Gitea</a> and read the full manual at <a href="https://bitcoin-after.life/docs/" target="_blank" rel="noopener">bitcoin-after.life/docs</a>.</p>
</article>
<div class="back">
<a href="../blog.html">← Back to the blog</a>
</div>
</main>
<footer>
<div class="wrap">
<div class="sig">Svātantrya</div>
<div>Signed — <span translate="no">Bitcoin After Life</span> Protocol</div>
<div class="links">
<a href="https://bitcoin-after.life">bitcoin-after.life</a>
<a href="mailto:info@bitcoin-after.life">info@bitcoin-after.life</a>
<a href="https://x.com/BitcoinAfterLif">@BitcoinAfterLif</a>
<a href="https://bitcoin-after.life/pgp">PGP Key</a>
<a href="https://bitcoin-after.life/gitea/bitcoinafterlife">Source Code</a>
</div>
<div class="built">Built with ₿itcoin. No FIAT was used in the making of this protocol.</div>
</div>
</footer>
<script>
/* Mobile menu toggle -- identical behaviour across all pages. */
(function () {
const toggle = document.getElementById('navToggle');
const nav = document.getElementById('mainNav');
if (!toggle || !nav) return;
function setOpen(open) {
nav.classList.toggle('open', open);
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
}
toggle.addEventListener('click', function () {
setOpen(!nav.classList.contains('open'));
});
nav.addEventListener('click', function (e) {
if (e.target.tagName === 'A') setOpen(false);
});
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') setOpen(false);
});
})();
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
blog/img/seed-cover.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,342 @@
<!DOCTYPE html>
<html lang="en" class="nojs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bitcoin Seed Security: The Coldcard Lesson — Bitcoin After Life</title>
<meta name="description" content="The Coldcard entropy incident shows that everything in Bitcoin grows from the seed. Why Bitcoin After Life builds on Electrum, not a new wallet.">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Bitcoin After Life">
<meta property="og:title" content="Bitcoin Seed Security: The Coldcard Lesson — Bitcoin After Life">
<meta property="og:description" content="The Coldcard entropy incident shows that everything in Bitcoin grows from the seed. Why Bitcoin After Life builds on Electrum, not a new wallet.">
<meta property="og:url" content="https://bitcoin-after.life/blog/it-all-starts-with-the-seed.html">
<meta property="og:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@BitcoinAfterLif">
<meta name="twitter:title" content="Bitcoin Seed Security: The Coldcard Lesson — Bitcoin After Life">
<meta name="twitter:description" content="The Coldcard entropy incident shows that everything in Bitcoin grows from the seed. Why Bitcoin After Life builds on Electrum, not a new wallet.">
<meta name="twitter:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta name="theme-color" content="#2d6cdf">
<link rel="canonical" href="https://bitcoin-after.life/blog/it-all-starts-with-the-seed.html">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "It all starts with the seed",
"description": "The Coldcard entropy incident shows that everything in Bitcoin grows from the seed. Why Bitcoin After Life builds on Electrum, not a new wallet.",
"image": "https://bitcoin-after.life/blog/img/seed-cover.jpg",
"datePublished": "2026-08-03T09:00:00+02:00",
"dateModified": "2026-08-14T09:00:00+02:00",
"author": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/"
},
"publisher": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/",
"logo": {
"@type": "ImageObject",
"url": "https://bitcoin-after.life/pitura/logo/Logo_nero.svg"
}
},
"mainEntityOfPage": "https://bitcoin-after.life/blog/it-all-starts-with-the-seed.html",
"inLanguage": "en"
}
</script>
<link rel="icon" type="image/x-icon" href="/pitura/ico/Logo_nero.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/pitura/ico/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/pitura/ico/favicon-16.png">
<script>
/* Runs before first paint: removes the `nojs` class set on <html>, so the
mobile menu button is only shown when it can actually work. */
document.documentElement.classList.remove('nojs');
</script>
<style>
:root{
--maxw:1120px;
--radius:10px;
--bg:#eef1f4;
--panel:#ffffff;
--ink:#1a2027;
--muted:#5b6672;
--line:#dfe4ea;
--line-strong:#cbd2da;
--accent:#2d6cdf;
--accent-soft:#e6eefc;
--display:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--body:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
--shadow:0 1px 2px rgba(20,30,50,.05);
--shadow-lg:0 6px 20px rgba(20,30,50,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);
line-height:1.55;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
/* ---------- Top bar (shared with home and manifesto) ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.86);
backdrop-filter:saturate(150%) blur(8px);border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:18px;height:60px}
.topbar .logo{display:flex;align-items:center;gap:10px;font-family:var(--display);
font-weight:600;color:var(--ink)}
.topbar .logo img{width:30px;height:30px;display:block}
.topbar .logo span{font-size:15px;letter-spacing:-.01em}
.topbar nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
.topbar nav a{color:var(--muted);font-size:13px;padding:7px 11px;border-radius:7px}
.topbar nav a:hover{color:var(--ink);background:var(--accent-soft);text-decoration:none}
.topbar nav a.active{color:var(--accent);font-weight:600;border:1px solid #cfe0fb;
background:var(--accent-soft)}
.topbar .x{color:var(--ink);font-weight:600}
.navtoggle{
display:none;margin-left:auto;width:44px;height:44px;flex:none;
align-items:center;justify-content:center;
background:var(--panel);border:1px solid var(--line-strong);border-radius:9px;
color:var(--ink);cursor:pointer;padding:0;
}
.navtoggle:hover{border-color:var(--accent);color:var(--accent)}
.navtoggle .bars{display:block;width:18px;height:2px;background:currentColor;position:relative}
.navtoggle .bars::before,.navtoggle .bars::after{
content:"";position:absolute;left:0;width:18px;height:2px;background:currentColor}
.navtoggle .bars::before{top:-6px}
.navtoggle .bars::after{top:6px}
.navtoggle[aria-expanded="true"] .bars{background:transparent}
.navtoggle[aria-expanded="true"] .bars::before{top:0;transform:rotate(45deg)}
.navtoggle[aria-expanded="true"] .bars::after{top:0;transform:rotate(-45deg)}
/* ---------- Footer (shared) ---------- */
footer{border-top:1px solid var(--line);margin-top:56px;padding:34px 0 40px;
color:var(--muted);font-size:14px;background:var(--panel)}
footer .sig{font-family:var(--display);font-weight:600;color:var(--ink);font-size:16px}
footer .links{display:flex;gap:16px;flex-wrap:wrap;margin:14px 0}
footer .built{font-size:13px;color:var(--muted);margin-top:8px}
@media (max-width:900px){
.navtoggle{display:inline-flex}
.topbar nav{
position:absolute;top:100%;left:0;right:0;
margin-left:0;display:none;flex-direction:column;gap:2px;flex-wrap:nowrap;
background:var(--panel);border-bottom:1px solid var(--line);
box-shadow:var(--shadow-lg);padding:10px 20px 16px;
}
.topbar nav.open{display:flex}
.topbar nav a{font-size:15.5px;padding:0 12px;min-height:44px;
display:flex;align-items:center;border-radius:8px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/*
Without JavaScript the panel cannot be toggled, so the links are shown
inline. On narrow screens they wrap under the logo and the bar is allowed
to grow, instead of being clipped by the fixed 60px height.
*/
.nojs .navtoggle{display:none}
.nojs .topbar nav{position:static;display:flex;flex-direction:row;flex-wrap:wrap;
box-shadow:none;border-bottom:0;padding:0;margin-left:auto;background:transparent}
@media (max-width:900px){
.nojs .topbar .wrap{height:auto;min-height:56px;flex-wrap:wrap;padding-bottom:8px;gap:10px}
.nojs .topbar nav{margin-left:0;width:100%;gap:4px 6px}
.nojs .topbar nav a{font-size:14.5px;min-height:40px;padding:0 10px;
display:flex;align-items:center;border:1px solid var(--line);border-radius:8px}
}
.post-head{padding:44px 0 30px;border-bottom:1px solid var(--line);
background:radial-gradient(820px 280px at 50% -40%,var(--accent-soft),transparent 70%)}
.post-head .wrap{max-width:760px}
.post-head .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.14em;
text-transform:uppercase;color:var(--accent);display:block;margin-bottom:14px}
.post-head h1{font-family:var(--display);font-weight:600;font-size:40px;
letter-spacing:-.02em;line-height:1.12;margin:0 0 14px}
.post-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
font-size:13px;color:var(--muted)}
.post-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--line-strong)}
.article{max-width:760px;margin:0 auto;padding:34px 20px 8px}
.article p{font-size:17px;line-height:1.8;color:#36404b;margin:0 0 20px}
.article p strong{color:var(--ink);font-weight:600}
.article h2{font-family:var(--display);font-weight:600;font-size:25px;
letter-spacing:-.01em;margin:38px 0 14px;padding-bottom:10px;
border-bottom:1px solid var(--line-strong)}
.article ol{padding-left:22px;margin:0 0 20px}
.article li{font-size:17px;line-height:1.8;color:#36404b;margin-bottom:14px}
.article li strong{color:var(--ink);font-weight:600}
.article figure{margin:30px 0}
.article figure img{width:100%;height:auto;display:block;border-radius:var(--radius);
border:1px solid var(--line);box-shadow:var(--shadow)}
.article hr{border:0;border-top:1px solid var(--line-strong);margin:34px 0 22px}
.article .disclaimer{font-size:14px;color:var(--muted);font-style:italic;line-height:1.7}
.back{max-width:760px;margin:26px auto 0;padding:0 20px 8px}
.back a{font-size:14px;font-weight:600}
@media (max-width:700px){
.post-head{padding:30px 0 24px}
.post-head h1{font-size:29px}
.article{padding:28px 18px 8px}
.article h2{font-size:22px;margin-top:32px}
.article figure{margin:24px -18px}
.article figure img{border-radius:0;border-left:0;border-right:0}
}
@media (max-width:400px){
.post-head h1{font-size:25px}
.wrap{padding:0 15px}
.article{padding:24px 16px 8px}
.article figure{margin:22px -16px}
}
</style>
</head>
<body>
<div class="topbar">
<div class="wrap">
<a class="logo" href="../index.html"><img src="../pitura/logo/Logo_nero.svg" alt="Bitcoin After Life logo"><span translate="no">Bitcoin After Life</span></a>
<button class="navtoggle" id="navToggle" type="button"
aria-expanded="false" aria-controls="mainNav" aria-label="Open menu">
<span class="bars"></span>
</button>
<nav id="mainNav">
<a href="../index.html#features">Features</a>
<a href="../index.html#how">How it works</a>
<a href="../index.html#plugin">Plugin</a>
<a href="../index.html#faq">FAQ</a>
<a class="active" href="../blog.html">Blog</a>
<a href="../manifesto.html">Manifesto</a>
<a class="x" href="https://x.com/BitcoinAfterLif" title="@BitcoinAfterLif on X">@X</a>
</nav>
</div>
</div>
<main>
<header class="post-head">
<div class="wrap">
<span class="eyebrow">Blog</span>
<h1>It all starts with the seed</h1>
<div class="post-meta">
<time datetime="2026-08-03">3 August 2026</time>
<span class="dot"></span>
<span translate="no">Bitcoin After Life</span>
<span class="dot"></span>
<span>8 min read</span>
</div>
</div>
</header>
<article class="article">
<figure>
<img src="img/seed-cover.jpg" width="1600" height="900" loading="lazy" alt="Geometric Seed — cover illustration">
</figure>
<h2>Forty minutes</h2>
<p>On 30 July 2026, in a window of roughly forty minutes, hundreds of Bitcoin addresses were emptied in a coordinated sweep. The first count spoke of about 594 BTC taken from some 500 addresses. Within a day, independent researchers raised the estimate to more than 1,082 BTC drained from nearly 1,200 wallets. Many of them had been dormant for years — the wallets of long-term holders who had done, by every common standard, everything right.</p>
<p>There was no phishing. No malware. No stolen device, no coerced signature, no compromised computer. The owners of those coins were attacked through something that happened years earlier, in the few seconds when their wallet was born: <strong>the generation of the seed</strong>.</p>
<p>Coinkite, the maker of the Coldcard hardware wallet, published a security advisory the same day. During a firmware library migration in early 2021, two random-number functions with matching interfaces had been confused: instead of drawing from the device's hardware true random number generator, seed creation could fall back to a weak software routine fed by predictable values such as the device's serial number and internal clock. Seeds generated on the Mk3 from firmware 4.0.1 (March 2021) onward were the most exposed; seeds generated on Mk4, Mk5 and Q devices before the emergency fixes carried roughly 72 bits of entropy instead of the expected 128.</p>
<p>To be clear about what that means: a properly generated 12-word seed is protected by a number of combinations so large that guessing it is, for all practical purposes, impossible. Cut the entropy down far enough, and "impossible" quietly becomes "a matter of compute budget". The owners never saw anything change. The words on their steel plates looked exactly the same. The weakness was invisible — until someone found it, enumerated the candidate seeds, and swept the funds.</p>
<h2>Everything grows from the root</h2>
<p>Bitcoin's entire security model is a chain that begins at one point: a large random number. From that number comes the seed; from the seed, the private keys; from the keys, the addresses; from the addresses, everything else — cold storage, multisig, timelocks, inheritance plans, all of it.</p>
<p>This chain has a property that is easy to state and easy to forget: <strong>it is only as strong as its first link</strong>. You can engrave your seed on titanium, lock it in a vault, split it across continents, sign every transaction from an air-gapped bunker — and none of it matters if the random number at the root was not random enough. If security is missing at the root, everything built on top of it is theatre.</p>
<p>That is why entropy is not an implementation detail. It is the foundation of ownership itself. And it is why the question <em>"how was this seed generated, and can I verify it?"</em> deserves at least as much attention as the questions people usually ask — which device to buy, which metal plate to engrave, which passphrase scheme to use.</p>
<h2>The limits of "don't trust, verify"</h2>
<p>Bitcoin's most repeated maxim is <em>don't trust, verify</em>. The Coldcard incident is a sobering lesson in how hard that maxim is to practice — and an honest analysis has to include an uncomfortable fact: <strong>Coldcard's firmware has always been open source.</strong> The vulnerable code sat in public view for more than four years. Openness was necessary, but it was not sufficient.</p>
<p>Coinkite itself offered a telling hypothesis about how the flaw was finally found: someone, they suggest, used AI to review old versions of the public firmware and stumbled upon the issue. More bitter still, the company had recently run its own AI-assisted security review — which found nothing.</p>
<p>So what actually protects a seed-generation path? Three things, and all three have to be present at once:</p>
<ol>
<li><strong>Openness</strong> — the code must be publicly readable. Without it, verification is impossible by definition.</li>
<li><strong>Breadth of review</strong> — openness only pays off when many independent eyes, over many years, actually look. A niche codebase, however public, can carry a subtle bug for half a decade.</li>
<li><strong>Practical verifiability</strong> — the user, or anyone acting on the user's behalf, must be realistically able to check what runs. A general-purpose computer running open software can be inspected end to end. The silicon inside a sealed device cannot: you can read the firmware, but you cannot look inside the chip that is supposed to produce the randomness. At some point, a closed physical box always asks for a residue of trust.</li>
</ol>
<p>None of this means hardware wallets are useless. Air-gapped signing genuinely protects against malware on your computer, and that threat is real. But the incident draws the boundary clearly: a hardware device can protect keys <em>after</em> they exist. It cannot make its own birth verifiable. And knowledge — understanding where your entropy comes from and how to check it — protects you in ways no purchased device can.</p>
<h2>Why we did not reinvent the wallet</h2>
<p>When we designed <span translate="no">Bitcoin After Life</span>, one decision came before all others: <strong>the protocol would live inside Electrum as a plug-in, not inside a new wallet of our own.</strong></p>
<p>It would have been more glamorous to ship "the BAL wallet". It also would have been irresponsible. An inheritance protocol asks people to plan across decades. Whoever asks for that kind of time horizon has a duty to build on the most scrutinized foundations available — not on code that is six months old, however carefully written.</p>
<p>Electrum has existed since 2011. It is one of the most reviewed pieces of Bitcoin software in the world, it has survived fifteen years of adversarial attention, and its seed handling is publicly documented down to the mathematics. A standard Electrum seed phrase carries <strong>132 bits of entropy</strong>, drawn from the operating system's cryptographically secure random number generator — a component that is not a niche codebase but one of the most heavily audited pieces of software on the planet, reviewed for decades by the entire security industry across every field that depends on it. On top of that, Electrum's documented seed-version design brings the effective cost of a brute-force attack to roughly 2<sup>135</sup> operations. These are not marketing figures; they are published, and anyone can check the code that implements them.</p>
<p>This is the meaning of a choice we made early and have repeated often: <strong>remaining a plug-in of one of the most tested wallets in the world is a deliberate design decision, not a fallback.</strong> We add exactly one thing — time-locked inheritance through nLockTime and the Will-Executor network — and we inherit everything else, including seed generation, from a codebase that has earned trust the only way trust is earned in this industry: by surviving.</p>
<p>Ask yourself the question we asked ourselves: would you leave your heirs' future in a wallet released last year? Are you able to go all the way and verify its code yourself? If the honest answer is no, then the age and the breadth of review of the foundation are not details. They are the whole point.</p>
<h2>Verification in the age of AI</h2>
<p>There is one genuinely new element in this story, and it deserves attention: the flaw was likely found — after four and a half years of human blindness — <strong>by a machine reading public code</strong>.</p>
<p>That cuts both ways. The same capability that armed an attacker is now in everyone's hands, and it changes the economics of <em>don't trust, verify</em>. Reviewing a seed-generation path used to require rare expertise and long hours. Today, anyone can take the open code of their wallet, hand it to a capable AI model, and ask pointed questions: <em>Where does the entropy come from? Is there any fallback path? Under what conditions could this produce a predictable seed?</em> An AI review is not a guarantee — Coinkite's own attempt proves that — but it raises the floor dramatically, and it turns verification from a specialist's privilege into an ordinary habit.</p>
<p>Our position is simple: <strong>a verification of the seed-generation technology should always be done</strong> — before funds are deposited, and again when the software is updated. This is only possible with open code running on hardware you can inspect. It is one more reason the closed box, however well built, sits uneasily with Bitcoin's founding rule.</p>
<h2>What this means for inheritance</h2>
<p>An inheritance plan compounds every assumption you make today across the decades it must survive. A weakness that is merely theoretical over one year becomes a real risk over thirty. The Coldcard sweep targeted dormant addresses — precisely the profile of long-term, set-aside funds. Precisely the profile of an inheritance.</p>
<p>This is why <span translate="no">Bitcoin After Life</span>'s architecture keeps returning to the same principles: use Bitcoin's native, consensus-level features (nLockTime) rather than novel constructions; rely on incentives rather than promises; renew the inheritance transaction every two to three years, so the plan absorbs protocol improvements and lessons like this one; and build only on code that the world has been attacking, and failing to break, for many years.</p>
<p>And one practical note, because it matters more than any argument: if you generated a seed on an affected Coldcard device since March 2021, follow Coinkite's advisory — update the firmware, generate a new seed on corrected software, and move your funds. Whatever wallet you use, your inheritance plan is only as good as the seed underneath it.</p>
<h2>Conclusion: the root comes first</h2>
<p>The lesson of 30 July is not that one vendor failed. Every codebase can carry a bug, and Coinkite's transparency after the fact was the correct response. The lesson is older and simpler: <strong>everything starts with the seed</strong>. If randomness is missing at the root, no vault, no steel, no air gap and no inheritance protocol can compensate. Security is not something you add on top; it is something you either have at the foundation or do not have at all.</p>
<p>We chose not to reinvent the wallet. We chose the foundation with fifteen years of scars, public mathematics, and entropy drawn from the most reviewed code on earth. Boring choices, made deliberately — because your heirs will not care how innovative your wallet looked. They will care that the seed was made the way a seed should be made.</p>
<p>Those who want to dig deeper will find the Electrum plug-in, instructions, and practical examples at <a href="https://bitcoin-after.life/" target="_blank" rel="noopener">bitcoin-after.life</a>. The code is open source, verifiable by anyone — with your own eyes, or with an AI at your side.</p>
<p>Verify the root. Everything else follows.</p>
<aside class="related">
<h2>Keep reading</h2>
<ul style="padding-left:22px">
<li><a href="liquid-network-and-why-we-trust-only-bedrock.html">Liquid Network's $320M Lesson: Why BAL Only Builds on Bedrock</a></li>
<li><a href="why-electrum-and-timelocks.html">Why We Built BAL as an Electrum Plugin — and Why Timelocks Remove the Need for Trust</a></li>
<li><a href="the-quietest-day.html">The Quietest Day: What Really Happens When Your Bitcoin Inheritance Arrives</a></li>
</ul>
<p>New to Bitcoin After Life? Read the <a href="https://bitcoin-after.life/docs/">user manual</a> or <a href="../index.html#plugin">get the Electrum plugin</a>.</p>
</aside>
<hr>
<p class="disclaimer">This article is for informational purposes only and does not constitute legal, tax, or security advice. Facts about the 30 July 2026 incident reflect public reporting and Coinkite's advisory at the time of writing; consult the vendor's official communications for up-to-date guidance on affected devices.</p>
</article>
<div class="back">
<a href="../blog.html">← Back to the blog</a>
</div>
</main>
<footer>
<div class="wrap">
<div class="sig">Svātantrya</div>
<div>Signed — <span translate="no">Bitcoin After Life</span> Protocol</div>
<div class="links">
<a href="https://bitcoin-after.life">bitcoin-after.life</a>
<a href="mailto:info@bitcoin-after.life">info@bitcoin-after.life</a>
<a href="https://x.com/BitcoinAfterLif">@BitcoinAfterLif</a>
<a href="https://bitcoin-after.life/pgp">PGP Key</a>
<a href="https://bitcoin-after.life/gitea/bitcoinafterlife">Source Code</a>
</div>
<div class="built">Built with ₿itcoin. No FIAT was used in the making of this protocol.</div>
</div>
</footer>
<script>
/* Mobile menu toggle -- identical behaviour across all pages. */
(function () {
const toggle = document.getElementById('navToggle');
const nav = document.getElementById('mainNav');
if (!toggle || !nav) return;
function setOpen(open) {
nav.classList.toggle('open', open);
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
}
toggle.addEventListener('click', function () {
setOpen(!nav.classList.contains('open'));
});
nav.addEventListener('click', function (e) {
if (e.target.tagName === 'A') setOpen(false);
});
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') setOpen(false);
});
})();
</script>
</body>
</html>

View File

@@ -0,0 +1,390 @@
<!DOCTYPE html>
<html lang="en" class="nojs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Liquid Network's $320M Bug: Why BAL Builds on Bedrock — Bitcoin After Life</title>
<meta name="description" content="A $320 million bug on Liquid Network shows why Bitcoin After Life uses no sidechains, no Layer-2s and no experimental scripts: only tested primitives.">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Bitcoin After Life">
<meta property="og:title" content="Liquid Network's $320M Bug: Why BAL Builds on Bedrock — Bitcoin After Life">
<meta property="og:description" content="A $320 million bug on Liquid Network shows why Bitcoin After Life uses no sidechains, no Layer-2s and no experimental scripts: only tested primitives.">
<meta property="og:url" content="https://bitcoin-after.life/blog/liquid-network-and-why-we-trust-only-bedrock.html">
<meta property="og:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@BitcoinAfterLif">
<meta name="twitter:title" content="Liquid Network's $320M Bug: Why BAL Builds on Bedrock — Bitcoin After Life">
<meta name="twitter:description" content="A $320 million bug on Liquid Network shows why Bitcoin After Life uses no sidechains, no Layer-2s and no experimental scripts: only tested primitives.">
<meta name="twitter:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta name="theme-color" content="#2d6cdf">
<link rel="canonical" href="https://bitcoin-after.life/blog/liquid-network-and-why-we-trust-only-bedrock.html">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Liquid Network's $320M Lesson: Why BAL Only Builds on Bedrock",
"description": "A $320 million bug on Liquid Network shows why Bitcoin After Life uses no sidechains, no Layer-2s and no experimental scripts: only tested primitives.",
"image": "https://bitcoin-after.life/blog/img/liquid-network-bedrock-cover.webp",
"datePublished": "2026-09-12T09:00:00+02:00",
"dateModified": "2026-09-12T09:00:00+02:00",
"author": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/"
},
"publisher": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/",
"logo": {
"@type": "ImageObject",
"url": "https://bitcoin-after.life/pitura/logo/Logo_nero.svg"
}
},
"mainEntityOfPage": "https://bitcoin-after.life/blog/liquid-network-and-why-we-trust-only-bedrock.html",
"inLanguage": "en"
}
</script>
<link rel="icon" type="image/x-icon" href="/pitura/ico/Logo_nero.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/pitura/ico/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/pitura/ico/favicon-16.png">
<script>
/* Runs before first paint: removes the `nojs` class set on <html>, so the
mobile menu button is only shown when it can actually work. */
document.documentElement.classList.remove('nojs');
</script>
<style>
:root{
--maxw:1120px;
--radius:10px;
--bg:#eef1f4;
--panel:#ffffff;
--ink:#1a2027;
--muted:#5b6672;
--line:#dfe4ea;
--line-strong:#cbd2da;
--accent:#2d6cdf;
--accent-soft:#e6eefc;
--display:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--body:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
--shadow:0 1px 2px rgba(20,30,50,.05);
--shadow-lg:0 6px 20px rgba(20,30,50,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);
line-height:1.55;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
/* ---------- Top bar (shared with home and manifesto) ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.86);
backdrop-filter:saturate(150%) blur(8px);border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:18px;height:60px}
.topbar .logo{display:flex;align-items:center;gap:10px;font-family:var(--display);
font-weight:600;color:var(--ink)}
.topbar .logo img{width:30px;height:30px;display:block}
.topbar .logo span{font-size:15px;letter-spacing:-.01em}
.topbar nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
.topbar nav a{color:var(--muted);font-size:13px;padding:7px 11px;border-radius:7px}
.topbar nav a:hover{color:var(--ink);background:var(--accent-soft);text-decoration:none}
.topbar nav a.active{color:var(--accent);font-weight:600;border:1px solid #cfe0fb;
background:var(--accent-soft)}
.topbar .x{color:var(--ink);font-weight:600}
.navtoggle{
display:none;margin-left:auto;width:44px;height:44px;flex:none;
align-items:center;justify-content:center;
background:var(--panel);border:1px solid var(--line-strong);border-radius:9px;
color:var(--ink);cursor:pointer;padding:0;
}
.navtoggle:hover{border-color:var(--accent);color:var(--accent)}
.navtoggle .bars{display:block;width:18px;height:2px;background:currentColor;position:relative}
.navtoggle .bars::before,.navtoggle .bars::after{
content:"";position:absolute;left:0;width:18px;height:2px;background:currentColor}
.navtoggle .bars::before{top:-6px}
.navtoggle .bars::after{top:6px}
.navtoggle[aria-expanded="true"] .bars{background:transparent}
.navtoggle[aria-expanded="true"] .bars::before{top:0;transform:rotate(45deg)}
.navtoggle[aria-expanded="true"] .bars::after{top:0;transform:rotate(-45deg)}
/* ---------- Footer (shared) ---------- */
footer{border-top:1px solid var(--line);margin-top:56px;padding:34px 0 40px;
color:var(--muted);font-size:14px;background:var(--panel)}
footer .sig{font-family:var(--display);font-weight:600;color:var(--ink);font-size:16px}
footer .links{display:flex;gap:16px;flex-wrap:wrap;margin:14px 0}
footer .built{font-size:13px;color:var(--muted);margin-top:8px}
@media (max-width:900px){
.navtoggle{display:inline-flex}
.topbar nav{
position:absolute;top:100%;left:0;right:0;
margin-left:0;display:none;flex-direction:column;gap:2px;flex-wrap:nowrap;
background:var(--panel);border-bottom:1px solid var(--line);
box-shadow:var(--shadow-lg);padding:10px 20px 16px;
}
.topbar nav.open{display:flex}
.topbar nav a{font-size:15.5px;padding:0 12px;min-height:44px;
display:flex;align-items:center;border-radius:8px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/*
Without JavaScript the panel cannot be toggled, so the links are shown
inline. On narrow screens they wrap under the logo and the bar is allowed
to grow, instead of being clipped by the fixed 60px height.
*/
.nojs .navtoggle{display:none}
.nojs .topbar nav{position:static;display:flex;flex-direction:row;flex-wrap:wrap;
box-shadow:none;border-bottom:0;padding:0;margin-left:auto;background:transparent}
@media (max-width:900px){
.nojs .topbar .wrap{height:auto;min-height:56px;flex-wrap:wrap;padding-bottom:8px;gap:10px}
.nojs .topbar nav{margin-left:0;width:100%;gap:4px 6px}
.nojs .topbar nav a{font-size:14.5px;min-height:40px;padding:0 10px;
display:flex;align-items:center;border:1px solid var(--line);border-radius:8px}
}
.post-head{padding:44px 0 30px;border-bottom:1px solid var(--line);
background:radial-gradient(820px 280px at 50% -40%,var(--accent-soft),transparent 70%)}
.post-head .wrap{max-width:760px}
.post-head .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.14em;
text-transform:uppercase;color:var(--accent);display:block;margin-bottom:14px}
.post-head h1{font-family:var(--display);font-weight:600;font-size:40px;
letter-spacing:-.02em;line-height:1.12;margin:0 0 14px}
.post-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
font-size:13px;color:var(--muted)}
.post-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--line-strong)}
.article{max-width:760px;margin:0 auto;padding:34px 20px 8px}
.article p{font-size:17px;line-height:1.8;color:#36404b;margin:0 0 20px}
.article p strong{color:var(--ink);font-weight:600}
.article h2{font-family:var(--display);font-weight:600;font-size:25px;
letter-spacing:-.01em;margin:38px 0 14px;padding-bottom:10px;
border-bottom:1px solid var(--line-strong)}
.article ol{padding-left:22px;margin:0 0 20px}
.article li{font-size:17px;line-height:1.8;color:#36404b;margin-bottom:14px}
.article li strong{color:var(--ink);font-weight:600}
.article figure{margin:30px 0}
.article figure img{width:100%;height:auto;display:block;border-radius:var(--radius);
border:1px solid var(--line);box-shadow:var(--shadow)}
.article figcaption{font-size:13px;color:var(--muted);text-align:center;margin-top:10px}
.article hr{border:0;border-top:1px solid var(--line-strong);margin:34px 0 22px}
.article .disclaimer{font-size:14px;color:var(--muted);font-style:italic;line-height:1.7}
.article code{font-family:var(--mono);font-size:.9em;background:var(--accent-soft);
color:var(--ink);padding:2px 6px;border-radius:5px}
/*
Blockquote and pull-quote: this post is the first to need them. Both
reuse the existing palette tokens so nothing new is introduced visually.
*/
.article blockquote{margin:26px 0;padding:16px 20px;border-left:3px solid var(--accent);
background:var(--accent-soft);border-radius:0 var(--radius) var(--radius) 0;
font-style:italic;color:#2a3542}
.article blockquote p{margin:0;font-size:16.5px;line-height:1.7;color:inherit}
.article .pull{font-family:var(--display);font-size:20px;font-weight:600;
line-height:1.45;color:var(--ink);border-top:1px solid var(--line-strong);
border-bottom:1px solid var(--line-strong);padding:22px 0;margin:30px 0}
.back{max-width:760px;margin:26px auto 0;padding:0 20px 8px}
.back a{font-size:14px;font-weight:600}
@media (max-width:700px){
.post-head{padding:30px 0 24px}
.post-head h1{font-size:29px}
.article{padding:28px 18px 8px}
.article h2{font-size:22px;margin-top:32px}
.article figure{margin:24px -18px}
.article figure img{border-radius:0;border-left:0;border-right:0}
.article .pull{font-size:18px}
}
@media (max-width:400px){
.post-head h1{font-size:25px}
.wrap{padding:0 15px}
.article{padding:24px 16px 8px}
.article figure{margin:22px -16px}
}
</style>
</head>
<body>
<div class="topbar">
<div class="wrap">
<a class="logo" href="../index.html"><img src="../pitura/logo/Logo_nero.svg" alt="Bitcoin After Life logo"><span translate="no">Bitcoin After Life</span></a>
<button class="navtoggle" id="navToggle" type="button"
aria-expanded="false" aria-controls="mainNav" aria-label="Open menu">
<span class="bars"></span>
</button>
<nav id="mainNav">
<a href="../index.html#features">Features</a>
<a href="../index.html#how">How it works</a>
<a href="../index.html#plugin">Plugin</a>
<a href="../index.html#faq">FAQ</a>
<a class="active" href="../blog.html">Blog</a>
<a href="../manifesto.html">Manifesto</a>
<a class="x" href="https://x.com/BitcoinAfterLif" title="@BitcoinAfterLif on X">@X</a>
</nav>
</div>
</div>
<main>
<header class="post-head">
<div class="wrap">
<span class="eyebrow">Blog</span>
<h1>Liquid Network's $320M Lesson: Why BAL Only Builds on Bedrock</h1>
<div class="post-meta">
<time datetime="2026-09-12">12 September 2026</time>
<span class="dot"></span>
<span translate="no">Bitcoin After Life</span>
<span class="dot"></span>
<span>7 min read</span>
</div>
</div>
</header>
<article class="article">
<figure>
<img src="img/liquid-network-bedrock-cover.webp" width="1600" height="900" loading="lazy" alt="On the left, a fragile scaffolding of gears and pipes cracks and falls apart. On the right, a single unbreakable black monolith engraved with the Bitcoin symbol. A thin blue line separates them.">
<figcaption>The base layer, and everything built on top of it, do not carry the same weight.</figcaption>
</figure>
<p>On <strong>6 September 2026</strong>, a group of attackers — who later called themselves white-hats — walked away with roughly <strong>4,000 BTC, worth about $320 million</strong>, from the Liquid Network. They did it in a few hours, from their laptops, by exploiting a bug in the software that Liquid's nodes use to validate transactions. Most of the funds were later returned, but around <strong>$47 million</strong> remained under the attackers' control at the time of writing. <a href="https://www.chainalysis.com/blog/320m-exploit-liquid-network/" target="_blank" rel="noopener">(Chainalysis analysis)</a></p>
<p>Liquid is not a scam project. It is built by <strong>Blockstream</strong>, one of the most respected engineering teams in Bitcoin. Its code is open source. Its federation includes serious exchanges and custodians. If a network of that caliber can lose $320 million in an afternoon, it is worth asking a very calm, very serious question:</p>
<p class="pull">If even the best-engineered Bitcoin sidechain can break, what should an inheritance protocol — a plan that must survive for decades — be allowed to depend on?</p>
<p>Our answer, from day one, has been the same. And this incident is not a surprise to us. It is a confirmation.</p>
<h2>What actually broke on Liquid</h2>
<p>The short version: Liquid's software caches the results of expensive cryptographic checks, so it does not have to re-verify the same data twice. A flaw in how those cached results were identified meant that <strong>new, invalid data could be mistaken for old, valid data</strong>. The attackers used this to create <strong>L-BTC that was never backed by real Bitcoin</strong>, then swapped that fake L-BTC for real BTC held in the network's reserves.</p>
<p>It is worth reading that twice. Bitcoin itself was not broken. The Bitcoin base layer, once again, did exactly what it was supposed to do. What broke was <strong>a layer built on top of Bitcoin</strong> — a sidechain with its own nodes, its own consensus rules, its own new code, and therefore its own new attack surface.</p>
<p>This is the pattern every serious builder in this space has learned to expect: <strong>every new layer adds new bugs</strong>. Not "might". <em>Will</em>. The only real question is when they are discovered, and by whom.</p>
<h2>Why we refuse to build on new things</h2>
<p><span translate="no">Bitcoin After Life</span> is an inheritance protocol. That single sentence forces a very specific design philosophy on us.</p>
<p>An inheritance plan is not a trade. You do not close it at the end of the week. You set it up, and then you ask it to <strong>keep working for twenty, thirty, forty years</strong> — through software updates, through market cycles, through your own absence. Whatever we build on has to survive all of that.</p>
<p>So we made a promise to our users, and to ourselves: <strong><span translate="no">BAL</span> will only use tools that have already survived the test of time on Bitcoin's base layer.</strong> Concretely, that means:</p>
<ul style="padding-left:22px">
<li><strong>No sidechains.</strong> Not Liquid, not any other. A sidechain is a separate network with its own rules and its own bugs, as this month proved.</li>
<li><strong>No Layer-2s.</strong> Lightning is wonderful for payments; it is not a place to park an inheritance.</li>
<li><strong>No exotic scripts.</strong> No fresh Miniscript contraptions, no vaults still being debated in mailing lists, no covenants that only exist on testnet.</li>
<li><strong>No new wallet built by us.</strong> Signing keys are sacred. We will not ask anyone to trust code we wrote last year with the coins their family will need.</li>
</ul>
<p>What we <em>do</em> use is the boring, uninteresting, deeply tested core of Bitcoin — the parts that have been attacked by the entire world for fifteen years and have not moved.</p>
<h2>The two pillars we allow ourselves</h2>
<p><strong>Electrum.</strong> Signing has been done in Electrum since 2011. It is one of the most audited pieces of Bitcoin software on Earth. Its seed generation draws <strong>132 bits of entropy</strong> from the operating system's cryptographic RNG — one of the most reviewed pieces of code in any industry. The BAL plugin never signs anything on its own; it builds the transaction, shows it to you, and lets Electrum, with your keys and your hardware wallet, decide. Our attack surface for signing is therefore <em>Electrum's</em> attack surface — and that surface has held for a decade and a half. <a href="https://bitcoin-after.life/blog/why-electrum-and-timelocks.html">(Why Electrum, in detail)</a></p>
<p><strong>nLockTime.</strong> This is not a clever script. It is not a smart contract. It is a <strong>consensus rule</strong> that has been part of Bitcoin since the very first version — a field that tells the network "do not accept this transaction before this date". Every full node on the planet enforces it. It cannot be bypassed by a compromised server, an impatient heir, or a bug in some intermediate layer. It is, quite literally, the same category of guarantee that stops people from double-spending.</p>
<p>That is it. That is the entire cryptographic surface of <span translate="no">Bitcoin After Life</span>: <strong>a signature made by Electrum, and a delay enforced by Bitcoin consensus.</strong> Nothing else stands between your heirs and the coins you want them to receive.</p>
<h2>Will-Executors: nothing to hack</h2>
<p>People often ask us next: <em>"But what about the Will-Executor servers? Aren't they the weak link?"</em> This is where the design gets almost anticlimactic — on purpose.</p>
<p>A Will-Executor is not a custodian. It does not hold your keys. It cannot modify the transaction it was given. It cannot redirect the funds. All it can do is <strong>store one already-signed, time-locked transaction, and broadcast it when the date arrives</strong>. It is closer to an automated mailbox than to a bank.</p>
<p>Its incentive to do its job is purely on-chain: <strong>every inheritance transaction includes a small Bitcoin fee for the executor</strong>, and that fee is only paid when the transaction actually confirms. Not when the server "promises". When the Bitcoin network says so. No confirmation, no fee.</p>
<p>On top of that, the network is <strong>decentralized and redundant</strong>. When you set up your inheritance, the plugin creates one copy of the transaction for each Will-Executor you chose from the public WeList directory. Only one of them needs to still be online at the delivery date. If ten servers hold a copy and nine disappear, the tenth still executes your will and collects the fee.</p>
<p>Now imagine an attacker who wants to hurt BAL. What is the target?</p>
<ul style="padding-left:22px">
<li>They cannot steal from the executor — the executor has no keys.</li>
<li>They cannot alter the transactions — they are already signed.</li>
<li>They cannot execute early — Bitcoin consensus rejects the transaction before the locktime.</li>
<li>They cannot bribe the executor to "hold" your will — someone else's redundant copy will broadcast anyway, and take the fee.</li>
</ul>
<p>There is almost nothing to attack. And that, again, is the point.</p>
<h2>Contrast with Liquid</h2>
<p>Compare that with what the Liquid attackers had to work with: a novel network, a novel token (L-BTC), novel Confidential Transactions, novel range-proof caching, and a federation of nodes that mint and redeem representations of Bitcoin. Every one of those "novels" is a place where a bug can live. This month, one of them did.</p>
<p>None of this is a criticism of Blockstream. They responded with transparency, they patched quickly, they coordinated the return of funds. That is exactly how a mature team should behave. But the incident makes the underlying trade-off unmistakable: <strong>more features on top of Bitcoin means more code, more code means more bugs, more bugs means more risk over time</strong>. For a trading layer that risk may be acceptable. For an inheritance plan measured in decades, it simply is not.</p>
<h2>Built for atomic bombs, hackers, and coming AIs</h2>
<p>We say this only half-jokingly: the <span translate="no">Bitcoin After Life</span> protocol is designed to be <strong>hacker-proof, AI-proof, and — in the very long run — as close to "atomic-bomb-proof" as software allows</strong>.</p>
<p>What we mean, concretely:</p>
<ul style="padding-left:22px">
<li><strong>No single server can be attacked into failing the user.</strong> The Will-Executor network is decentralized, redundant, and incentivized by on-chain fees. Kill a server; another one takes over.</li>
<li><strong>No novel cryptography is on the critical path.</strong> The security of your inheritance comes from Bitcoin signatures and nLockTime — primitives that have survived a decade and a half of adversarial review. No custom scripts to be broken by an unknown class of attack.</li>
<li><strong>No secret code to reverse-engineer.</strong> The plugin and the executor are open source, MIT-licensed, and small enough to be audited by a serious reader — human or AI.</li>
<li><strong>AI cuts both ways, and we welcome it.</strong> As we wrote in <a href="https://bitcoin-after.life/blog/it-all-starts-with-the-seed.html">"It all starts with the seed"</a>, the Coldcard seed flaw was likely found by an AI reading old public code. That capability is now in every user's hands: you can hand our code to a capable model tomorrow and ask, in plain English, <em>where can this break?</em> An inheritance protocol should welcome that scrutiny, not fear it. Ours does.</li>
<li><strong>The plan renews itself.</strong> BAL is designed for periodic refresh every two to three years, so lessons like Liquid's are absorbed before they become tomorrow's crisis.</li>
</ul>
<blockquote><p>The Liquid hack did not shake our design. It reinforced it. Every place BAL <em>could</em> have added a shortcut — a sidechain for cheaper fees, a new script for cleverer conditions, a proprietary wallet for a nicer UX — is a place where, in 2026, someone else lost $320 million.</p></blockquote>
<h2>What this means for you</h2>
<p>If you are planning a Bitcoin inheritance, the practical takeaways from this month are simple:</p>
<ul style="padding-left:22px">
<li><strong>Do not park inheritance funds on a sidechain or an L2.</strong> Not on Liquid, not on Lightning channels, not on any bridge or wrapper. Keep the coins on the Bitcoin base layer.</li>
<li><strong>Distrust anything shiny.</strong> "New" is a feature for traders and a liability for heirs. Prefer the software that has been publicly attacked for the longest.</li>
<li><strong>Ask where the trust is.</strong> If any part of an inheritance plan says "trust our server / trust our custodian / trust our federation", that part is where it will eventually fail. Replace it with something a consensus rule enforces.</li>
<li><strong>Verify.</strong> Read the code, or ask an AI to read it for you, and do it again after every update. This is now a habit anyone can afford.</li>
</ul>
<p><span translate="no">Bitcoin After Life</span> is deliberately narrow. We do exactly one thing — a time-locked, redundantly-executed inheritance transaction — and we do it on top of the two most tested primitives in Bitcoin. We refuse features that would force us onto experimental ground. That refusal is not conservatism for its own sake. It is the only honest posture for a protocol whose promises must outlive its authors.</p>
<p>The Liquid attackers wrote a $320 million reminder into the blockchain this month. Our reading of it is the same one we started with:</p>
<p class="pull">Don't trust. Verify. Then, and only then, plan — on bedrock.</p>
<p>The plugin, the executor, and the full protocol walkthrough are open source and available at <a href="https://bitcoin-after.life/">bitcoin-after.life</a>. Start on testnet. Read the code. Bring an AI. Break it if you can — that is exactly what we want.</p>
<aside class="related">
<h2>Keep reading</h2>
<ul style="padding-left:22px">
<li><a href="it-all-starts-with-the-seed.html">It all starts with the seed</a></li>
<li><a href="why-electrum-and-timelocks.html">Why We Built BAL as an Electrum Plugin — and Why Timelocks Remove the Need for Trust</a></li>
<li><a href="what-a-will-executor-can-see.html">What Can a Will-Executor Actually See? Privacy in the BAL Protocol</a></li>
</ul>
<p>New to Bitcoin After Life? Read the <a href="https://bitcoin-after.life/docs/">user manual</a> or <a href="../index.html#plugin">get the Electrum plugin</a>.</p>
</aside>
<hr>
<p class="disclaimer">This article is for informational purposes only and does not constitute legal, tax, or security advice. Facts about the September 2026 Liquid Network incident reflect public reporting and Blockstream's advisories at the time of writing; consult the vendor's official communications for up-to-date guidance.</p>
</article>
<div class="back">
<a href="../blog.html">← Back to the blog</a>
</div>
</main>
<footer>
<div class="wrap">
<div class="sig">Svātantrya</div>
<div>Signed — <span translate="no">Bitcoin After Life</span> Protocol</div>
<div class="links">
<a href="https://bitcoin-after.life">bitcoin-after.life</a>
<a href="mailto:info@bitcoin-after.life">info@bitcoin-after.life</a>
<a href="https://x.com/BitcoinAfterLif">@BitcoinAfterLif</a>
<a href="https://bitcoin-after.life/pgp">PGP Key</a>
<a href="https://bitcoin-after.life/gitea/bitcoinafterlife">Source Code</a>
</div>
<div class="built">Built with ₿itcoin. No FIAT was used in the making of this protocol.</div>
</div>
</footer>
<script>
/* Mobile menu toggle -- identical behaviour across all pages. */
(function () {
const toggle = document.getElementById('navToggle');
const nav = document.getElementById('mainNav');
if (!toggle || !nav) return;
function setOpen(open) {
nav.classList.toggle('open', open);
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
}
toggle.addEventListener('click', function () {
setOpen(!nav.classList.contains('open'));
});
nav.addEventListener('click', function (e) {
if (e.target.tagName === 'A') setOpen(false);
});
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') setOpen(false);
});
})();
</script>
</body>
</html>

403
blog/proof-of-life.html Normal file
View File

@@ -0,0 +1,403 @@
<!DOCTYPE html>
<html lang="en" class="nojs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bitcoin Dead Man's Switch Without Surveillance — Bitcoin After Life</title>
<meta name="description" content="Bitcoin After Life never tries to detect death. How Check Alive works, why updating a will is free, and why postponing it costs a transaction.">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Bitcoin After Life">
<meta property="og:title" content="Bitcoin Dead Man's Switch Without Surveillance — Bitcoin After Life">
<meta property="og:description" content="Bitcoin After Life never tries to detect death. How Check Alive works, why updating a will is free, and why postponing it costs a transaction.">
<meta property="og:url" content="https://bitcoin-after.life/blog/proof-of-life.html">
<meta property="og:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@BitcoinAfterLif">
<meta name="twitter:title" content="Bitcoin Dead Man's Switch Without Surveillance — Bitcoin After Life">
<meta name="twitter:description" content="Bitcoin After Life never tries to detect death. How Check Alive works, why updating a will is free, and why postponing it costs a transaction.">
<meta name="twitter:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta name="theme-color" content="#2d6cdf">
<link rel="canonical" href="https://bitcoin-after.life/blog/proof-of-life.html">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Proof of Life Without Surveillance: How Your Wallet Tells the Protocol You're Still Here",
"description": "Bitcoin After Life never tries to detect death. How Check Alive works, why updating a will is free, and why postponing it costs a transaction.",
"image": "https://bitcoin-after.life/blog/img/proof-of-life-cover.webp",
"datePublished": "2026-09-26T09:00:00+02:00",
"dateModified": "2026-09-26T09:00:00+02:00",
"author": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/"
},
"publisher": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/",
"logo": {
"@type": "ImageObject",
"url": "https://bitcoin-after.life/pitura/logo/Logo_nero.svg"
}
},
"mainEntityOfPage": "https://bitcoin-after.life/blog/proof-of-life.html",
"inLanguage": "en"
}
</script>
<link rel="icon" type="image/x-icon" href="/pitura/ico/Logo_nero.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/pitura/ico/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/pitura/ico/favicon-16.png">
<script>
/* Runs before first paint: removes the `nojs` class set on <html>, so the
mobile menu button is only shown when it can actually work. */
document.documentElement.classList.remove('nojs');
</script>
<style>
:root{
--maxw:1120px;
--radius:10px;
--bg:#eef1f4;
--panel:#ffffff;
--ink:#1a2027;
--muted:#5b6672;
--line:#dfe4ea;
--line-strong:#cbd2da;
--accent:#2d6cdf;
--accent-soft:#e6eefc;
--display:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--body:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
--shadow:0 1px 2px rgba(20,30,50,.05);
--shadow-lg:0 6px 20px rgba(20,30,50,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);
line-height:1.55;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
/* ---------- Top bar (shared with home and manifesto) ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.86);
backdrop-filter:saturate(150%) blur(8px);border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:18px;height:60px}
.topbar .logo{display:flex;align-items:center;gap:10px;font-family:var(--display);
font-weight:600;color:var(--ink)}
.topbar .logo img{width:30px;height:30px;display:block}
.topbar .logo span{font-size:15px;letter-spacing:-.01em}
.topbar nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
.topbar nav a{color:var(--muted);font-size:13px;padding:7px 11px;border-radius:7px}
.topbar nav a:hover{color:var(--ink);background:var(--accent-soft);text-decoration:none}
.topbar nav a.active{color:var(--accent);font-weight:600;border:1px solid #cfe0fb;
background:var(--accent-soft)}
.topbar .x{color:var(--ink);font-weight:600}
.navtoggle{
display:none;margin-left:auto;width:44px;height:44px;flex:none;
align-items:center;justify-content:center;
background:var(--panel);border:1px solid var(--line-strong);border-radius:9px;
color:var(--ink);cursor:pointer;padding:0;
}
.navtoggle:hover{border-color:var(--accent);color:var(--accent)}
.navtoggle .bars{display:block;width:18px;height:2px;background:currentColor;position:relative}
.navtoggle .bars::before,.navtoggle .bars::after{
content:"";position:absolute;left:0;width:18px;height:2px;background:currentColor}
.navtoggle .bars::before{top:-6px}
.navtoggle .bars::after{top:6px}
.navtoggle[aria-expanded="true"] .bars{background:transparent}
.navtoggle[aria-expanded="true"] .bars::before{top:0;transform:rotate(45deg)}
.navtoggle[aria-expanded="true"] .bars::after{top:0;transform:rotate(-45deg)}
/* ---------- Footer (shared) ---------- */
footer{border-top:1px solid var(--line);margin-top:56px;padding:34px 0 40px;
color:var(--muted);font-size:14px;background:var(--panel)}
footer .sig{font-family:var(--display);font-weight:600;color:var(--ink);font-size:16px}
footer .links{display:flex;gap:16px;flex-wrap:wrap;margin:14px 0}
footer .built{font-size:13px;color:var(--muted);margin-top:8px}
@media (max-width:900px){
.navtoggle{display:inline-flex}
.topbar nav{
position:absolute;top:100%;left:0;right:0;
margin-left:0;display:none;flex-direction:column;gap:2px;flex-wrap:nowrap;
background:var(--panel);border-bottom:1px solid var(--line);
box-shadow:var(--shadow-lg);padding:10px 20px 16px;
}
.topbar nav.open{display:flex}
.topbar nav a{font-size:15.5px;padding:0 12px;min-height:44px;
display:flex;align-items:center;border-radius:8px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/*
Without JavaScript the panel cannot be toggled, so the links are shown
inline. On narrow screens they wrap under the logo and the bar is allowed
to grow, instead of being clipped by the fixed 60px height.
*/
.nojs .navtoggle{display:none}
.nojs .topbar nav{position:static;display:flex;flex-direction:row;flex-wrap:wrap;
box-shadow:none;border-bottom:0;padding:0;margin-left:auto;background:transparent}
@media (max-width:900px){
.nojs .topbar .wrap{height:auto;min-height:56px;flex-wrap:wrap;padding-bottom:8px;gap:10px}
.nojs .topbar nav{margin-left:0;width:100%;gap:4px 6px}
.nojs .topbar nav a{font-size:14.5px;min-height:40px;padding:0 10px;
display:flex;align-items:center;border:1px solid var(--line);border-radius:8px}
}
.post-head{padding:44px 0 30px;border-bottom:1px solid var(--line);
background:radial-gradient(820px 280px at 50% -40%,var(--accent-soft),transparent 70%)}
.post-head .wrap{max-width:760px}
.post-head .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.14em;
text-transform:uppercase;color:var(--accent);display:block;margin-bottom:14px}
.post-head h1{font-family:var(--display);font-weight:600;font-size:40px;
letter-spacing:-.02em;line-height:1.12;margin:0 0 14px}
.post-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
font-size:13px;color:var(--muted)}
.post-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--line-strong)}
.article{max-width:760px;margin:0 auto;padding:34px 20px 8px}
.article p{font-size:17px;line-height:1.8;color:#36404b;margin:0 0 20px}
.article p strong{color:var(--ink);font-weight:600}
.article h2{font-family:var(--display);font-weight:600;font-size:25px;
letter-spacing:-.01em;margin:38px 0 14px;padding-bottom:10px;
border-bottom:1px solid var(--line-strong)}
.article ol{padding-left:22px;margin:0 0 20px}
.article li{font-size:17px;line-height:1.8;color:#36404b;margin-bottom:14px}
.article li strong{color:var(--ink);font-weight:600}
.article figure{margin:30px 0}
.article figure img{width:100%;height:auto;display:block;border-radius:var(--radius);
border:1px solid var(--line);box-shadow:var(--shadow)}
.article hr{border:0;border-top:1px solid var(--line-strong);margin:34px 0 22px}
.article .disclaimer{font-size:14px;color:var(--muted);font-style:italic;line-height:1.7}
/*
Table and diagram caption: the table reuses the treatment from the privacy
post; the wrapper scrolls on narrow screens so the page never scrolls sideways.
*/
.article .tablewrap{overflow-x:auto;margin:0 0 22px;-webkit-overflow-scrolling:touch}
.article table{width:100%;border-collapse:collapse;font-size:15.5px;min-width:480px}
.article th,.article td{text-align:left;padding:11px 14px;border:1px solid var(--line);
line-height:1.6;color:#36404b;vertical-align:top}
.article th{font-family:var(--display);font-weight:600;color:var(--ink);
background:var(--accent-soft)}
.article figcaption{font-size:13px;color:var(--muted);text-align:center;margin-top:10px}
/* Check Alive example: diagram on wide screens, readable table on phones. */
.article .only-mobile{display:none}
@media (max-width:700px){.article .only-desktop{display:none}.article .only-mobile{display:block}}
.back{max-width:760px;margin:26px auto 0;padding:0 20px 8px}
.back a{font-size:14px;font-weight:600}
@media (max-width:700px){
.post-head{padding:30px 0 24px}
.post-head h1{font-size:29px}
.article{padding:28px 18px 8px}
.article h2{font-size:22px;margin-top:32px}
.article figure{margin:24px -18px}
.article figure img{border-radius:0;border-left:0;border-right:0}
}
@media (max-width:400px){
.post-head h1{font-size:25px}
.wrap{padding:0 15px}
.article{padding:24px 16px 8px}
.article figure{margin:22px -16px}
}
</style>
</head>
<body>
<div class="topbar">
<div class="wrap">
<a class="logo" href="../index.html"><img src="../pitura/logo/Logo_nero.svg" alt="Bitcoin After Life logo"><span translate="no">Bitcoin After Life</span></a>
<button class="navtoggle" id="navToggle" type="button"
aria-expanded="false" aria-controls="mainNav" aria-label="Open menu">
<span class="bars"></span>
</button>
<nav id="mainNav">
<a href="../index.html#features">Features</a>
<a href="../index.html#how">How it works</a>
<a href="../index.html#plugin">Plugin</a>
<a href="../index.html#faq">FAQ</a>
<a class="active" href="../blog.html">Blog</a>
<a href="../manifesto.html">Manifesto</a>
<a class="x" href="https://x.com/BitcoinAfterLif" title="@BitcoinAfterLif on X">@X</a>
</nav>
</div>
</div>
<main>
<header class="post-head">
<div class="wrap">
<span class="eyebrow">Blog</span>
<h1>Proof of Life Without Surveillance: How Your Wallet Tells the Protocol You're Still Here</h1>
<div class="post-meta">
<time datetime="2026-09-26">26 September 2026</time>
<span class="dot"></span>
<span translate="no">Bitcoin After Life</span>
<span class="dot"></span>
<span>8 min read</span>
</div>
</div>
</header>
<article class="article">
<figure>
<img src="img/proof-of-life-cover.webp" width="1600" height="900" loading="lazy" alt="A Bitcoin wallet linked by a heartbeat line to a clock and an hourglass">
</figure>
<p>Every inheritance protocol has to answer one question that Bitcoin, on its own, cannot: <strong>how does it know when you're gone?</strong></p>
<p>Traditional systems answer it the traditional way. A death certificate. A hospital record. A family member who calls the lawyer. A court that opens probate. A chain of humans, each verifying the previous one, each an opportunity for error, delay, or abuse.</p>
<p>For a protocol that has to survive decades, span jurisdictions, and never trust anyone, this is not an option. So <span translate="no">Bitcoin After Life</span> inverts the question. It never tries to detect death. It waits for you to show that you're alive — and if you stop, it eventually lets go.</p>
<p>The mechanism that does this is called <strong>Check Alive</strong>. To understand it, you first need one idea that sits at the heart of the whole protocol: once a will is signed and handed to the Will-Executors, it cannot be taken back. It can only be <em>beaten</em>.</p>
<h2>The wrong way to know</h2>
<p>Before looking at how BAL does it, it's worth being honest about how it <em>doesn't</em>.</p>
<p>A naive protocol would ask you to check in on a website. Every month, log into a dashboard, click a button, prove you're around. Miss too many check-ins and the inheritance executes.</p>
<p>This is how many custodial "dead man's switch" services operate, and it has problems that disqualify it for Bitcoin-native inheritance:</p>
<ul style="padding-left:22px">
<li><strong>It requires an account.</strong> An identity, an email, a password, a server that knows who you are. Everything BAL was built to avoid.</li>
<li><strong>It puts someone else in charge of the clock.</strong> The service sends the reminders, decides whether they were answered, and decides when you are presumed dead. It becomes a single point of failure — and of abuse.</li>
<li><strong>It usually runs on a short leash.</strong> A monthly check-in means a hospital stay or a long trip can be enough to trigger an inheritance while you're still alive.</li>
</ul>
<h2>The right question</h2>
<p>BAL asks something different. Not <em>"is this person dead?"</em> — impossible to answer without either surveillance or a trusted witness — but <em>"has the owner of this wallet come back and said: not yet?"</em></p>
<p>And the only way to say "not yet" is with the one thing only you have: the keys to your wallet.</p>
<h2>The rule everything depends on</h2>
<p>An inheritance transaction is a normal Bitcoin transaction, fully signed by you, with a locktime: the network refuses it until the delivery date. Once you send it to your Will-Executors, it lives on independent servers you don't control. You can't recall it, and you can't make them forget it — nor should you have to trust them to.</p>
<p>So there are only two ways to change a will that has already been handed out, and they are not symmetric.</p>
<p><strong>Bringing the date closer is free.</strong> The plugin builds a new version of the will, dated one day <em>earlier</em> than the one the Will-Executors already hold, and asks you to sign it. Nothing is broadcast today. When the time comes, the newer transaction becomes valid first; a Will-Executor broadcasts it to earn its fee, and it spends the coins. The older transaction, dated a day later, now points at coins that no longer exist — and every node on the network rejects it. No server makes that decision. Bitcoin's rule against double-spending does.</p>
<p>This is also how every ordinary change to a will is handled. Each time you close Electrum, the plugin checks your coins, your balance and your heirs. If anything has changed, it updates the will automatically — anticipated by one day — and you confirm it with your signature. That covers four situations:</p>
<ul style="padding-left:22px">
<li>you <strong>received funds</strong>, which the old will doesn't include;</li>
<li>you <strong>spent funds</strong> — your payment has already moved some of the coins the old will pointed to, so that version could never be executed anyway;</li>
<li>you <strong>added, removed or changed an heir</strong>, or the share assigned to one;</li>
<li>you <strong>brought the delivery date forward</strong>.</li>
</ul>
<p>None of these needs an extra on-chain transaction from BAL. Only one thing does: pushing the date later.</p>
<p><strong>Pushing the date further away costs a transaction.</strong> A later-dated will can never beat an earlier one: the old transaction would simply become valid first, and a Will-Executor still holding it would broadcast it. So before the date can move out, the old will has to be voided. The plugin's <strong>Invalidate</strong> command makes a real on-chain transaction that changes the coins the old will points to — which turns every copy of it into a worthless piece of data — and then a new will with the later date is signed and distributed. That invalidation is a normal Bitcoin transaction, and you pay a miner fee for it.</p>
<figure class="diagram">
<a href="img/proof-of-life-two-directions.webp" target="_blank" rel="noopener"><img src="img/proof-of-life-two-directions.webp" width="1440" height="1512" loading="lazy" alt="Diagram. Anticipate, to update the will: done automatically each time you close Electrum, after you receive or spend funds, change heirs or shares, or bring the date forward. A new will dated one day earlier is broadcast first and the old one is rejected by the network. Nothing on-chain, free. Postpone, to push delivery later: an on-chain Invalidate voids the old will, then a new will with a later date is signed and sent out. One on-chain transaction, with a miner fee."></a>
<figcaption>Click or tap the diagram to open it full size.</figcaption>
</figure>
<p>Keep that asymmetry in mind, because it is exactly what Check Alive is built on.</p>
<h2>How Check Alive actually works</h2>
<p>Check Alive is a warning window <em>before</em> your delivery date, and you choose how long it is — six months, a year — or you set it as a fixed date. It's available in the plugin's advanced mode.</p>
<p>Each time you close Electrum, the plugin checks where you stand. As long as today is before the start of that window, nothing special happens: ordinary changes are handled the usual way, anticipated by one day. Once you're inside it — the final stretch before delivery — the plugin tells you the Check Alive threshold has passed and prepares an Invalidate for you. Sign it, and the old will is voided on-chain and a new one, with a later date, is distributed.</p>
<p>Here is how it plays out with a delivery date two years away and Check Alive set to six months — so the window opens after eighteen months:</p>
<figure class="diagram only-desktop">
<a href="img/proof-of-life-check-alive.webp" target="_blank" rel="noopener"><img src="img/proof-of-life-check-alive.webp" width="1440" height="1200" loading="lazy" alt="Check Alive example: delivery date two years away, Check Alive set to six months. For the first 18 months, closing Electrum only triggers routine updates anticipated by one day, free. In the last 6 months the threshold has passed: the plugin asks you to Invalidate the old will and push the date out, with a miner fee. If you stop using Electrum, the Will-Executors broadcast the will on the delivery date. Calendar reminders are spread across the window, the last one the day before delivery."></a>
</figure>
<div class="tablewrap only-mobile">
<table>
<thead>
<tr><th>What you do</th><th>What happens</th></tr>
</thead>
<tbody>
<tr><td>You use and close Electrum during the first 18 months</td><td>Nothing special — you're before the threshold; routine updates just anticipate the will by a day</td></tr>
<tr><td>You close Electrum in the last 6 months before delivery</td><td>The threshold has passed: the plugin asks you to invalidate the old will and push the date out</td></tr>
<tr><td>You stop using Electrum</td><td>Nothing postpones the will. On the delivery date, the Will-Executors broadcast it</td></tr>
</tbody>
</table>
</div>
<p>The plugin can also export calendar reminders spread across that final window, the last one the day before delivery — reminders that live in your own calendar, not on anyone's server.</p>
<p>As long as you keep coming back and accept the prompt when the window opens, your will never executes. Stop coming back, and the last date you committed to stands.</p>
<p>The plugin never does any of this on its own. It asks; you sign. Your "not yet" is a Bitcoin transaction signed with your own keys — about the hardest proof of life there is to forge.</p>
<h2>What Check Alive is not</h2>
<p>It is worth stating clearly what this mechanism does <em>not</em> claim to be.</p>
<p><strong>It is not a definitive proof of life.</strong> If someone else gains control of your wallet, they could accept the prompt too — the protocol can't tell who is at the keyboard. It isn't detecting death; it's drawing an inference from the fact that someone holding your keys came back and said "not yet". That's why the security of your seed remains the foundation of everything.</p>
<p><strong>It is not a legal document.</strong> No court will accept "the owner stopped postponing" as evidence of anything. The inheritance executes because the cryptography allows it, not because a judge has ruled on your fate.</p>
<p><strong>It is not a substitute for a will in the traditional sense.</strong> If you have other assets, dependents, or legal obligations, you still need the normal legal instruments. BAL handles what it handles: the Bitcoin, cleanly, on time, without a custodian.</p>
<h2>Why this matters more than it sounds</h2>
<p>Every service that promises to "act on your death" faces the same choice: watch you, or trust someone to watch you. Watching you means surveillance — logins, heartbeats, biometrics, a growing dossier of your habits and health. Trusting a watcher means custody — a lawyer, a family member, a company, each a single point of failure and a single point of abuse.</p>
<p>BAL refused both. The check happens inside your own wallet, on your own machine. No account knows you exist. No server tracks when you were last seen. The proof that you're still here is a Bitcoin transaction signed with your keys — public, tamper-proof, and revealing nothing about who you are, where you live, or how you're doing.</p>
<p>You are not being watched. You are simply being <em>not-inferred-dead</em> — by a protocol that only learns you're alive when you choose to tell it.</p>
<h2>The honest edge cases</h2>
<ul style="padding-left:22px">
<li><strong>Every postponement costs a fee.</strong> Each one is an on-chain transaction. With a short window and a close delivery date, you'll pay more often. The manual recommends a rolling deadline instead — for example "always five years from today" — renewed every two or three years. Anticipating is free; postponing again and again is not.</li>
<li><strong>Every update brings delivery a day closer.</strong> Because each automatic refresh is anticipated by one day, years of normal use slowly pull the date in. The periodic renewal that moves it back out — a postponement — takes care of that.</li>
<li><strong>Long silences need long settings.</strong> A holder who deliberately doesn't open their wallet for years must set the delivery date far enough out — Check Alive only speaks up in the final stretch before it. Set it too close and the will could execute while you're still around. That's a configuration choice — but it's yours to get right.</li>
<li><strong>A locked-in delivery.</strong> Once you can no longer open your wallet, for any reason, the date freezes where you last left it. Set years ahead, your family may wait years; set months ahead, months. Choose deliberately.</li>
<li><strong>One seed, one device.</strong> Spending even a single satoshi with the same seed from another device changes the coins the will points to, and the network will reject the inheritance when a Will-Executor tries to broadcast it. Keep the inheritance wallet on one device, with the plugin.</li>
</ul>
<p>None of these are surprises the protocol hides. They are the natural consequences of a mechanism that refuses to know more than it needs to.</p>
<h2>The takeaway</h2>
<p>Most inheritance systems answer "is this person dead?" by watching, by asking, or by trusting. BAL asks no one but you — and only you can answer, with your own signature.</p>
<p>Bringing your delivery closer is free and silent. Pushing it away costs a transaction, because the only way to take back a promise you've already handed out is to move the coins it points to. Check Alive simply reminds you, from inside your own wallet, when it's time to decide.</p>
<p>That is proof of life without surveillance. And it is, we think, one of the reasons a Bitcoin-native inheritance protocol was worth building in the first place.</p>
<aside class="related">
<h2>Keep reading</h2>
<ul style="padding-left:22px">
<li><a href="why-electrum-and-timelocks.html">Why We Built BAL as an Electrum Plugin — and Why Timelocks Remove the Need for Trust</a></li>
<li><a href="the-quietest-day.html">The Quietest Day: What Really Happens When Your Bitcoin Inheritance Arrives</a></li>
<li><a href="should-you-tell-your-family-about-your-bitcoin.html">Should You Tell Your Family About Your Bitcoin? What They Need to Know, and What They Don't</a></li>
</ul>
<p>New to Bitcoin After Life? Read the <a href="https://bitcoin-after.life/docs/">user manual</a> or <a href="../index.html#plugin">get the Electrum plugin</a>.</p>
</aside>
<hr>
<p class="disclaimer">Want the details? The manual covers <a href="https://bitcoin-after.life/docs/user-guide/check-alive.html" target="_blank" rel="noopener">Check Alive</a> and <a href="https://bitcoin-after.life/docs/user-guide/updating.html" target="_blank" rel="noopener">postponing vs anticipating</a>. <span translate="no">Bitcoin After Life</span> is open source and Bitcoin-only: explore the plugin and the server on <a href="https://bitcoin-after.life/gitea/bitcoinafterlife" target="_blank" rel="noopener">Gitea</a>.</p>
</article>
<div class="back">
<a href="../blog.html">← Back to the blog</a>
</div>
</main>
<footer>
<div class="wrap">
<div class="sig">Svātantrya</div>
<div>Signed — <span translate="no">Bitcoin After Life</span> Protocol</div>
<div class="links">
<a href="https://bitcoin-after.life">bitcoin-after.life</a>
<a href="mailto:info@bitcoin-after.life">info@bitcoin-after.life</a>
<a href="https://x.com/BitcoinAfterLif">@BitcoinAfterLif</a>
<a href="https://bitcoin-after.life/pgp">PGP Key</a>
<a href="https://bitcoin-after.life/gitea/bitcoinafterlife">Source Code</a>
</div>
<div class="built">Built with ₿itcoin. No FIAT was used in the making of this protocol.</div>
</div>
</footer>
<script>
/* Mobile menu toggle -- identical behaviour across all pages. */
(function () {
const toggle = document.getElementById('navToggle');
const nav = document.getElementById('mainNav');
if (!toggle || !nav) return;
function setOpen(open) {
nav.classList.toggle('open', open);
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
}
toggle.addEventListener('click', function () {
setOpen(!nav.classList.contains('open'));
});
nav.addEventListener('click', function (e) {
if (e.target.tagName === 'A') setOpen(false);
});
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') setOpen(false);
});
})();
</script>
</body>
</html>

View File

@@ -0,0 +1,342 @@
<!DOCTYPE html>
<html lang="en" class="nojs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Earn Bitcoin Fees Running a Will-Executor Server — Bitcoin After Life</title>
<meta name="description" content="Every BAL inheritance transaction pays a fee, in Bitcoin and only on success, to the server that broadcasts it. Why run a Will-Executor for the long term.">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Bitcoin After Life">
<meta property="og:title" content="Earn Bitcoin Fees Running a Will-Executor Server — Bitcoin After Life">
<meta property="og:description" content="Every BAL inheritance transaction pays a fee, in Bitcoin and only on success, to the server that broadcasts it. Why run a Will-Executor for the long term.">
<meta property="og:url" content="https://bitcoin-after.life/blog/run-a-will-executor.html">
<meta property="og:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@BitcoinAfterLif">
<meta name="twitter:title" content="Earn Bitcoin Fees Running a Will-Executor Server — Bitcoin After Life">
<meta name="twitter:description" content="Every BAL inheritance transaction pays a fee, in Bitcoin and only on success, to the server that broadcasts it. Why run a Will-Executor for the long term.">
<meta name="twitter:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta name="theme-color" content="#2d6cdf">
<link rel="canonical" href="https://bitcoin-after.life/blog/run-a-will-executor.html">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Run a Will-Executor: Earn Bitcoin Fees by Powering Decentralized Inheritance",
"description": "Every BAL inheritance transaction pays a fee, in Bitcoin and only on success, to the server that broadcasts it. Why run a Will-Executor for the long term.",
"image": "https://bitcoin-after.life/blog/img/run-a-will-executor-cover.webp",
"datePublished": "2026-08-30T09:00:00+02:00",
"dateModified": "2026-08-30T09:00:00+02:00",
"author": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/"
},
"publisher": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/",
"logo": {
"@type": "ImageObject",
"url": "https://bitcoin-after.life/pitura/logo/Logo_nero.svg"
}
},
"mainEntityOfPage": "https://bitcoin-after.life/blog/run-a-will-executor.html",
"inLanguage": "en"
}
</script>
<link rel="icon" type="image/x-icon" href="/pitura/ico/Logo_nero.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/pitura/ico/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/pitura/ico/favicon-16.png">
<script>
/* Runs before first paint: removes the `nojs` class set on <html>, so the
mobile menu button is only shown when it can actually work. */
document.documentElement.classList.remove('nojs');
</script>
<style>
:root{
--maxw:1120px;
--radius:10px;
--bg:#eef1f4;
--panel:#ffffff;
--ink:#1a2027;
--muted:#5b6672;
--line:#dfe4ea;
--line-strong:#cbd2da;
--accent:#2d6cdf;
--accent-soft:#e6eefc;
--display:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--body:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
--shadow:0 1px 2px rgba(20,30,50,.05);
--shadow-lg:0 6px 20px rgba(20,30,50,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);
line-height:1.55;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
/* ---------- Top bar (shared with home and manifesto) ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.86);
backdrop-filter:saturate(150%) blur(8px);border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:18px;height:60px}
.topbar .logo{display:flex;align-items:center;gap:10px;font-family:var(--display);
font-weight:600;color:var(--ink)}
.topbar .logo img{width:30px;height:30px;display:block}
.topbar .logo span{font-size:15px;letter-spacing:-.01em}
.topbar nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
.topbar nav a{color:var(--muted);font-size:13px;padding:7px 11px;border-radius:7px}
.topbar nav a:hover{color:var(--ink);background:var(--accent-soft);text-decoration:none}
.topbar nav a.active{color:var(--accent);font-weight:600;border:1px solid #cfe0fb;
background:var(--accent-soft)}
.topbar .x{color:var(--ink);font-weight:600}
.navtoggle{
display:none;margin-left:auto;width:44px;height:44px;flex:none;
align-items:center;justify-content:center;
background:var(--panel);border:1px solid var(--line-strong);border-radius:9px;
color:var(--ink);cursor:pointer;padding:0;
}
.navtoggle:hover{border-color:var(--accent);color:var(--accent)}
.navtoggle .bars{display:block;width:18px;height:2px;background:currentColor;position:relative}
.navtoggle .bars::before,.navtoggle .bars::after{
content:"";position:absolute;left:0;width:18px;height:2px;background:currentColor}
.navtoggle .bars::before{top:-6px}
.navtoggle .bars::after{top:6px}
.navtoggle[aria-expanded="true"] .bars{background:transparent}
.navtoggle[aria-expanded="true"] .bars::before{top:0;transform:rotate(45deg)}
.navtoggle[aria-expanded="true"] .bars::after{top:0;transform:rotate(-45deg)}
/* ---------- Footer (shared) ---------- */
footer{border-top:1px solid var(--line);margin-top:56px;padding:34px 0 40px;
color:var(--muted);font-size:14px;background:var(--panel)}
footer .sig{font-family:var(--display);font-weight:600;color:var(--ink);font-size:16px}
footer .links{display:flex;gap:16px;flex-wrap:wrap;margin:14px 0}
footer .built{font-size:13px;color:var(--muted);margin-top:8px}
@media (max-width:900px){
.navtoggle{display:inline-flex}
.topbar nav{
position:absolute;top:100%;left:0;right:0;
margin-left:0;display:none;flex-direction:column;gap:2px;flex-wrap:nowrap;
background:var(--panel);border-bottom:1px solid var(--line);
box-shadow:var(--shadow-lg);padding:10px 20px 16px;
}
.topbar nav.open{display:flex}
.topbar nav a{font-size:15.5px;padding:0 12px;min-height:44px;
display:flex;align-items:center;border-radius:8px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/*
Without JavaScript the panel cannot be toggled, so the links are shown
inline. On narrow screens they wrap under the logo and the bar is allowed
to grow, instead of being clipped by the fixed 60px height.
*/
.nojs .navtoggle{display:none}
.nojs .topbar nav{position:static;display:flex;flex-direction:row;flex-wrap:wrap;
box-shadow:none;border-bottom:0;padding:0;margin-left:auto;background:transparent}
@media (max-width:900px){
.nojs .topbar .wrap{height:auto;min-height:56px;flex-wrap:wrap;padding-bottom:8px;gap:10px}
.nojs .topbar nav{margin-left:0;width:100%;gap:4px 6px}
.nojs .topbar nav a{font-size:14.5px;min-height:40px;padding:0 10px;
display:flex;align-items:center;border:1px solid var(--line);border-radius:8px}
}
.post-head{padding:44px 0 30px;border-bottom:1px solid var(--line);
background:radial-gradient(820px 280px at 50% -40%,var(--accent-soft),transparent 70%)}
.post-head .wrap{max-width:760px}
.post-head .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.14em;
text-transform:uppercase;color:var(--accent);display:block;margin-bottom:14px}
.post-head h1{font-family:var(--display);font-weight:600;font-size:40px;
letter-spacing:-.02em;line-height:1.12;margin:0 0 14px}
.post-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
font-size:13px;color:var(--muted)}
.post-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--line-strong)}
.article{max-width:760px;margin:0 auto;padding:34px 20px 8px}
.article p{font-size:17px;line-height:1.8;color:#36404b;margin:0 0 20px}
.article p strong{color:var(--ink);font-weight:600}
.article h2{font-family:var(--display);font-weight:600;font-size:25px;
letter-spacing:-.01em;margin:38px 0 14px;padding-bottom:10px;
border-bottom:1px solid var(--line-strong)}
.article ol{padding-left:22px;margin:0 0 20px}
.article li{font-size:17px;line-height:1.8;color:#36404b;margin-bottom:14px}
.article li strong{color:var(--ink);font-weight:600}
.article figure{margin:30px 0}
.article figure img{width:100%;height:auto;display:block;border-radius:var(--radius);
border:1px solid var(--line);box-shadow:var(--shadow)}
.article hr{border:0;border-top:1px solid var(--line-strong);margin:34px 0 22px}
.article .disclaimer{font-size:14px;color:var(--muted);font-style:italic;line-height:1.7}
.back{max-width:760px;margin:26px auto 0;padding:0 20px 8px}
.back a{font-size:14px;font-weight:600}
@media (max-width:700px){
.post-head{padding:30px 0 24px}
.post-head h1{font-size:29px}
.article{padding:28px 18px 8px}
.article h2{font-size:22px;margin-top:32px}
.article figure{margin:24px -18px}
.article figure img{border-radius:0;border-left:0;border-right:0}
}
@media (max-width:400px){
.post-head h1{font-size:25px}
.wrap{padding:0 15px}
.article{padding:24px 16px 8px}
.article figure{margin:22px -16px}
}
</style>
</head>
<body>
<div class="topbar">
<div class="wrap">
<a class="logo" href="../index.html"><img src="../pitura/logo/Logo_nero.svg" alt="Bitcoin After Life logo"><span translate="no">Bitcoin After Life</span></a>
<button class="navtoggle" id="navToggle" type="button"
aria-expanded="false" aria-controls="mainNav" aria-label="Open menu">
<span class="bars"></span>
</button>
<nav id="mainNav">
<a href="../index.html#features">Features</a>
<a href="../index.html#how">How it works</a>
<a href="../index.html#plugin">Plugin</a>
<a href="../index.html#faq">FAQ</a>
<a class="active" href="../blog.html">Blog</a>
<a href="../manifesto.html">Manifesto</a>
<a class="x" href="https://x.com/BitcoinAfterLif" title="@BitcoinAfterLif on X">@X</a>
</nav>
</div>
</div>
<main>
<header class="post-head">
<div class="wrap">
<span class="eyebrow">Blog</span>
<h1>Run a Will-Executor: Earn Bitcoin Fees by Powering Decentralized Inheritance</h1>
<div class="post-meta">
<time datetime="2026-08-30">30 August 2026</time>
<span class="dot"></span>
<span translate="no">Bitcoin After Life</span>
<span class="dot"></span>
<span>5 min read</span>
</div>
</div>
</header>
<article class="article">
<figure>
<img src="img/run-a-will-executor-cover.webp" width="1600" height="900" loading="lazy" alt="An isometric server node connected to a Bitcoin block chain, representing a Will-Executor">
</figure>
<p>Every protocol has a heartbeat. In <span translate="no">Bitcoin After Life</span>, that heartbeat is the <strong>Will-Executor</strong> network: independent servers around the world that store signed, time-locked inheritance transactions and broadcast them when their delivery date arrives. Without executors, there is no protocol. And here's the part most people miss: <strong>anyone can run one — and get paid in Bitcoin for doing it.</strong></p>
<p>This article explains what running a Will-Executor actually involves, how the economics work, and why we believe it is one of the most interesting long-term, Bitcoin-native earning opportunities nobody is talking about yet.</p>
<h2>What a Will-Executor actually does</h2>
<p>Strip away the name and a Will-Executor is a beautifully simple service. It:</p>
<ol>
<li><strong>Receives</strong> fully signed, time-locked inheritance transactions from BAL plugin users.</li>
<li><strong>Stores</strong> them safely — sometimes for years.</li>
<li><strong>Broadcasts</strong> each transaction to the Bitcoin network on its delivery date.</li>
</ol>
<p>That's all. The server cannot modify the transactions (they are already signed), cannot execute them early (Bitcoin's consensus rules reject them before the locktime), and cannot see anything beyond what the transaction itself reveals. It is infrastructure, not a fiduciary.</p>
<p>Technically, the requirements are modest. You don't need a datacenter or specialized hardware — the <a href="https://bitcoin-after.life/gitea/bitcoinafterlife/bal-server" target="_blank" rel="noopener">BAL server</a> is open source, and a reliable, always-on machine with modest resources is enough to start. Once running, you can list your server on the public <a href="https://welist.bitcoin-after.life/" target="_blank" rel="noopener">WeList directory</a>, where plugin users discover and select executors for their wills.</p>
<h2>The economics: paid on success, in Bitcoin, forever</h2>
<p>The incentive design is deliberately simple and entirely on-chain:</p>
<ul style="padding-left:22px">
<li>Every inheritance transaction created by the BAL plugin includes a <strong>fee output for the Will-Executor</strong>.</li>
<li>That fee is paid <strong>only when the transaction is broadcast and confirms</strong> on the blockchain. No execution, no payment. The incentive to store carefully and broadcast punctually is built into the money itself.</li>
<li>If several executors hold the same inheritance, <strong>the first to broadcast it wins the fee</strong>. This race is a feature: it makes every executor eager to be online, honest, and fast on delivery day.</li>
<li>Fees are denominated in <strong>Bitcoin</strong> — not in a token, not in points, not in a promise. As Bitcoin's value grows over the years between a will's creation and its execution, the real-world value of every stored will grows with it.</li>
</ul>
<p>That last point deserves emphasis. A Will-Executor accumulates a portfolio of future-dated, Bitcoin-denominated claims. Each one is a small, probabilistic, long-duration asset — closer to holding a book of very patient options than to running a conventional service. The protocol is designed for inheritances that may execute ten, twenty, thirty years from now. The executor business is a bet on longevity: the protocol's, and your server's.</p>
<h2>Why the network needs you</h2>
<p>Decentralized inheritance has a bootstrapping problem that is the mirror image of Bitcoin's own early days: the system is only as strong as its redundancy.</p>
<p>The BAL plugin creates one transaction per selected Will-Executor precisely because <strong>only one of them needs to survive until the delivery date</strong>. Redundancy is the guarantee. But that guarantee gets stronger with every independent operator who joins:</p>
<ul style="padding-left:22px">
<li><strong>More executors = more resilience.</strong> Geographic, jurisdictional, and operational diversity means no single outage, seizure, or bankruptcy can break the chain of inheritance.</li>
<li><strong>More executors = more credibility.</strong> Users choosing servers from the WeList want to see a living, competitive directory, not a monoculture.</li>
<li><strong>More executors = earlier fees.</strong> A larger network attracts more users, and more users mean more wills stored — the fee pipeline starts flowing sooner for everyone.</li>
</ul>
<p>If you believed in running a Bitcoin node when it was "useless," or mining when it was a hobby, this will feel familiar: critical infrastructure, run by volunteers-turned-stakeholders, rewarded later than expected and more than expected.</p>
<h2>Getting started</h2>
<ol>
<li>Read <a href="https://bitcoin-after.life/docs/will-executors/what-they-are.html" target="_blank" rel="noopener">What Will-Executors are</a> in the manual for the full mental model.</li>
<li>Follow <a href="https://bitcoin-after.life/docs/will-executors/running-a-server.html" target="_blank" rel="noopener">Running a Will-Executor</a> for the setup walkthrough — the code is MIT-licensed and open for audit.</li>
<li>Add your server to the <a href="https://welist.bitcoin-after.life/" target="_blank" rel="noopener">WeList</a> so users can find and select you.</li>
<li>Stay online, stay honest, and let time — and the timelocks — do the rest.</li>
</ol>
<h2>The long game</h2>
<p>Bitcoin turned "being your own bank" from a slogan into software. <span translate="no">Bitcoin After Life</span> is doing the same for "leaving something behind." But protocols don't run themselves: behind every inheritance that arrives exactly on schedule, decades after it was written, there will be a server that kept its promise — and collected its fee.</p>
<p>That server could be yours.</p>
<aside class="related">
<h2>Keep reading</h2>
<ul style="padding-left:22px">
<li><a href="what-a-will-executor-can-see.html">What Can a Will-Executor Actually See? Privacy in the BAL Protocol</a></li>
<li><a href="why-electrum-and-timelocks.html">Why We Built BAL as an Electrum Plugin — and Why Timelocks Remove the Need for Trust</a></li>
<li><a href="liquid-network-and-why-we-trust-only-bedrock.html">Liquid Network's $320M Lesson: Why BAL Only Builds on Bedrock</a></li>
<li><a href="bal-is-a-protocol-not-a-plugin.html">The Plugin Is Just the First Door: BAL Is a Protocol, and Will-Executors Are Its Foundation</a></li>
</ul>
<p>New to Bitcoin After Life? Read the <a href="https://bitcoin-after.life/docs/">user manual</a> or <a href="../index.html#plugin">get the Electrum plugin</a>.</p>
</aside>
<p><em>Bitcoin After Life is open source and Bitcoin-only. Explore the code on <a href="https://bitcoin-after.life/gitea/bitcoinafterlife" target="_blank" rel="noopener">Gitea</a>, browse the executor directory at <a href="https://welist.bitcoin-after.life/" target="_blank" rel="noopener">welist.bitcoin-after.life</a>, and read the full documentation at <a href="https://bitcoin-after.life/docs/" target="_blank" rel="noopener">bitcoin-after.life/docs</a>.</em></p>
</article>
<div class="back">
<a href="../blog.html">← Back to the blog</a>
</div>
</main>
<footer>
<div class="wrap">
<div class="sig">Svātantrya</div>
<div>Signed — <span translate="no">Bitcoin After Life</span> Protocol</div>
<div class="links">
<a href="https://bitcoin-after.life">bitcoin-after.life</a>
<a href="mailto:info@bitcoin-after.life">info@bitcoin-after.life</a>
<a href="https://x.com/BitcoinAfterLif">@BitcoinAfterLif</a>
<a href="https://bitcoin-after.life/pgp">PGP Key</a>
<a href="https://bitcoin-after.life/gitea/bitcoinafterlife">Source Code</a>
</div>
<div class="built">Built with ₿itcoin. No FIAT was used in the making of this protocol.</div>
</div>
</footer>
<script>
/* Mobile menu toggle -- identical behaviour across all pages. */
(function () {
const toggle = document.getElementById('navToggle');
const nav = document.getElementById('mainNav');
if (!toggle || !nav) return;
function setOpen(open) {
nav.classList.toggle('open', open);
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
}
toggle.addEventListener('click', function () {
setOpen(!nav.classList.contains('open'));
});
nav.addEventListener('click', function (e) {
if (e.target.tagName === 'A') setOpen(false);
});
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') setOpen(false);
});
})();
</script>
</body>
</html>

View File

@@ -0,0 +1,372 @@
<!DOCTYPE html>
<html lang="en" class="nojs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Should You Tell Your Family About Your Bitcoin? — Bitcoin After Life</title>
<meta name="description" content="Your family doesn't need your seed, your balance or your passwords. They need to know one thing: that your bitcoin will reach them, and how.">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Bitcoin After Life">
<meta property="og:title" content="Should You Tell Your Family About Your Bitcoin? — Bitcoin After Life">
<meta property="og:description" content="Your family doesn't need your seed, your balance or your passwords. They need to know one thing: that your bitcoin will reach them, and how.">
<meta property="og:url" content="https://bitcoin-after.life/blog/should-you-tell-your-family-about-your-bitcoin.html">
<meta property="og:image" content="https://bitcoin-after.life/blog/img/should-you-tell-your-family-cover.webp">
<meta property="og:image:width" content="1600">
<meta property="og:image:height" content="900">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@BitcoinAfterLif">
<meta name="twitter:title" content="Should You Tell Your Family About Your Bitcoin? — Bitcoin After Life">
<meta name="twitter:description" content="Your family doesn't need your seed, your balance or your passwords. They need to know one thing: that your bitcoin will reach them, and how.">
<meta name="twitter:image" content="https://bitcoin-after.life/blog/img/should-you-tell-your-family-cover.webp">
<meta name="theme-color" content="#2d6cdf">
<link rel="canonical" href="https://bitcoin-after.life/blog/should-you-tell-your-family-about-your-bitcoin.html">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Should You Tell Your Family About Your Bitcoin? What They Need to Know, and What They Don't",
"description": "Your family doesn't need your seed, your balance or your passwords. They need to know one thing: that your bitcoin will reach them, and how.",
"image": "https://bitcoin-after.life/blog/img/should-you-tell-your-family-cover.webp",
"datePublished": "2026-10-04T20:00:00+02:00",
"dateModified": "2026-10-04T20:00:00+02:00",
"author": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/"
},
"publisher": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/",
"logo": {
"@type": "ImageObject",
"url": "https://bitcoin-after.life/pitura/logo/Logo_nero.svg"
}
},
"mainEntityOfPage": "https://bitcoin-after.life/blog/should-you-tell-your-family-about-your-bitcoin.html",
"inLanguage": "en"
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Bitcoin After Life",
"item": "https://bitcoin-after.life/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://bitcoin-after.life/blog.html"
},
{
"@type": "ListItem",
"position": 3,
"name": "Should You Tell Your Family About Your Bitcoin? What They Need to Know, and What They Don't",
"item": "https://bitcoin-after.life/blog/should-you-tell-your-family-about-your-bitcoin.html"
}
]
}
</script>
<link rel="icon" type="image/x-icon" href="/pitura/ico/Logo_nero.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/pitura/ico/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/pitura/ico/favicon-16.png">
<script>
/* Runs before first paint: removes the `nojs` class set on <html>, so the
mobile menu button is only shown when it can actually work. */
document.documentElement.classList.remove('nojs');
</script>
<style>
:root{
--maxw:1120px;
--radius:10px;
--bg:#eef1f4;
--panel:#ffffff;
--ink:#1a2027;
--muted:#5b6672;
--line:#dfe4ea;
--line-strong:#cbd2da;
--accent:#2d6cdf;
--accent-soft:#e6eefc;
--display:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--body:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
--shadow:0 1px 2px rgba(20,30,50,.05);
--shadow-lg:0 6px 20px rgba(20,30,50,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);
line-height:1.55;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
/* ---------- Top bar (shared with home and manifesto) ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.86);
backdrop-filter:saturate(150%) blur(8px);border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:18px;height:60px}
.topbar .logo{display:flex;align-items:center;gap:10px;font-family:var(--display);
font-weight:600;color:var(--ink)}
.topbar .logo img{width:30px;height:30px;display:block}
.topbar .logo span{font-size:15px;letter-spacing:-.01em}
.topbar nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
.topbar nav a{color:var(--muted);font-size:13px;padding:7px 11px;border-radius:7px}
.topbar nav a:hover{color:var(--ink);background:var(--accent-soft);text-decoration:none}
.topbar nav a.active{color:var(--accent);font-weight:600;border:1px solid #cfe0fb;
background:var(--accent-soft)}
.topbar .x{color:var(--ink);font-weight:600}
.navtoggle{
display:none;margin-left:auto;width:44px;height:44px;flex:none;
align-items:center;justify-content:center;
background:var(--panel);border:1px solid var(--line-strong);border-radius:9px;
color:var(--ink);cursor:pointer;padding:0;
}
.navtoggle:hover{border-color:var(--accent);color:var(--accent)}
.navtoggle .bars{display:block;width:18px;height:2px;background:currentColor;position:relative}
.navtoggle .bars::before,.navtoggle .bars::after{
content:"";position:absolute;left:0;width:18px;height:2px;background:currentColor}
.navtoggle .bars::before{top:-6px}
.navtoggle .bars::after{top:6px}
.navtoggle[aria-expanded="true"] .bars{background:transparent}
.navtoggle[aria-expanded="true"] .bars::before{top:0;transform:rotate(45deg)}
.navtoggle[aria-expanded="true"] .bars::after{top:0;transform:rotate(-45deg)}
/* ---------- Footer (shared) ---------- */
footer{border-top:1px solid var(--line);margin-top:56px;padding:34px 0 40px;
color:var(--muted);font-size:14px;background:var(--panel)}
footer .sig{font-family:var(--display);font-weight:600;color:var(--ink);font-size:16px}
footer .links{display:flex;gap:16px;flex-wrap:wrap;margin:14px 0}
footer .built{font-size:13px;color:var(--muted);margin-top:8px}
@media (max-width:900px){
.navtoggle{display:inline-flex}
.topbar nav{
position:absolute;top:100%;left:0;right:0;
margin-left:0;display:none;flex-direction:column;gap:2px;flex-wrap:nowrap;
background:var(--panel);border-bottom:1px solid var(--line);
box-shadow:var(--shadow-lg);padding:10px 20px 16px;
}
.topbar nav.open{display:flex}
.topbar nav a{font-size:15.5px;padding:0 12px;min-height:44px;
display:flex;align-items:center;border-radius:8px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/*
Without JavaScript the panel cannot be toggled, so the links are shown
inline. On narrow screens they wrap under the logo and the bar is allowed
to grow, instead of being clipped by the fixed 60px height.
*/
.nojs .navtoggle{display:none}
.nojs .topbar nav{position:static;display:flex;flex-direction:row;flex-wrap:wrap;
box-shadow:none;border-bottom:0;padding:0;margin-left:auto;background:transparent}
@media (max-width:900px){
.nojs .topbar .wrap{height:auto;min-height:56px;flex-wrap:wrap;padding-bottom:8px;gap:10px}
.nojs .topbar nav{margin-left:0;width:100%;gap:4px 6px}
.nojs .topbar nav a{font-size:14.5px;min-height:40px;padding:0 10px;
display:flex;align-items:center;border:1px solid var(--line);border-radius:8px}
}
.post-head{padding:44px 0 30px;border-bottom:1px solid var(--line);
background:radial-gradient(820px 280px at 50% -40%,var(--accent-soft),transparent 70%)}
.post-head .wrap{max-width:760px}
.post-head .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.14em;
text-transform:uppercase;color:var(--accent);display:block;margin-bottom:14px}
.post-head h1{font-family:var(--display);font-weight:600;font-size:40px;
letter-spacing:-.02em;line-height:1.12;margin:0 0 14px}
.post-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
font-size:13px;color:var(--muted)}
.post-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--line-strong)}
.article{max-width:760px;margin:0 auto;padding:34px 20px 8px}
.article p{font-size:17px;line-height:1.8;color:#36404b;margin:0 0 20px}
.article p strong{color:var(--ink);font-weight:600}
.article h2{font-family:var(--display);font-weight:600;font-size:25px;
letter-spacing:-.01em;margin:38px 0 14px;padding-bottom:10px;
border-bottom:1px solid var(--line-strong)}
.article ol{padding-left:22px;margin:0 0 20px}
.article li{font-size:17px;line-height:1.8;color:#36404b;margin-bottom:14px}
.article li strong{color:var(--ink);font-weight:600}
.article figure{margin:30px 0}
.article figure img{width:100%;height:auto;display:block;border-radius:var(--radius);
border:1px solid var(--line);box-shadow:var(--shadow)}
.article hr{border:0;border-top:1px solid var(--line-strong);margin:34px 0 22px}
.article .disclaimer{font-size:14px;color:var(--muted);font-style:italic;line-height:1.7}
.back{max-width:760px;margin:26px auto 0;padding:0 20px 8px}
.back a{font-size:14px;font-weight:600}
@media (max-width:700px){
.post-head{padding:30px 0 24px}
.post-head h1{font-size:29px}
.article{padding:28px 18px 8px}
.article h2{font-size:22px;margin-top:32px}
.article figure{margin:24px -18px}
.article figure img{border-radius:0;border-left:0;border-right:0}
}
@media (max-width:400px){
.post-head h1{font-size:25px}
.wrap{padding:0 15px}
.article{padding:24px 16px 8px}
.article figure{margin:22px -16px}
}
.article figure.narrow img{max-width:560px;margin:0 auto}
</style>
</head>
<body>
<div class="topbar">
<div class="wrap">
<a class="logo" href="../index.html"><img src="../pitura/logo/Logo_nero.svg" alt="Bitcoin After Life logo"><span translate="no">Bitcoin After Life</span></a>
<button class="navtoggle" id="navToggle" type="button"
aria-expanded="false" aria-controls="mainNav" aria-label="Open menu">
<span class="bars"></span>
</button>
<nav id="mainNav">
<a href="../index.html#features">Features</a>
<a href="../index.html#how">How it works</a>
<a href="../index.html#plugin">Plugin</a>
<a href="../index.html#faq">FAQ</a>
<a class="active" href="../blog.html">Blog</a>
<a href="../manifesto.html">Manifesto</a>
<a class="x" href="https://x.com/BitcoinAfterLif" title="@BitcoinAfterLif on X">@X</a>
</nav>
</div>
</div>
<main>
<header class="post-head">
<div class="wrap">
<span class="eyebrow">Blog</span>
<h1>Should You Tell Your Family About Your Bitcoin? What They Need to Know, and What They Don't</h1>
<div class="post-meta">
<time datetime="2026-10-04">4 October 2026</time>
<span class="dot"></span>
<span translate="no">Bitcoin After Life</span>
<span class="dot"></span>
<span>6 min read</span>
</div>
</div>
</header>
<article class="article">
<figure>
<img src="img/should-you-tell-your-family-cover.webp" width="1600" height="900" fetchpriority="high" alt="Two people talking at a table: a speech bubble with the Bitcoin symbol, and a dotted path through a calendar date to the heir's wallet">
</figure>
<p>It usually happens at dinner. The conversation drifts to a relative's estate, or a friend's sudden illness, and for a second you think: <em>I should tell them about the bitcoin.</em> Then someone asks for the salt, and the moment passes. It has passed many times.</p>
<p>Should you tell your family about your bitcoin? Almost everyone who holds it has asked themselves that question, and almost everyone has postponed the answer. The reasons are good ones. But the silence has a cost that nobody puts on the balance sheet, and it is worth looking at it squarely — because the conversation is much shorter, and much safer, than it seems.</p>
<h2>Why people stay silent, and why the silence is dangerous</h2>
<p>There are two fears behind the silence, and both are legitimate.</p>
<p>The first is security. A family that knows you hold bitcoin is a family that can mention it to the wrong person, at the wrong time. Every holder has read the stories.</p>
<p>The second is privacy. Telling your family <em>that</em> you hold bitcoin feels like telling them <em>how much</em>, and how much is nobody's business — not even theirs.</p>
<p>So people say nothing. And a wallet that nobody knows about is a wallet that nobody will ever look for. The coins are not stolen and not seized; they simply stop existing for everyone except the chain. We wrote about that outcome in <a href="what-happens-to-your-bitcoin.html">What Happens to Your Bitcoin When You're Gone?</a>, and we will not repeat it here. The short version: self-custody protects you from everyone, including the people you would most want to help.</p>
<p>Both fears come from the same assumption — that telling your family means handing them something dangerous. It doesn't have to.</p>
<h2>Does your spouse need to know? What to say, and what to keep to yourself</h2>
<p>Here is the distinction that makes the conversation possible. There is what your family needs to know for the inheritance to work, and there is what exposes you. With the right setup, the two lists do not overlap.</p>
<p><strong>What they need to know:</strong></p>
<ul style="padding-left:22px">
<li>That bitcoin exists in the family, and that it is meant for them.</li>
<li>That it will reach them <em>on its own</em>, on a date you have set, without a lawyer, a court, or a company holding the keys.</li>
<li>Who will receive it, and that each of those people needs a wallet of their own, ready in advance.</li>
<li>That nobody will call them when it arrives. The wallet will simply show a balance.</li>
</ul>
<p><strong>What they do not need to know:</strong></p>
<ul style="padding-left:22px">
<li>How much.</li>
<li>Where your seed is, or that it exists in any particular place.</li>
<li>Any password, any device, any PIN.</li>
</ul>
<p>With a time-locked inheritance set up through Bitcoin After Life, the delivery does not depend on what your family knows. The transaction is already signed and waiting with independent Will-Executors; on the delivery date it is broadcast like any other payment. Your spouse does not need the seed, because the seed is never part of the plan. Your children do not need the amount, because the amount is written in a transaction they will see when it confirms, and not before.</p>
<p>That is the whole point: you can tell them everything that matters and nothing that exposes you.</p>
<figure class="narrow">
<img src="img/should-you-tell-your-family-two-lists.webp" width="1120" height="1056" loading="lazy" alt="Two lists. What they need to know: bitcoin exists in the family, it arrives on its own on a date you chose, each heir needs a wallet, nobody will call. What stays yours: how much, where your seed is, any password, device or PIN.">
</figure>
<p>One honest aside. A lot of what you find online under this question is about hiding bitcoin from a spouse during a divorce. That is a different conversation, with a lawyer, and not the one we are having here.</p>
<h2>More than one heir: shares, fairness, and changing your mind</h2>
<p>Part of why people postpone the conversation is that it forces a decision. Two children, three, a partner who is not a spouse: who gets what? And once it is decided, is it carved in stone?</p>
<p>It is not. In the plugin, heirs and their shares are ordinary settings. Add a child, remove someone, change a percentage: the will is rebuilt the next time you close Electrum, anticipated by one day, with no on-chain transaction and no fee. Changing your mind is cheap by design. We described the mechanism in <a href="proof-of-life.html">Proof of Life Without Surveillance</a>.</p>
<p>That changes the shape of the decision. You are not choosing the final split for the rest of your life. You are choosing today's split, knowing you can revisit it next year. An imperfect decision that exists beats a perfect one that is still being postponed.</p>
<h2>The heir who doesn't want to hear about Bitcoin</h2>
<p>Most families have one. The spouse who says "I don't want to deal with that", the son who changes the subject. They are not wrong to feel that way, and the good news is that the role you need from them is small.</p>
<p>They need to own a wallet. They need to keep its seed phrase somewhere safe, the way they would keep a passport. And they need to know, in one sentence, that something will arrive in that wallet one day and that it is theirs.</p>
<p>That is all. They do not need to understand timelocks or Will-Executors. They do not need to follow the price. What to leave them in writing, and what they should do in the days after the coins arrive, is covered in <a href="the-quietest-day.html">The Quietest Day</a>; a reluctant heir can read that later, or never, and the inheritance still works.</p>
<h2>When one heir knows and the others don't</h2>
<p>A very common situation: one child is "the technical one" and knows everything; the others know nothing. It feels efficient. It is also a quiet source of imbalance — one person holds the map, and the others will one day have to trust that the map was read fairly.</p>
<p>The fix is not to teach everyone the protocol. It is to make sure everyone knows the same two things: that the inheritance exists, and that it reaches each of them directly, in their own wallet, without passing through anyone's hands. The technical sibling can help the others set up a wallet. They should never be the only one who knows there is something to set up for.</p>
<h2>What to say tonight</h2>
<p>You do not need a presentation. You need one sentence, and it can be this one:</p>
<p><em>"If something happens to me, there is bitcoin that will reach you on its own. You don't have to find anything or ask anyone. You just need a wallet of your own, and I'll help you set it up."</em></p>
<p>Then stop. The amount can stay yours. The seed can stay where it is. The questions will come, over weeks, at their own pace, and each one is easier than the first sentence was.</p>
<p>And if tonight is not the night either, the mechanism does not mind. A will set up through Bitcoin After Life keeps working whether or not the conversation has happened. But the people at the table will have an easier day, one day, if it has.</p>
<aside class="related">
<h2>Keep reading</h2>
<ul style="padding-left:22px">
<li><a href="the-quietest-day.html">The Quietest Day: What Really Happens When Your Bitcoin Inheritance Arrives</a></li>
<li><a href="it-all-starts-with-the-seed.html">It all starts with the seed</a></li>
<li><a href="inheritance-when-trust-fails.html">The vanishing inheritance: when trust fails, mathematics doesn't</a></li>
</ul>
<p>New to Bitcoin After Life? Read the <a href="https://bitcoin-after.life/docs/">user manual</a> or <a href="../index.html#plugin">get the Electrum plugin</a>.</p>
</aside>
<hr>
<p class="disclaimer">Bitcoin After Life is open source and Bitcoin-only. Explore the plugin and the server on <a href="https://bitcoin-after.life/gitea/bitcoinafterlife" target="_blank" rel="noopener">Gitea</a> and read the full manual at <a href="https://bitcoin-after.life/docs/" target="_blank" rel="noopener">bitcoin-after.life/docs</a>.</p>
</article>
<div class="back">
<a href="../blog.html">← Back to the blog</a>
</div>
</main>
<footer>
<div class="wrap">
<div class="sig">Svātantrya</div>
<div>Signed — <span translate="no">Bitcoin After Life</span> Protocol</div>
<div class="links">
<a href="https://bitcoin-after.life">bitcoin-after.life</a>
<a href="mailto:info@bitcoin-after.life">info@bitcoin-after.life</a>
<a href="https://x.com/BitcoinAfterLif">@BitcoinAfterLif</a>
<a href="https://bitcoin-after.life/pgp">PGP Key</a>
<a href="https://bitcoin-after.life/gitea/bitcoinafterlife">Source Code</a>
</div>
<div class="built">Built with ₿itcoin. No FIAT was used in the making of this protocol.</div>
</div>
</footer>
<script>
/* Mobile menu toggle -- identical behaviour across all pages. */
(function () {
const toggle = document.getElementById('navToggle');
const nav = document.getElementById('mainNav');
if (!toggle || !nav) return;
function setOpen(open) {
nav.classList.toggle('open', open);
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
}
toggle.addEventListener('click', function () {
setOpen(!nav.classList.contains('open'));
});
nav.addEventListener('click', function (e) {
if (e.target.tagName === 'A') setOpen(false);
});
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') setOpen(false);
});
})();
</script>
</body>
</html>

371
blog/the-quietest-day.html Normal file
View File

@@ -0,0 +1,371 @@
<!DOCTYPE html>
<html lang="en" class="nojs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>What Happens When a Bitcoin Inheritance Arrives — Bitcoin After Life</title>
<meta name="description" content="Delivery day should be the most boring day of a Bitcoin inheritance. What the heir does, what to leave them, and why an address without a key is a tomb.">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Bitcoin After Life">
<meta property="og:title" content="What Happens When a Bitcoin Inheritance Arrives — Bitcoin After Life">
<meta property="og:description" content="Delivery day should be the most boring day of a Bitcoin inheritance. What the heir does, what to leave them, and why an address without a key is a tomb.">
<meta property="og:url" content="https://bitcoin-after.life/blog/the-quietest-day.html">
<meta property="og:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@BitcoinAfterLif">
<meta name="twitter:title" content="What Happens When a Bitcoin Inheritance Arrives — Bitcoin After Life">
<meta name="twitter:description" content="Delivery day should be the most boring day of a Bitcoin inheritance. What the heir does, what to leave them, and why an address without a key is a tomb.">
<meta name="twitter:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta name="theme-color" content="#2d6cdf">
<link rel="canonical" href="https://bitcoin-after.life/blog/the-quietest-day.html">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "The Quietest Day: What Really Happens When Your Bitcoin Inheritance Arrives",
"description": "Delivery day should be the most boring day of a Bitcoin inheritance. What the heir does, what to leave them, and why an address without a key is a tomb.",
"image": "https://bitcoin-after.life/blog/img/the-quietest-day-cover.webp",
"datePublished": "2026-09-19T09:00:00+02:00",
"dateModified": "2026-09-19T09:00:00+02:00",
"author": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/"
},
"publisher": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/",
"logo": {
"@type": "ImageObject",
"url": "https://bitcoin-after.life/pitura/logo/Logo_nero.svg"
}
},
"mainEntityOfPage": "https://bitcoin-after.life/blog/the-quietest-day.html",
"inLanguage": "en"
}
</script>
<link rel="icon" type="image/x-icon" href="/pitura/ico/Logo_nero.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/pitura/ico/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/pitura/ico/favicon-16.png">
<script>
/* Runs before first paint: removes the `nojs` class set on <html>, so the
mobile menu button is only shown when it can actually work. */
document.documentElement.classList.remove('nojs');
</script>
<style>
:root{
--maxw:1120px;
--radius:10px;
--bg:#eef1f4;
--panel:#ffffff;
--ink:#1a2027;
--muted:#5b6672;
--line:#dfe4ea;
--line-strong:#cbd2da;
--accent:#2d6cdf;
--accent-soft:#e6eefc;
--display:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--body:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
--shadow:0 1px 2px rgba(20,30,50,.05);
--shadow-lg:0 6px 20px rgba(20,30,50,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);
line-height:1.55;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
/* ---------- Top bar (shared with home and manifesto) ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.86);
backdrop-filter:saturate(150%) blur(8px);border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:18px;height:60px}
.topbar .logo{display:flex;align-items:center;gap:10px;font-family:var(--display);
font-weight:600;color:var(--ink)}
.topbar .logo img{width:30px;height:30px;display:block}
.topbar .logo span{font-size:15px;letter-spacing:-.01em}
.topbar nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
.topbar nav a{color:var(--muted);font-size:13px;padding:7px 11px;border-radius:7px}
.topbar nav a:hover{color:var(--ink);background:var(--accent-soft);text-decoration:none}
.topbar nav a.active{color:var(--accent);font-weight:600;border:1px solid #cfe0fb;
background:var(--accent-soft)}
.topbar .x{color:var(--ink);font-weight:600}
.navtoggle{
display:none;margin-left:auto;width:44px;height:44px;flex:none;
align-items:center;justify-content:center;
background:var(--panel);border:1px solid var(--line-strong);border-radius:9px;
color:var(--ink);cursor:pointer;padding:0;
}
.navtoggle:hover{border-color:var(--accent);color:var(--accent)}
.navtoggle .bars{display:block;width:18px;height:2px;background:currentColor;position:relative}
.navtoggle .bars::before,.navtoggle .bars::after{
content:"";position:absolute;left:0;width:18px;height:2px;background:currentColor}
.navtoggle .bars::before{top:-6px}
.navtoggle .bars::after{top:6px}
.navtoggle[aria-expanded="true"] .bars{background:transparent}
.navtoggle[aria-expanded="true"] .bars::before{top:0;transform:rotate(45deg)}
.navtoggle[aria-expanded="true"] .bars::after{top:0;transform:rotate(-45deg)}
/* ---------- Footer (shared) ---------- */
footer{border-top:1px solid var(--line);margin-top:56px;padding:34px 0 40px;
color:var(--muted);font-size:14px;background:var(--panel)}
footer .sig{font-family:var(--display);font-weight:600;color:var(--ink);font-size:16px}
footer .links{display:flex;gap:16px;flex-wrap:wrap;margin:14px 0}
footer .built{font-size:13px;color:var(--muted);margin-top:8px}
@media (max-width:900px){
.navtoggle{display:inline-flex}
.topbar nav{
position:absolute;top:100%;left:0;right:0;
margin-left:0;display:none;flex-direction:column;gap:2px;flex-wrap:nowrap;
background:var(--panel);border-bottom:1px solid var(--line);
box-shadow:var(--shadow-lg);padding:10px 20px 16px;
}
.topbar nav.open{display:flex}
.topbar nav a{font-size:15.5px;padding:0 12px;min-height:44px;
display:flex;align-items:center;border-radius:8px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/*
Without JavaScript the panel cannot be toggled, so the links are shown
inline. On narrow screens they wrap under the logo and the bar is allowed
to grow, instead of being clipped by the fixed 60px height.
*/
.nojs .navtoggle{display:none}
.nojs .topbar nav{position:static;display:flex;flex-direction:row;flex-wrap:wrap;
box-shadow:none;border-bottom:0;padding:0;margin-left:auto;background:transparent}
@media (max-width:900px){
.nojs .topbar .wrap{height:auto;min-height:56px;flex-wrap:wrap;padding-bottom:8px;gap:10px}
.nojs .topbar nav{margin-left:0;width:100%;gap:4px 6px}
.nojs .topbar nav a{font-size:14.5px;min-height:40px;padding:0 10px;
display:flex;align-items:center;border:1px solid var(--line);border-radius:8px}
}
.post-head{padding:44px 0 30px;border-bottom:1px solid var(--line);
background:radial-gradient(820px 280px at 50% -40%,var(--accent-soft),transparent 70%)}
.post-head .wrap{max-width:760px}
.post-head .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.14em;
text-transform:uppercase;color:var(--accent);display:block;margin-bottom:14px}
.post-head h1{font-family:var(--display);font-weight:600;font-size:40px;
letter-spacing:-.02em;line-height:1.12;margin:0 0 14px}
.post-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
font-size:13px;color:var(--muted)}
.post-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--line-strong)}
.article{max-width:760px;margin:0 auto;padding:34px 20px 8px}
.article p{font-size:17px;line-height:1.8;color:#36404b;margin:0 0 20px}
.article p strong{color:var(--ink);font-weight:600}
.article h2{font-family:var(--display);font-weight:600;font-size:25px;
letter-spacing:-.01em;margin:38px 0 14px;padding-bottom:10px;
border-bottom:1px solid var(--line-strong)}
.article ol{padding-left:22px;margin:0 0 20px}
.article li{font-size:17px;line-height:1.8;color:#36404b;margin-bottom:14px}
.article li strong{color:var(--ink);font-weight:600}
.article figure{margin:30px 0}
.article figure img{width:100%;height:auto;display:block;border-radius:var(--radius);
border:1px solid var(--line);box-shadow:var(--shadow)}
.article hr{border:0;border-top:1px solid var(--line-strong);margin:34px 0 22px}
.article .disclaimer{font-size:14px;color:var(--muted);font-style:italic;line-height:1.7}
.back{max-width:760px;margin:26px auto 0;padding:0 20px 8px}
.back a{font-size:14px;font-weight:600}
@media (max-width:700px){
.post-head{padding:30px 0 24px}
.post-head h1{font-size:29px}
.article{padding:28px 18px 8px}
.article h2{font-size:22px;margin-top:32px}
.article figure{margin:24px -18px}
.article figure img{border-radius:0;border-left:0;border-right:0}
}
@media (max-width:400px){
.post-head h1{font-size:25px}
.wrap{padding:0 15px}
.article{padding:24px 16px 8px}
.article figure{margin:22px -16px}
}
</style>
</head>
<body>
<div class="topbar">
<div class="wrap">
<a class="logo" href="../index.html"><img src="../pitura/logo/Logo_nero.svg" alt="Bitcoin After Life logo"><span translate="no">Bitcoin After Life</span></a>
<button class="navtoggle" id="navToggle" type="button"
aria-expanded="false" aria-controls="mainNav" aria-label="Open menu">
<span class="bars"></span>
</button>
<nav id="mainNav">
<a href="../index.html#features">Features</a>
<a href="../index.html#how">How it works</a>
<a href="../index.html#plugin">Plugin</a>
<a href="../index.html#faq">FAQ</a>
<a class="active" href="../blog.html">Blog</a>
<a href="../manifesto.html">Manifesto</a>
<a class="x" href="https://x.com/BitcoinAfterLif" title="@BitcoinAfterLif on X">@X</a>
</nav>
</div>
</div>
<main>
<header class="post-head">
<div class="wrap">
<span class="eyebrow">Blog</span>
<h1>The Quietest Day: What Really Happens When Your Bitcoin Inheritance Arrives</h1>
<div class="post-meta">
<time datetime="2026-09-19">19 September 2026</time>
<span class="dot"></span>
<span translate="no">Bitcoin After Life</span>
<span class="dot"></span>
<span>8 min read</span>
</div>
</div>
</header>
<article class="article">
<figure>
<img src="img/the-quietest-day-cover.webp" width="1600" height="900" loading="lazy" alt="A calendar with one date circled, an envelope marked with the Bitcoin symbol, and a wallet showing a notification">
</figure>
<p>There is a paradox at the heart of a well-designed Bitcoin inheritance: <strong>the day it actually arrives should be the most boring day of the whole story.</strong></p>
<p>No lawyer to call. No court to petition. No hidden safe to open. No cryptic seed to decipher under a lamp at 2 a.m. Somewhere, a signed transaction that has been waiting patiently on a handful of independent Will-Executor servers reaches its locktime, gets broadcast, confirms in a block — and your heir's wallet shows a new balance.</p>
<p>That is it. That is the whole event.</p>
<p>If we have done our job — if you have done yours — delivery day is a non-event. And that is precisely the point of this article: <strong>the difficulty of a Bitcoin inheritance is not on delivery day. It is in getting there prepared.</strong></p>
<h2>Delivery day, hour by hour</h2>
<p>Let us watch it happen. Imagine your inheritance transaction is time-locked to a block height expected around 10:00 on a given morning.</p>
<ul style="padding-left:22px">
<li><strong>08:47.</strong> The chain approaches the target height. Nothing happens. Nothing is supposed to happen. Somewhere in the world, a handful of Will-Executor servers you selected years ago quietly keep watching the block height, as they have every ten minutes for however long the will has existed.</li>
<li><strong>09:52.</strong> The block before the target is mined. Each Will-Executor now knows the transaction becomes valid on the next block. Behind the scenes, each one prepares to broadcast the moment the timelock releases — because the fee output is theirs only if their broadcast is the one that confirms.</li>
<li><strong>10:03.</strong> The target block is found. The transaction is now valid Bitcoin. Each executor races to submit it to their peers. Only one broadcast will actually reach miners first; the others will be discarded as duplicates.</li>
<li><strong>10:14.</strong> A miner includes the transaction in the following block. It has one confirmation. Your heir's wallet, if open, notices an incoming payment. If it is closed, it will notice the next time it opens.</li>
<li><strong>11:30.</strong> Six confirmations. The inheritance is settled by every standard used on the network.</li>
</ul>
<p>That is the entire ceremony. It is, by design, indistinguishable from any other Bitcoin transaction — because that is what it is. Anyone with a block explorer can watch it, verify it, timestamp it. There are no papers to sign, no keys to hand over, no offices to visit. The heir has to do exactly one thing: <strong>be the person who controls the address the coins arrived at.</strong></p>
<p>Which brings us to the hard part.</p>
<h2>An address without a key is a tomb</h2>
<p>Here is a sentence that ought to be pinned above every inheritance planner's desk: <strong>a Bitcoin address is worthless to whoever does not hold the private key that controls it.</strong></p>
<p>The BAL protocol delivers coins on time, to the exact addresses you specified, with cryptographic certainty. What it cannot do — what nothing on-chain can do — is make sure that whoever you named as your heir actually holds the seed phrase that controls those addresses.</p>
<p>If you generate a fresh address in your own wallet and put it in your will as your daughter's inheritance, the transaction will execute perfectly. Your daughter will inherit a string of characters she cannot spend. The Bitcoin will not be lost in the technical sense — it will simply be entombed, as visible and as inaccessible as any of the many "lost" coins in on-chain analyses.</p>
<p>The heir must control the seed of the wallet that owns the destination address. There are only two honest ways to arrange that:</p>
<ol>
<li><strong>The heir already has her own wallet.</strong> She generates a fresh address in it and sends it to you. You put that address in your will. You never see her seed, she never sees yours. This is the clean case.</li>
<li><strong>You prepare a wallet on her behalf.</strong> You generate a new seed dedicated to the inheritance, take a receiving address from it, and put the seed somewhere she can find it after — a sealed envelope with a trusted person, a safety deposit box with clear instructions, a paper carefully hidden with a note. This is the fragile case, because now a single piece of paper stands between the coins and oblivion.</li>
</ol>
<p>Most non-technical heirs need option 2. Most Bitcoin inheritances that fail, fail on option 2. Not because of the protocol — because of the paper.</p>
<h2>Before: what to leave your heir</h2>
<p>The bulk of the work happens years before delivery day. It is undramatic, mostly analog, and it is the entire game.</p>
<p>A good letter to your heir should contain, at minimum:</p>
<ul style="padding-left:22px">
<li><strong>A plain-language explanation of what is coming.</strong> Not "you will receive an inheritance transaction from a time-locked UTXO." Something like: <em>"On or around [date], a certain amount of Bitcoin will arrive at the address below. This is your inheritance. It comes from a protocol I set up years ago; nobody had to sign anything for it to happen."</em></li>
<li><strong>The receiving address</strong>, so the heir can verify it on a block explorer before and after delivery.</li>
<li><strong>The seed phrase of her own wallet</strong> — if you prepared it for her — with clear instructions: what it is, what it looks like, how to type it into a wallet application, and, most importantly, <strong>who should never see it</strong>.</li>
<li><strong>A short list of trusted software.</strong> Name specific, reputable wallets. Otherwise the first search after delivery day will lead her to whichever fake wallet is topping the ads that week.</li>
<li><strong>A "do not do this" list.</strong> Do not photograph the seed. Do not type it into a website. Do not accept help from anyone who contacts you first, no matter how legitimate they sound.</li>
<li><strong>One trusted human to call</strong> who understands Bitcoin and has agreed in advance to help without ever touching the coins.</li>
</ul>
<p>Notice what is <em>not</em> in that letter: your own seed. The whole point of the protocol is that your heir never needs it. If you write your seed into the letter, you have quietly rebuilt the exact custody problem BAL was designed to eliminate — and left it in a drawer.</p>
<h2>After: the first days</h2>
<p>The days immediately after an inheritance arrives are the most dangerous in its lifetime. Not because of the technology — the coins are already sitting at the right address — but because attackers are perfectly aware that inheritances happen, and they know exactly what a freshly-inheriting heir looks like: someone who suddenly holds Bitcoin and does not know what she is doing.</p>
<p>The rules, in the order the heir will need them:</p>
<ol>
<li><strong>Do not be in a hurry.</strong> The coins are not going anywhere. There is no deadline. Any pressure to "move them immediately for safety" is a scam.</li>
<li><strong>Do not share the seed with anyone.</strong> Not with a wallet's support chat. Not with a friend of a friend who "does crypto." Not with anyone who arrives, unsolicited, offering to help. A genuine helper never needs to see the seed.</li>
<li><strong>Verify the incoming transaction on a block explorer</strong> — the receiving address, the amount, the block it was confirmed in. This is a two-minute exercise in checking that reality matches the letter.</li>
<li><strong>When ready — days or weeks later, not hours — move the funds to a fresh wallet</strong> on hardware the heir controls, generated with a new seed she wrote down herself. This closes any residual risk that the original setup was ever compromised.</li>
</ol>
<p>The phishing that follows an inheritance is not opportunistic. It is targeted. Obituaries, social media announcements, small-town gossip — all of it becomes signal for a certain class of scammer. An heir who was warned about this in advance, in writing, in the same letter she keeps with the seed, will recognize the pattern the moment it appears.</p>
<h2>A non-technical heir, told as a story</h2>
<p>Consider Anna, 74, whose son set up his BAL inheritance five years before he died. Anna uses a smartphone for messaging and little else. On delivery day she notices nothing: no email, no alert. Nothing on her phone was configured to watch a Bitcoin address.</p>
<p>Two weeks later, her son's friend — the one named in the letter — visits and helps her open the envelope her son left with the family notary. Inside: a sheet of paper with twelve words, a QR code, an address, and a short letter in her son's handwriting.</p>
<p>The friend installs a reputable wallet on Anna's phone, in front of her, and helps her type the twelve words. The wallet shows a balance. He shows her the address on a block explorer and points out the transaction her son's protocol executed exactly two weeks earlier, unattended, on schedule.</p>
<p>Anna does not need to understand any of it. She needs the paper, and one trusted person who will not touch the coins. Both were arranged by her son years earlier.</p>
<p>That is what "the heir does almost nothing" looks like from the heir's side. Everything that made it possible was decided long before.</p>
<h2>Honest limits</h2>
<p>A protocol that promises to be honest owes you a list of the things it cannot do.</p>
<ul style="padding-left:22px">
<li><strong>If the heir loses the paper, the coins are gone.</strong> The protocol delivers to the address; it cannot recover the key. This is the same risk any self-custody user runs, transferred to the heir.</li>
<li><strong>If the heir never learns that a delivery is coming, she may miss it entirely.</strong> The transaction confirms on-chain whether or not anyone is watching. Coins sitting quietly at a correct address that nobody knows about are indistinguishable from lost coins.</li>
<li><strong>The protocol cannot judge circumstances.</strong> If the address you named turns out to belong to someone who has grown estranged, changed situation, or become a poor steward, the coins arrive regardless. Human factors remain human.</li>
</ul>
<p>None of these limits are new problems the protocol invented. They are the old problems of inheritance, moved to a place where at least they can be seen clearly and planned for.</p>
<h2>The takeaway</h2>
<p>The best delivery day is the most boring one: a block, a confirmation, a balance appearing. Nothing dramatic. Nothing to solve. Nothing to fear.</p>
<p>The interesting work — the letter, the wallet, the trusted person, the "do not do this" list — happens years earlier, at a desk, in silence, while you still can.</p>
<p>Your protocol will keep its promise on the day. Your job is to make sure that on that day, there is someone ready, holding the key, who knows exactly what has just arrived.</p>
<aside class="related">
<h2>Keep reading</h2>
<ul style="padding-left:22px">
<li><a href="should-you-tell-your-family-about-your-bitcoin.html">Should You Tell Your Family About Your Bitcoin? What They Need to Know, and What They Don't</a></li>
<li><a href="what-happens-to-your-bitcoin.html">What Happens to Your Bitcoin When You're Gone?</a></li>
<li><a href="proof-of-life.html">Proof of Life Without Surveillance: How Your Wallet Tells the Protocol You're Still Here</a></li>
</ul>
<p>New to Bitcoin After Life? Read the <a href="https://bitcoin-after.life/docs/">user manual</a> or <a href="../index.html#plugin">get the Electrum plugin</a>.</p>
</aside>
<hr>
<p class="disclaimer">Bitcoin After Life is open source and Bitcoin-only. Explore the plugin and the server on <a href="https://bitcoin-after.life/gitea/bitcoinafterlife" target="_blank" rel="noopener">Gitea</a> and read the full manual at <a href="https://bitcoin-after.life/docs/" target="_blank" rel="noopener">bitcoin-after.life/docs</a>.</p>
</article>
<div class="back">
<a href="../blog.html">← Back to the blog</a>
</div>
</main>
<footer>
<div class="wrap">
<div class="sig">Svātantrya</div>
<div>Signed — <span translate="no">Bitcoin After Life</span> Protocol</div>
<div class="links">
<a href="https://bitcoin-after.life">bitcoin-after.life</a>
<a href="mailto:info@bitcoin-after.life">info@bitcoin-after.life</a>
<a href="https://x.com/BitcoinAfterLif">@BitcoinAfterLif</a>
<a href="https://bitcoin-after.life/pgp">PGP Key</a>
<a href="https://bitcoin-after.life/gitea/bitcoinafterlife">Source Code</a>
</div>
<div class="built">Built with ₿itcoin. No FIAT was used in the making of this protocol.</div>
</div>
</footer>
<script>
/* Mobile menu toggle -- identical behaviour across all pages. */
(function () {
const toggle = document.getElementById('navToggle');
const nav = document.getElementById('mainNav');
if (!toggle || !nav) return;
function setOpen(open) {
nav.classList.toggle('open', open);
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
}
toggle.addEventListener('click', function () {
setOpen(!nav.classList.contains('open'));
});
nav.addEventListener('click', function (e) {
if (e.target.tagName === 'A') setOpen(false);
});
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') setOpen(false);
});
})();
</script>
</body>
</html>

View File

@@ -0,0 +1,361 @@
<!DOCTYPE html>
<html lang="en" class="nojs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bitcoin Inheritance Privacy: What a Will-Executor Sees — Bitcoin After Life</title>
<meta name="description" content="A Will-Executor holds one signed, time-locked transaction and nothing else. What it can see, what it cannot, and why privacy comes from architecture.">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Bitcoin After Life">
<meta property="og:title" content="Bitcoin Inheritance Privacy: What a Will-Executor Sees — Bitcoin After Life">
<meta property="og:description" content="A Will-Executor holds one signed, time-locked transaction and nothing else. What it can see, what it cannot, and why privacy comes from architecture.">
<meta property="og:url" content="https://bitcoin-after.life/blog/what-a-will-executor-can-see.html">
<meta property="og:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@BitcoinAfterLif">
<meta name="twitter:title" content="Bitcoin Inheritance Privacy: What a Will-Executor Sees — Bitcoin After Life">
<meta name="twitter:description" content="A Will-Executor holds one signed, time-locked transaction and nothing else. What it can see, what it cannot, and why privacy comes from architecture.">
<meta name="twitter:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta name="theme-color" content="#2d6cdf">
<link rel="canonical" href="https://bitcoin-after.life/blog/what-a-will-executor-can-see.html">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "What Can a Will-Executor Actually See? Privacy in the BAL Protocol",
"description": "A Will-Executor holds one signed, time-locked transaction and nothing else. What it can see, what it cannot, and why privacy comes from architecture.",
"image": "https://bitcoin-after.life/blog/img/what-a-will-executor-can-see-cover.webp",
"datePublished": "2026-09-06T09:00:00+02:00",
"dateModified": "2026-09-06T09:00:00+02:00",
"author": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/"
},
"publisher": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/",
"logo": {
"@type": "ImageObject",
"url": "https://bitcoin-after.life/pitura/logo/Logo_nero.svg"
}
},
"mainEntityOfPage": "https://bitcoin-after.life/blog/what-a-will-executor-can-see.html",
"inLanguage": "en"
}
</script>
<link rel="icon" type="image/x-icon" href="/pitura/ico/Logo_nero.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/pitura/ico/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/pitura/ico/favicon-16.png">
<script>
/* Runs before first paint: removes the `nojs` class set on <html>, so the
mobile menu button is only shown when it can actually work. */
document.documentElement.classList.remove('nojs');
</script>
<style>
:root{
--maxw:1120px;
--radius:10px;
--bg:#eef1f4;
--panel:#ffffff;
--ink:#1a2027;
--muted:#5b6672;
--line:#dfe4ea;
--line-strong:#cbd2da;
--accent:#2d6cdf;
--accent-soft:#e6eefc;
--display:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--body:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
--shadow:0 1px 2px rgba(20,30,50,.05);
--shadow-lg:0 6px 20px rgba(20,30,50,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);
line-height:1.55;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
/* ---------- Top bar (shared with home and manifesto) ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.86);
backdrop-filter:saturate(150%) blur(8px);border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:18px;height:60px}
.topbar .logo{display:flex;align-items:center;gap:10px;font-family:var(--display);
font-weight:600;color:var(--ink)}
.topbar .logo img{width:30px;height:30px;display:block}
.topbar .logo span{font-size:15px;letter-spacing:-.01em}
.topbar nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
.topbar nav a{color:var(--muted);font-size:13px;padding:7px 11px;border-radius:7px}
.topbar nav a:hover{color:var(--ink);background:var(--accent-soft);text-decoration:none}
.topbar nav a.active{color:var(--accent);font-weight:600;border:1px solid #cfe0fb;
background:var(--accent-soft)}
.topbar .x{color:var(--ink);font-weight:600}
.navtoggle{
display:none;margin-left:auto;width:44px;height:44px;flex:none;
align-items:center;justify-content:center;
background:var(--panel);border:1px solid var(--line-strong);border-radius:9px;
color:var(--ink);cursor:pointer;padding:0;
}
.navtoggle:hover{border-color:var(--accent);color:var(--accent)}
.navtoggle .bars{display:block;width:18px;height:2px;background:currentColor;position:relative}
.navtoggle .bars::before,.navtoggle .bars::after{
content:"";position:absolute;left:0;width:18px;height:2px;background:currentColor}
.navtoggle .bars::before{top:-6px}
.navtoggle .bars::after{top:6px}
.navtoggle[aria-expanded="true"] .bars{background:transparent}
.navtoggle[aria-expanded="true"] .bars::before{top:0;transform:rotate(45deg)}
.navtoggle[aria-expanded="true"] .bars::after{top:0;transform:rotate(-45deg)}
/* ---------- Footer (shared) ---------- */
footer{border-top:1px solid var(--line);margin-top:56px;padding:34px 0 40px;
color:var(--muted);font-size:14px;background:var(--panel)}
footer .sig{font-family:var(--display);font-weight:600;color:var(--ink);font-size:16px}
footer .links{display:flex;gap:16px;flex-wrap:wrap;margin:14px 0}
footer .built{font-size:13px;color:var(--muted);margin-top:8px}
@media (max-width:900px){
.navtoggle{display:inline-flex}
.topbar nav{
position:absolute;top:100%;left:0;right:0;
margin-left:0;display:none;flex-direction:column;gap:2px;flex-wrap:nowrap;
background:var(--panel);border-bottom:1px solid var(--line);
box-shadow:var(--shadow-lg);padding:10px 20px 16px;
}
.topbar nav.open{display:flex}
.topbar nav a{font-size:15.5px;padding:0 12px;min-height:44px;
display:flex;align-items:center;border-radius:8px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/*
Without JavaScript the panel cannot be toggled, so the links are shown
inline. On narrow screens they wrap under the logo and the bar is allowed
to grow, instead of being clipped by the fixed 60px height.
*/
.nojs .navtoggle{display:none}
.nojs .topbar nav{position:static;display:flex;flex-direction:row;flex-wrap:wrap;
box-shadow:none;border-bottom:0;padding:0;margin-left:auto;background:transparent}
@media (max-width:900px){
.nojs .topbar .wrap{height:auto;min-height:56px;flex-wrap:wrap;padding-bottom:8px;gap:10px}
.nojs .topbar nav{margin-left:0;width:100%;gap:4px 6px}
.nojs .topbar nav a{font-size:14.5px;min-height:40px;padding:0 10px;
display:flex;align-items:center;border:1px solid var(--line);border-radius:8px}
}
.post-head{padding:44px 0 30px;border-bottom:1px solid var(--line);
background:radial-gradient(820px 280px at 50% -40%,var(--accent-soft),transparent 70%)}
.post-head .wrap{max-width:760px}
.post-head .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.14em;
text-transform:uppercase;color:var(--accent);display:block;margin-bottom:14px}
.post-head h1{font-family:var(--display);font-weight:600;font-size:40px;
letter-spacing:-.02em;line-height:1.12;margin:0 0 14px}
.post-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
font-size:13px;color:var(--muted)}
.post-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--line-strong)}
.article{max-width:760px;margin:0 auto;padding:34px 20px 8px}
.article p{font-size:17px;line-height:1.8;color:#36404b;margin:0 0 20px}
.article p strong{color:var(--ink);font-weight:600}
.article h2{font-family:var(--display);font-weight:600;font-size:25px;
letter-spacing:-.01em;margin:38px 0 14px;padding-bottom:10px;
border-bottom:1px solid var(--line-strong)}
.article ol{padding-left:22px;margin:0 0 20px}
.article li{font-size:17px;line-height:1.8;color:#36404b;margin-bottom:14px}
.article li strong{color:var(--ink);font-weight:600}
.article figure{margin:30px 0}
.article figure img{width:100%;height:auto;display:block;border-radius:var(--radius);
border:1px solid var(--line);box-shadow:var(--shadow)}
.article hr{border:0;border-top:1px solid var(--line-strong);margin:34px 0 22px}
.article .disclaimer{font-size:14px;color:var(--muted);font-style:italic;line-height:1.7}
/*
Comparison table, same treatment as the Electrum post: the wrapper scrolls
on narrow screens so the page body never scrolls sideways.
*/
.article .tablewrap{overflow-x:auto;margin:0 0 22px;-webkit-overflow-scrolling:touch}
.article table{width:100%;border-collapse:collapse;font-size:15.5px;min-width:480px}
.article th,.article td{text-align:left;padding:11px 14px;border:1px solid var(--line);
line-height:1.6;color:#36404b;vertical-align:top}
.article th{font-family:var(--display);font-weight:600;color:var(--ink);
background:var(--accent-soft)}
.back{max-width:760px;margin:26px auto 0;padding:0 20px 8px}
.back a{font-size:14px;font-weight:600}
@media (max-width:700px){
.post-head{padding:30px 0 24px}
.post-head h1{font-size:29px}
.article{padding:28px 18px 8px}
.article h2{font-size:22px;margin-top:32px}
.article figure{margin:24px -18px}
.article figure img{border-radius:0;border-left:0;border-right:0}
}
@media (max-width:400px){
.post-head h1{font-size:25px}
.wrap{padding:0 15px}
.article{padding:24px 16px 8px}
.article figure{margin:22px -16px}
}
</style>
</head>
<body>
<div class="topbar">
<div class="wrap">
<a class="logo" href="../index.html"><img src="../pitura/logo/Logo_nero.svg" alt="Bitcoin After Life logo"><span translate="no">Bitcoin After Life</span></a>
<button class="navtoggle" id="navToggle" type="button"
aria-expanded="false" aria-controls="mainNav" aria-label="Open menu">
<span class="bars"></span>
</button>
<nav id="mainNav">
<a href="../index.html#features">Features</a>
<a href="../index.html#how">How it works</a>
<a href="../index.html#plugin">Plugin</a>
<a href="../index.html#faq">FAQ</a>
<a class="active" href="../blog.html">Blog</a>
<a href="../manifesto.html">Manifesto</a>
<a class="x" href="https://x.com/BitcoinAfterLif" title="@BitcoinAfterLif on X">@X</a>
</nav>
</div>
</div>
<main>
<header class="post-head">
<div class="wrap">
<span class="eyebrow">Blog</span>
<h1>What Can a Will-Executor Actually See? Privacy in the BAL Protocol</h1>
<div class="post-meta">
<time datetime="2026-09-06">6 September 2026</time>
<span class="dot"></span>
<span translate="no">Bitcoin After Life</span>
<span class="dot"></span>
<span>4 min read</span>
</div>
</div>
</header>
<article class="article">
<figure>
<img src="img/what-a-will-executor-can-see-cover.webp" width="1600" height="900" loading="lazy" alt="A blue shield bearing the Bitcoin symbol covers an eye in front of a document — what a Will-Executor can and cannot see">
</figure>
<p>When you hand something to a third party — even an automated one — the first question a careful Bitcoiner asks is: <em>what do they learn about me?</em></p>
<p>It's the right question. Traditional inheritance is a privacy disaster by design: a notary learns your identity, your family structure, your assets, and your heirs' identities, and all of it ends up in records that can be subpoenaed, leaked, or — in many jurisdictions — made public after probate. Custodial services are worse: they hold your coins <em>and</em> your data.</p>
<p><span translate="no">Bitcoin After Life</span> was built to need no third party at all. But it does involve Will-Executor servers, so let's answer the privacy question precisely, without marketing fog: <strong>here is exactly what a Will-Executor can see, and what it cannot.</strong></p>
<h2>What a Will-Executor holds</h2>
<p>A Will-Executor stores one thing: your <strong>signed, time-locked inheritance transaction</strong>. Nothing else travels to the server — no identity, no email, no account, no documents. The BAL plugin doesn't ask who you are, because the protocol doesn't need to know.</p>
<p>From that transaction, an executor — like anyone who inspects a raw Bitcoin transaction — can technically observe:</p>
<ul style="padding-left:22px">
<li><strong>The inputs:</strong> the specific UTXOs your inheritance will spend, and therefore the amount they contain.</li>
<li><strong>The outputs:</strong> your heirs' addresses, their shares, and the executor fee.</li>
<li><strong>The locktime:</strong> the delivery date after which the transaction becomes valid.</li>
</ul>
<p>That is the complete list. Let's now look at the much longer list of what remains invisible.</p>
<h2>What a Will-Executor cannot see</h2>
<p><strong>Your identity.</strong> There is no account system, no KYC, no registration. To a Will-Executor you are a transaction, not a person. Bitcoin addresses are pseudonymous by design — the server sees strings of characters, not names.</p>
<p><strong>The rest of your wallet.</strong> The transaction reveals only the UTXOs it spends. Your other addresses, your total holdings, your transaction history beyond those specific coins: none of it is exposed by the protocol. The executor sees the inheritance, not your wealth.</p>
<p><strong>Your heirs' identities.</strong> Heirs appear as addresses. A name, a face, a relationship — none of that is in a Bitcoin transaction, and none of it is in what BAL sends.</p>
<p><strong>Your activity and your lifetime.</strong> Executors cannot tell whether you're alive, active, traveling, or simply quiet. The Check Alive mechanism that postpones your delivery date works through your own wallet — the server doesn't track you, ping you, or monitor you. There is no surveillance built into the protocol, because there is no need for any.</p>
<p><strong>Any way to profit from what it sees.</strong> This is the crucial point. Even the limited information above is useless for abuse: the transaction is already fully signed, so it cannot be altered; it is time-locked, so it cannot be broadcast early; and its outputs are fixed, so not a single satoshi can be redirected. A Will-Executor that tried to front-run, censor, or manipulate would gain nothing — and would lose its fee, which is only paid when the inheritance executes exactly as written.</p>
<h2>Privacy by architecture, not by policy</h2>
<p>Most services protect your data with a privacy <em>policy</em> — a legal promise that can change with an acquisition, a subpoena, or a new CEO. BAL protects it with <em>architecture</em>: the protocol was designed so that the sensitive data never exists on the server in the first place.</p>
<div class="tablewrap">
<table>
<thead>
<tr><th>What traditional inheritance exposes</th><th>What BAL exposes</th></tr>
</thead>
<tbody>
<tr><td>Your legal identity</td><td>Nothing — no accounts</td></tr>
<tr><td>Full inventory of your assets</td><td>Only the UTXOs in the transaction</td></tr>
<tr><td>Heirs' names and relationships</td><td>Heirs' addresses only</td></tr>
<tr><td>Family structure, stored in public records</td><td>Nothing — no records exist</td></tr>
<tr><td>Protected by: a privacy policy</td><td>Protected by: protocol design</td></tr>
</tbody>
</table>
</div>
<p>You cannot leak what you never collected.</p>
<h2>Optional hardening for the privacy-conscious</h2>
<p>The protocol's defaults are already strong, but Bitcoin hygiene adds another layer:</p>
<ul style="padding-left:22px">
<li><strong>Use fresh addresses for your heirs.</strong> Electrum generates new addresses freely; an address that has never appeared on-chain carries no history to analyze.</li>
<li><strong>Consider multiple executors.</strong> Splitting your will across several Will-Executors from the WeList is primarily a redundancy feature — but it also means no single server is your only counterparty.</li>
<li><strong>Review before you send.</strong> The plugin always lets you inspect the generated transactions before anything is transmitted. Verify the outputs yourself; trust is not required.</li>
</ul>
<h2>The honest summary</h2>
<p>A Will-Executor sees one signed transaction: some addresses, some amounts, a date. It does not know who you are, what else you own, or who your heirs are — and the cryptography guarantees it can do nothing harmful even with what little it sees.</p>
<p>Compare that with the alternative: a folder in a lawyer's cabinet containing your name, your family's names, and the full list of what you own.</p>
<p>Inheritance used to require giving up your privacy to be safe. We built BAL so you could keep both.</p>
<aside class="related">
<h2>Keep reading</h2>
<ul style="padding-left:22px">
<li><a href="run-a-will-executor.html">Run a Will-Executor: Earn Bitcoin Fees by Powering Decentralized Inheritance</a></li>
<li><a href="proof-of-life.html">Proof of Life Without Surveillance: How Your Wallet Tells the Protocol You're Still Here</a></li>
<li><a href="liquid-network-and-why-we-trust-only-bedrock.html">Liquid Network's $320M Lesson: Why BAL Only Builds on Bedrock</a></li>
<li><a href="bal-is-a-protocol-not-a-plugin.html">The Plugin Is Just the First Door: BAL Is a Protocol, and Will-Executors Are Its Foundation</a></li>
</ul>
<p>New to Bitcoin After Life? Read the <a href="https://bitcoin-after.life/docs/">user manual</a> or <a href="../index.html#plugin">get the Electrum plugin</a>.</p>
</aside>
<p><em>Want the technical detail? The full protocol walkthrough is in the <a href="https://bitcoin-after.life/docs/protocol/how-it-works.html" target="_blank" rel="noopener">manual</a>, and both the <a href="https://bitcoin-after.life/gitea/bitcoinafterlife/bal-electrum-plugin" target="_blank" rel="noopener">plugin</a> and the <a href="https://bitcoin-after.life/gitea/bitcoinafterlife/bal-server" target="_blank" rel="noopener">server</a> are open source — verify, don't trust.</em></p>
</article>
<div class="back">
<a href="../blog.html">← Back to the blog</a>
</div>
</main>
<footer>
<div class="wrap">
<div class="sig">Svātantrya</div>
<div>Signed — <span translate="no">Bitcoin After Life</span> Protocol</div>
<div class="links">
<a href="https://bitcoin-after.life">bitcoin-after.life</a>
<a href="mailto:info@bitcoin-after.life">info@bitcoin-after.life</a>
<a href="https://x.com/BitcoinAfterLif">@BitcoinAfterLif</a>
<a href="https://bitcoin-after.life/pgp">PGP Key</a>
<a href="https://bitcoin-after.life/gitea/bitcoinafterlife">Source Code</a>
</div>
<div class="built">Built with ₿itcoin. No FIAT was used in the making of this protocol.</div>
</div>
</footer>
<script>
/* Mobile menu toggle -- identical behaviour across all pages. */
(function () {
const toggle = document.getElementById('navToggle');
const nav = document.getElementById('mainNav');
if (!toggle || !nav) return;
function setOpen(open) {
nav.classList.toggle('open', open);
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
}
toggle.addEventListener('click', function () {
setOpen(!nav.classList.contains('open'));
});
nav.addEventListener('click', function (e) {
if (e.target.tagName === 'A') setOpen(false);
});
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') setOpen(false);
});
})();
</script>
</body>
</html>

View File

@@ -0,0 +1,330 @@
<!DOCTYPE html>
<html lang="en" class="nojs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>What Happens to Your Bitcoin When You Die? — Bitcoin After Life</title>
<meta name="description" content="Self-custody means no one can seize your bitcoin, and no one can help your family if you're gone. Why time-locked transactions are the honest answer.">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Bitcoin After Life">
<meta property="og:title" content="What Happens to Your Bitcoin When You Die? — Bitcoin After Life">
<meta property="og:description" content="Self-custody means no one can seize your bitcoin, and no one can help your family if you're gone. Why time-locked transactions are the honest answer.">
<meta property="og:url" content="https://bitcoin-after.life/blog/what-happens-to-your-bitcoin.html">
<meta property="og:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@BitcoinAfterLif">
<meta name="twitter:title" content="What Happens to Your Bitcoin When You Die? — Bitcoin After Life">
<meta name="twitter:description" content="Self-custody means no one can seize your bitcoin, and no one can help your family if you're gone. Why time-locked transactions are the honest answer.">
<meta name="twitter:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta name="theme-color" content="#2d6cdf">
<link rel="canonical" href="https://bitcoin-after.life/blog/what-happens-to-your-bitcoin.html">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "What Happens to Your Bitcoin When You're Gone?",
"description": "Self-custody means no one can seize your bitcoin, and no one can help your family if you're gone. Why time-locked transactions are the honest answer.",
"image": "https://bitcoin-after.life/blog/img/what-happens-to-your-bitcoin-cover.webp",
"datePublished": "2026-08-15T09:00:00+02:00",
"dateModified": "2026-08-15T09:00:00+02:00",
"author": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/"
},
"publisher": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/",
"logo": {
"@type": "ImageObject",
"url": "https://bitcoin-after.life/pitura/logo/Logo_nero.svg"
}
},
"mainEntityOfPage": "https://bitcoin-after.life/blog/what-happens-to-your-bitcoin.html",
"inLanguage": "en"
}
</script>
<link rel="icon" type="image/x-icon" href="/pitura/ico/Logo_nero.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/pitura/ico/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/pitura/ico/favicon-16.png">
<script>
/* Runs before first paint: removes the `nojs` class set on <html>, so the
mobile menu button is only shown when it can actually work. */
document.documentElement.classList.remove('nojs');
</script>
<style>
:root{
--maxw:1120px;
--radius:10px;
--bg:#eef1f4;
--panel:#ffffff;
--ink:#1a2027;
--muted:#5b6672;
--line:#dfe4ea;
--line-strong:#cbd2da;
--accent:#2d6cdf;
--accent-soft:#e6eefc;
--display:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--body:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
--shadow:0 1px 2px rgba(20,30,50,.05);
--shadow-lg:0 6px 20px rgba(20,30,50,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);
line-height:1.55;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
/* ---------- Top bar (shared with home and manifesto) ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.86);
backdrop-filter:saturate(150%) blur(8px);border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:18px;height:60px}
.topbar .logo{display:flex;align-items:center;gap:10px;font-family:var(--display);
font-weight:600;color:var(--ink)}
.topbar .logo img{width:30px;height:30px;display:block}
.topbar .logo span{font-size:15px;letter-spacing:-.01em}
.topbar nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
.topbar nav a{color:var(--muted);font-size:13px;padding:7px 11px;border-radius:7px}
.topbar nav a:hover{color:var(--ink);background:var(--accent-soft);text-decoration:none}
.topbar nav a.active{color:var(--accent);font-weight:600;border:1px solid #cfe0fb;
background:var(--accent-soft)}
.topbar .x{color:var(--ink);font-weight:600}
.navtoggle{
display:none;margin-left:auto;width:44px;height:44px;flex:none;
align-items:center;justify-content:center;
background:var(--panel);border:1px solid var(--line-strong);border-radius:9px;
color:var(--ink);cursor:pointer;padding:0;
}
.navtoggle:hover{border-color:var(--accent);color:var(--accent)}
.navtoggle .bars{display:block;width:18px;height:2px;background:currentColor;position:relative}
.navtoggle .bars::before,.navtoggle .bars::after{
content:"";position:absolute;left:0;width:18px;height:2px;background:currentColor}
.navtoggle .bars::before{top:-6px}
.navtoggle .bars::after{top:6px}
.navtoggle[aria-expanded="true"] .bars{background:transparent}
.navtoggle[aria-expanded="true"] .bars::before{top:0;transform:rotate(45deg)}
.navtoggle[aria-expanded="true"] .bars::after{top:0;transform:rotate(-45deg)}
/* ---------- Footer (shared) ---------- */
footer{border-top:1px solid var(--line);margin-top:56px;padding:34px 0 40px;
color:var(--muted);font-size:14px;background:var(--panel)}
footer .sig{font-family:var(--display);font-weight:600;color:var(--ink);font-size:16px}
footer .links{display:flex;gap:16px;flex-wrap:wrap;margin:14px 0}
footer .built{font-size:13px;color:var(--muted);margin-top:8px}
@media (max-width:900px){
.navtoggle{display:inline-flex}
.topbar nav{
position:absolute;top:100%;left:0;right:0;
margin-left:0;display:none;flex-direction:column;gap:2px;flex-wrap:nowrap;
background:var(--panel);border-bottom:1px solid var(--line);
box-shadow:var(--shadow-lg);padding:10px 20px 16px;
}
.topbar nav.open{display:flex}
.topbar nav a{font-size:15.5px;padding:0 12px;min-height:44px;
display:flex;align-items:center;border-radius:8px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/*
Without JavaScript the panel cannot be toggled, so the links are shown
inline. On narrow screens they wrap under the logo and the bar is allowed
to grow, instead of being clipped by the fixed 60px height.
*/
.nojs .navtoggle{display:none}
.nojs .topbar nav{position:static;display:flex;flex-direction:row;flex-wrap:wrap;
box-shadow:none;border-bottom:0;padding:0;margin-left:auto;background:transparent}
@media (max-width:900px){
.nojs .topbar .wrap{height:auto;min-height:56px;flex-wrap:wrap;padding-bottom:8px;gap:10px}
.nojs .topbar nav{margin-left:0;width:100%;gap:4px 6px}
.nojs .topbar nav a{font-size:14.5px;min-height:40px;padding:0 10px;
display:flex;align-items:center;border:1px solid var(--line);border-radius:8px}
}
.post-head{padding:44px 0 30px;border-bottom:1px solid var(--line);
background:radial-gradient(820px 280px at 50% -40%,var(--accent-soft),transparent 70%)}
.post-head .wrap{max-width:760px}
.post-head .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.14em;
text-transform:uppercase;color:var(--accent);display:block;margin-bottom:14px}
.post-head h1{font-family:var(--display);font-weight:600;font-size:40px;
letter-spacing:-.02em;line-height:1.12;margin:0 0 14px}
.post-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
font-size:13px;color:var(--muted)}
.post-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--line-strong)}
.article{max-width:760px;margin:0 auto;padding:34px 20px 8px}
.article p{font-size:17px;line-height:1.8;color:#36404b;margin:0 0 20px}
.article p strong{color:var(--ink);font-weight:600}
.article h2{font-family:var(--display);font-weight:600;font-size:25px;
letter-spacing:-.01em;margin:38px 0 14px;padding-bottom:10px;
border-bottom:1px solid var(--line-strong)}
.article ol{padding-left:22px;margin:0 0 20px}
.article li{font-size:17px;line-height:1.8;color:#36404b;margin-bottom:14px}
.article li strong{color:var(--ink);font-weight:600}
.article figure{margin:30px 0}
.article figure img{width:100%;height:auto;display:block;border-radius:var(--radius);
border:1px solid var(--line);box-shadow:var(--shadow)}
.article hr{border:0;border-top:1px solid var(--line-strong);margin:34px 0 22px}
.article .disclaimer{font-size:14px;color:var(--muted);font-style:italic;line-height:1.7}
.back{max-width:760px;margin:26px auto 0;padding:0 20px 8px}
.back a{font-size:14px;font-weight:600}
@media (max-width:700px){
.post-head{padding:30px 0 24px}
.post-head h1{font-size:29px}
.article{padding:28px 18px 8px}
.article h2{font-size:22px;margin-top:32px}
.article figure{margin:24px -18px}
.article figure img{border-radius:0;border-left:0;border-right:0}
}
@media (max-width:400px){
.post-head h1{font-size:25px}
.wrap{padding:0 15px}
.article{padding:24px 16px 8px}
.article figure{margin:22px -16px}
}
</style>
</head>
<body>
<div class="topbar">
<div class="wrap">
<a class="logo" href="../index.html"><img src="../pitura/logo/Logo_nero.svg" alt="Bitcoin After Life logo"><span translate="no">Bitcoin After Life</span></a>
<button class="navtoggle" id="navToggle" type="button"
aria-expanded="false" aria-controls="mainNav" aria-label="Open menu">
<span class="bars"></span>
</button>
<nav id="mainNav">
<a href="../index.html#features">Features</a>
<a href="../index.html#how">How it works</a>
<a href="../index.html#plugin">Plugin</a>
<a href="../index.html#faq">FAQ</a>
<a class="active" href="../blog.html">Blog</a>
<a href="../manifesto.html">Manifesto</a>
<a class="x" href="https://x.com/BitcoinAfterLif" title="@BitcoinAfterLif on X">@X</a>
</nav>
</div>
</div>
<main>
<header class="post-head">
<div class="wrap">
<span class="eyebrow">Blog</span>
<h1>What Happens to Your Bitcoin When You're Gone?</h1>
<div class="post-meta">
<time datetime="2026-08-15">15 August 2026</time>
<span class="dot"></span>
<span translate="no">Bitcoin After Life</span>
<span class="dot"></span>
<span>5 min read</span>
</div>
</div>
</header>
<article class="article">
<figure>
<img src="img/what-happens-to-your-bitcoin-cover.webp" width="1600" height="900" loading="lazy" alt="The Eternal Ledger — five steps from the inheritance gap to a time-locked handoff that keeps self-custody intact">
</figure>
<p>Self-custody is the whole point of Bitcoin. It is also, quietly, the reason a great deal of it will never move again.</p>
<p>You hold your own keys. Nobody can freeze your coins, seize them, or spend them without your permission. But that same guarantee cuts both ways: if you disappear tomorrow — an accident, an illness, or simply a hard drive that dies at the wrong moment — nobody can help your family either. Not a bank. Not a court. Not the developers of your wallet. Bitcoin does exactly what it promised: it obeys the keys, and only the keys.</p>
<p>Most people who hold Bitcoin know this in the abstract. Very few have done anything about it.</p>
<h2>The scale of the problem</h2>
<p>Nobody can count lost coins precisely — the blockchain does not flag them — but analysts converge on a striking range. Estimates from Chainalysis and others put the number of permanently inaccessible bitcoin somewhere between 2.3 and 4 million BTC, roughly 11 to 18 percent of the 21 million cap.<sup>1</sup> Some of that is early mining rewards nobody ever claimed. Some is a discarded laptop, a forgotten password, a paper wallet that went through the wash.</p>
<p>And a meaningful share is a simpler story: someone died, and no one else knew where the keys were, or how to use them.</p>
<p>Every one of those coins is still visible on-chain. You can look them up. They will sit there forever, doing nothing, because a private key that nobody holds is indistinguishable from a private key that never existed.</p>
<h2>Why "just leave instructions" doesn't work</h2>
<p>The natural response is: <em>I'll write it down.</em> Put the seed phrase in an envelope, tell your partner where it is, add a line to your will. Problem solved.</p>
<p>It isn't, and it helps to be honest about why. The usual approaches to Bitcoin inheritance all quietly break the thing they are trying to protect:</p>
<ul style="padding-left:22px">
<li><strong>Give your seed phrase to a family member.</strong> Now two people can move your coins — <em>today</em>, not after you're gone. You have not created a backup; you have created a co-owner, and one who may not understand what they are holding.</li>
<li><strong>Hand the coins to a custodian.</strong> A trusted third party will hold them and release them to your heirs. That is a perfectly valid choice — but it is no longer self-custody. You are back to trusting an institution to still exist, still be solvent, and still be willing when the time comes.</li>
<li><strong>Write it into a legal will.</strong> Executors and lawyers are excellent at transferring houses and bank accounts. Most of them have never restored a wallet from a seed phrase, and a will is a public document that will eventually name exactly where the funds are.</li>
<li><strong>Do nothing and hope.</strong> Statistically the most common option — and the one those 2.3 to 4 million coins came from.</li>
</ul>
<p>Each of these trades one risk for another. None of them lets you keep full control today while guaranteeing your heirs receive the coins tomorrow.</p>
<h2>What Bitcoin itself allows</h2>
<p>Here is the part that is easy to miss: the Bitcoin protocol already contains the tool for this. It is called a <strong>time-locked transaction</strong>.</p>
<p>You can sign a transaction <em>now</em> that Bitcoin will refuse to accept until a date you choose. Until that date, the network's own consensus rules reject it — no one can broadcast it early, not even you. After that date, anyone holding the signed transaction can send it to the network, and it will confirm.</p>
<p>That single primitive changes the shape of the problem. You no longer need to give anyone your keys. You need to give someone a <em>pre-signed transaction</em> that only becomes valid in the future — and make sure at least one of them is still around to broadcast it when the time comes.</p>
<p>Which raises the obvious question: <em>who?</em></p>
<h2>Where Bitcoin After Life comes in</h2>
<p><span translate="no">Bitcoin After Life</span> (BAL) is an open-source plugin for Electrum that turns that primitive into something a normal person can actually use. You choose your heirs and a delivery date. The plugin builds the time-locked transaction, Electrum signs it locally — your keys never leave your device — and the signed transaction is handed to a network of independent <strong>Will-Executor</strong> servers whose only job is to broadcast it on the date you set.</p>
<p>They cannot spend it. They cannot alter it. They cannot broadcast it early, because Bitcoin won't let them. And because the same transaction is held by several of them, no single server needs to survive for your plan to work — only one has to.</p>
<p>If you are still here when the date approaches, you simply renew. If you are not, your coins go where you said they should — with no notary, no custodian, and no one ever holding your keys but you.</p>
<p>Self-custody was never meant to end with you. Bitcoin already has the tools to make sure it doesn't. Read how the protocol works — and what a Will-Executor can and cannot see — in the manual: <a href="https://bitcoin-after.life/docs/" target="_blank" rel="noopener">bitcoin-after.life/docs</a></p>
<aside class="related">
<h2>Keep reading</h2>
<ul style="padding-left:22px">
<li><a href="binance-hack-not-your-keys.html">Six Billion Dollars in Twenty Minutes: What the Binance Hack Proves About Keys</a></li>
<li><a href="should-you-tell-your-family-about-your-bitcoin.html">Should You Tell Your Family About Your Bitcoin? What They Need to Know, and What They Don't</a></li>
<li><a href="inheritance-when-trust-fails.html">The vanishing inheritance: when trust fails, mathematics doesn't</a></li>
<li><a href="the-quietest-day.html">The Quietest Day: What Really Happens When Your Bitcoin Inheritance Arrives</a></li>
</ul>
<p>New to Bitcoin After Life? Read the <a href="https://bitcoin-after.life/docs/">user manual</a> or <a href="../index.html#plugin">get the Electrum plugin</a>.</p>
</aside>
<hr>
<p class="disclaimer"><sup>1</sup> Ranges vary by methodology and year; the 2.3–4 million BTC figure reflects estimates cited by Chainalysis, Ledger, and River Financial. The exact number is unknowable, and that uncertainty is part of the point.</p>
</article>
<div class="back">
<a href="../blog.html">← Back to the blog</a>
</div>
</main>
<footer>
<div class="wrap">
<div class="sig">Svātantrya</div>
<div>Signed — <span translate="no">Bitcoin After Life</span> Protocol</div>
<div class="links">
<a href="https://bitcoin-after.life">bitcoin-after.life</a>
<a href="mailto:info@bitcoin-after.life">info@bitcoin-after.life</a>
<a href="https://x.com/BitcoinAfterLif">@BitcoinAfterLif</a>
<a href="https://bitcoin-after.life/pgp">PGP Key</a>
<a href="https://bitcoin-after.life/gitea/bitcoinafterlife">Source Code</a>
</div>
<div class="built">Built with ₿itcoin. No FIAT was used in the making of this protocol.</div>
</div>
</footer>
<script>
/* Mobile menu toggle -- identical behaviour across all pages. */
(function () {
const toggle = document.getElementById('navToggle');
const nav = document.getElementById('mainNav');
if (!toggle || !nav) return;
function setOpen(open) {
nav.classList.toggle('open', open);
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
}
toggle.addEventListener('click', function () {
setOpen(!nav.classList.contains('open'));
});
nav.addEventListener('click', function (e) {
if (e.target.tagName === 'A') setOpen(false);
});
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') setOpen(false);
});
})();
</script>
</body>
</html>

View File

@@ -0,0 +1,356 @@
<!DOCTYPE html>
<html lang="en" class="nojs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Electrum Inheritance Plugin: Timelocks Replace Trust — Bitcoin After Life</title>
<meta name="description" content="Signing is the most security-critical act in Bitcoin, so BAL never signs. How building on Electrum and nLocktime replaces trust with consensus rules.">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Bitcoin After Life">
<meta property="og:title" content="Electrum Inheritance Plugin: Timelocks Replace Trust — Bitcoin After Life">
<meta property="og:description" content="Signing is the most security-critical act in Bitcoin, so BAL never signs. How building on Electrum and nLocktime replaces trust with consensus rules.">
<meta property="og:url" content="https://bitcoin-after.life/blog/why-electrum-and-timelocks.html">
<meta property="og:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@BitcoinAfterLif">
<meta name="twitter:title" content="Electrum Inheritance Plugin: Timelocks Replace Trust — Bitcoin After Life">
<meta name="twitter:description" content="Signing is the most security-critical act in Bitcoin, so BAL never signs. How building on Electrum and nLocktime replaces trust with consensus rules.">
<meta name="twitter:image" content="https://bitcoin-after.life/pitura/og-share.png">
<meta name="theme-color" content="#2d6cdf">
<link rel="canonical" href="https://bitcoin-after.life/blog/why-electrum-and-timelocks.html">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Why We Built BAL as an Electrum Plugin — and Why Timelocks Remove the Need for Trust",
"description": "Signing is the most security-critical act in Bitcoin, so BAL never signs. How building on Electrum and nLocktime replaces trust with consensus rules.",
"image": "https://bitcoin-after.life/blog/img/why-electrum-and-timelocks.webp",
"datePublished": "2026-08-23T09:00:00+02:00",
"dateModified": "2026-08-23T09:00:00+02:00",
"author": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/"
},
"publisher": {
"@type": "Organization",
"name": "Bitcoin After Life",
"url": "https://bitcoin-after.life/",
"logo": {
"@type": "ImageObject",
"url": "https://bitcoin-after.life/pitura/logo/Logo_nero.svg"
}
},
"mainEntityOfPage": "https://bitcoin-after.life/blog/why-electrum-and-timelocks.html",
"inLanguage": "en"
}
</script>
<link rel="icon" type="image/x-icon" href="/pitura/ico/Logo_nero.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/pitura/ico/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/pitura/ico/favicon-16.png">
<script>
/* Runs before first paint: removes the `nojs` class set on <html>, so the
mobile menu button is only shown when it can actually work. */
document.documentElement.classList.remove('nojs');
</script>
<style>
:root{
--maxw:1120px;
--radius:10px;
--bg:#eef1f4;
--panel:#ffffff;
--ink:#1a2027;
--muted:#5b6672;
--line:#dfe4ea;
--line-strong:#cbd2da;
--accent:#2d6cdf;
--accent-soft:#e6eefc;
--display:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--body:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
--shadow:0 1px 2px rgba(20,30,50,.05);
--shadow-lg:0 6px 20px rgba(20,30,50,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);
line-height:1.55;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
/* ---------- Top bar (shared with home and manifesto) ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.86);
backdrop-filter:saturate(150%) blur(8px);border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:18px;height:60px}
.topbar .logo{display:flex;align-items:center;gap:10px;font-family:var(--display);
font-weight:600;color:var(--ink)}
.topbar .logo img{width:30px;height:30px;display:block}
.topbar .logo span{font-size:15px;letter-spacing:-.01em}
.topbar nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
.topbar nav a{color:var(--muted);font-size:13px;padding:7px 11px;border-radius:7px}
.topbar nav a:hover{color:var(--ink);background:var(--accent-soft);text-decoration:none}
.topbar nav a.active{color:var(--accent);font-weight:600;border:1px solid #cfe0fb;
background:var(--accent-soft)}
.topbar .x{color:var(--ink);font-weight:600}
.navtoggle{
display:none;margin-left:auto;width:44px;height:44px;flex:none;
align-items:center;justify-content:center;
background:var(--panel);border:1px solid var(--line-strong);border-radius:9px;
color:var(--ink);cursor:pointer;padding:0;
}
.navtoggle:hover{border-color:var(--accent);color:var(--accent)}
.navtoggle .bars{display:block;width:18px;height:2px;background:currentColor;position:relative}
.navtoggle .bars::before,.navtoggle .bars::after{
content:"";position:absolute;left:0;width:18px;height:2px;background:currentColor}
.navtoggle .bars::before{top:-6px}
.navtoggle .bars::after{top:6px}
.navtoggle[aria-expanded="true"] .bars{background:transparent}
.navtoggle[aria-expanded="true"] .bars::before{top:0;transform:rotate(45deg)}
.navtoggle[aria-expanded="true"] .bars::after{top:0;transform:rotate(-45deg)}
/* ---------- Footer (shared) ---------- */
footer{border-top:1px solid var(--line);margin-top:56px;padding:34px 0 40px;
color:var(--muted);font-size:14px;background:var(--panel)}
footer .sig{font-family:var(--display);font-weight:600;color:var(--ink);font-size:16px}
footer .links{display:flex;gap:16px;flex-wrap:wrap;margin:14px 0}
footer .built{font-size:13px;color:var(--muted);margin-top:8px}
@media (max-width:900px){
.navtoggle{display:inline-flex}
.topbar nav{
position:absolute;top:100%;left:0;right:0;
margin-left:0;display:none;flex-direction:column;gap:2px;flex-wrap:nowrap;
background:var(--panel);border-bottom:1px solid var(--line);
box-shadow:var(--shadow-lg);padding:10px 20px 16px;
}
.topbar nav.open{display:flex}
.topbar nav a{font-size:15.5px;padding:0 12px;min-height:44px;
display:flex;align-items:center;border-radius:8px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/*
Without JavaScript the panel cannot be toggled, so the links are shown
inline. On narrow screens they wrap under the logo and the bar is allowed
to grow, instead of being clipped by the fixed 60px height.
*/
.nojs .navtoggle{display:none}
.nojs .topbar nav{position:static;display:flex;flex-direction:row;flex-wrap:wrap;
box-shadow:none;border-bottom:0;padding:0;margin-left:auto;background:transparent}
@media (max-width:900px){
.nojs .topbar .wrap{height:auto;min-height:56px;flex-wrap:wrap;padding-bottom:8px;gap:10px}
.nojs .topbar nav{margin-left:0;width:100%;gap:4px 6px}
.nojs .topbar nav a{font-size:14.5px;min-height:40px;padding:0 10px;
display:flex;align-items:center;border:1px solid var(--line);border-radius:8px}
}
.post-head{padding:44px 0 30px;border-bottom:1px solid var(--line);
background:radial-gradient(820px 280px at 50% -40%,var(--accent-soft),transparent 70%)}
.post-head .wrap{max-width:760px}
.post-head .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.14em;
text-transform:uppercase;color:var(--accent);display:block;margin-bottom:14px}
.post-head h1{font-family:var(--display);font-weight:600;font-size:40px;
letter-spacing:-.02em;line-height:1.12;margin:0 0 14px}
.post-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
font-size:13px;color:var(--muted)}
.post-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--line-strong)}
.article{max-width:760px;margin:0 auto;padding:34px 20px 8px}
.article p{font-size:17px;line-height:1.8;color:#36404b;margin:0 0 20px}
.article p strong{color:var(--ink);font-weight:600}
.article h2{font-family:var(--display);font-weight:600;font-size:25px;
letter-spacing:-.01em;margin:38px 0 14px;padding-bottom:10px;
border-bottom:1px solid var(--line-strong)}
.article ol{padding-left:22px;margin:0 0 20px}
.article li{font-size:17px;line-height:1.8;color:#36404b;margin-bottom:14px}
.article li strong{color:var(--ink);font-weight:600}
.article figure{margin:30px 0}
.article figure img{width:100%;height:auto;display:block;border-radius:var(--radius);
border:1px solid var(--line);box-shadow:var(--shadow)}
.article hr{border:0;border-top:1px solid var(--line-strong);margin:34px 0 22px}
.article .disclaimer{font-size:14px;color:var(--muted);font-style:italic;line-height:1.7}
/*
Inline code and the comparison table: this post is the first to need them.
Both reuse the existing palette tokens so nothing new is introduced visually.
*/
.article code{font-family:var(--mono);font-size:.9em;background:var(--accent-soft);
color:var(--ink);padding:2px 6px;border-radius:5px}
/* The wrapper scrolls on narrow screens so the page body never scrolls sideways. */
.article .tablewrap{overflow-x:auto;margin:0 0 22px;-webkit-overflow-scrolling:touch}
.article table{width:100%;border-collapse:collapse;font-size:15.5px;min-width:480px}
.article th,.article td{text-align:left;padding:11px 14px;border:1px solid var(--line);
line-height:1.6;color:#36404b;vertical-align:top}
.article th{font-family:var(--display);font-weight:600;color:var(--ink);
background:var(--accent-soft)}
.back{max-width:760px;margin:26px auto 0;padding:0 20px 8px}
.back a{font-size:14px;font-weight:600}
@media (max-width:700px){
.post-head{padding:30px 0 24px}
.post-head h1{font-size:29px}
.article{padding:28px 18px 8px}
.article h2{font-size:22px;margin-top:32px}
.article figure{margin:24px -18px}
.article figure img{border-radius:0;border-left:0;border-right:0}
}
@media (max-width:400px){
.post-head h1{font-size:25px}
.wrap{padding:0 15px}
.article{padding:24px 16px 8px}
.article figure{margin:22px -16px}
}
</style>
</head>
<body>
<div class="topbar">
<div class="wrap">
<a class="logo" href="../index.html"><img src="../pitura/logo/Logo_nero.svg" alt="Bitcoin After Life logo"><span translate="no">Bitcoin After Life</span></a>
<button class="navtoggle" id="navToggle" type="button"
aria-expanded="false" aria-controls="mainNav" aria-label="Open menu">
<span class="bars"></span>
</button>
<nav id="mainNav">
<a href="../index.html#features">Features</a>
<a href="../index.html#how">How it works</a>
<a href="../index.html#plugin">Plugin</a>
<a href="../index.html#faq">FAQ</a>
<a class="active" href="../blog.html">Blog</a>
<a href="../manifesto.html">Manifesto</a>
<a class="x" href="https://x.com/BitcoinAfterLif" title="@BitcoinAfterLif on X">@X</a>
</nav>
</div>
</div>
<main>
<header class="post-head">
<div class="wrap">
<span class="eyebrow">Blog</span>
<h1>Why We Built BAL as an Electrum Plugin — and Why Timelocks Remove the Need for Trust</h1>
<div class="post-meta">
<time datetime="2026-08-23">23 August 2026</time>
<span class="dot"></span>
<span translate="no">Bitcoin After Life</span>
<span class="dot"></span>
<span>4 min read</span>
</div>
</div>
</header>
<article class="article">
<figure>
<img src="img/why-electrum-and-timelocks.webp" width="1600" height="900" loading="lazy" alt="Temporal Seal — a padlock shaped like a clock holding a signed Bitcoin document">
</figure>
<p>When people first hear about <span translate="no">Bitcoin After Life</span>, two questions arrive almost immediately. The first: <em>"Why a plugin for Electrum instead of your own wallet?"</em> The second: <em>"And why should I trust these Will-Executor servers with my inheritance?"</em></p>
<p>Both questions have the same answer, and it is the design philosophy at the core of the whole protocol: <strong>don't ask people to trust you — build a system where trust is not required.</strong></p>
<h2>Why Electrum: signing is sacred</h2>
<p>The single most security-critical operation in Bitcoin is signing a transaction. Everything else — addresses, balances, broadcasting — is public and verifiable. Signing is where your private keys touch the world, and it is where wallets live or die.</p>
<p>Electrum has been signing Bitcoin transactions since 2011. It is one of the oldest, most audited, most battle-tested pieces of software in the entire ecosystem. It supports hardware wallets, it works offline for air-gapped signing, and millions of users have stress-tested it against every edge case imaginable for over a decade.</p>
<p>Building a new wallet from scratch would have meant asking users to trust <em>our</em> signing code with <em>their</em> life savings. We refused. The BAL plugin never signs anything. It builds the transaction, shows it to you, and then asks Electrum — your Electrum, with your keys, your password, your hardware wallet — to sign it. The plugin asks; you decide. Your keys never leave your device, and the signing process is entirely independent of BAL.</p>
<p>This choice also shrinks the attack surface dramatically: BAL's code handles no secrets, so there is nothing in it worth stealing.</p>
<h2>Why timelocks: consensus, not promises</h2>
<p>The second pillar is <code>nLocktime</code>, a feature built into the Bitcoin protocol itself since the very beginning.</p>
<p>A time-locked transaction is a normal, fully signed Bitcoin transaction with one special property: it carries a timestamp, and <strong>Bitcoin nodes will reject it until that moment arrives</strong>. Not "should reject" — <em>will</em> reject. It is not a policy of any company or server. It is a consensus rule, enforced by the same mathematics that prevents double-spending.</p>
<p>This changes the entire trust equation of inheritance:</p>
<ul style="padding-left:22px">
<li><strong>No one can execute your will early.</strong> Not an impatient heir, not a compromised server, not a bug. Before the delivery date, the transaction simply does not exist as far as the network is concerned.</li>
<li><strong>No one can alter it.</strong> The transaction is already fully signed by your key. Changing a single satoshi would invalidate the signature.</li>
<li><strong>No one can steal with it.</strong> The outputs are fixed at signing time: your heirs' addresses and the executor's fee. A Will-Executor holding the transaction holds something that can only ever pay <em>your</em> chosen destinations.</li>
</ul>
<h2>What Will-Executors actually are (and are not)</h2>
<p>With timelocks in place, the role of the Will-Executor becomes almost boring — and that is precisely the point. A Will-Executor server does exactly two things:</p>
<ol>
<li><strong>Store</strong> your signed, time-locked transaction.</li>
<li><strong>Broadcast</strong> it to the Bitcoin network when the delivery date arrives.</li>
</ol>
<p>It cannot peek at the future, cannot modify the transaction, cannot redirect the funds. It is closer to an automated mailbox than to a bank. And its incentive to behave is not reputational or legal — it is <strong>on-chain</strong>: each inheritance transaction includes a fee for the executor, which is only paid when the transaction confirms. The server earns nothing unless the inheritance executes exactly as you designed it.</p>
<p>Redundancy completes the picture. The plugin creates one transaction per selected Will-Executor, drawn from the public WeList directory. Only one of them needs to still be operating on the delivery date for your will to execute. The first to broadcast wins the fee — a built-in race that keeps every executor honest and punctual.</p>
<h2>Trust, deleted</h2>
<p>The history of crypto is littered with "trust us" — trusted exchanges, trusted custodians, trusted recovery services — and with the wreckage left when that trust broke. BAL's architecture is an attempt to delete the word entirely:</p>
<div class="tablewrap">
<table>
<thead>
<tr><th>Concern</th><th>Traditional answer</th><th>BAL's answer</th></tr>
</thead>
<tbody>
<tr><td>Who holds my keys?</td><td>A custodian</td><td>Only you, in Electrum</td></tr>
<tr><td>Who controls the timing?</td><td>A court</td><td>Bitcoin consensus (<code>nLocktime</code>)</td></tr>
<tr><td>Who executes the will?</td><td>A lawyer</td><td>A redundant network of incentivized servers</td></tr>
<tr><td>What stops abuse?</td><td>Legal liability</td><td>Mathematics and game theory</td></tr>
</tbody>
</table>
</div>
<p>If you are the kind of person who verifies instead of trusting — and if you hold your own keys, you probably are — both the plugin and the server are open source, MIT-licensed, and waiting for your review on our <a href="https://bitcoin-after.life/gitea/bitcoinafterlife" target="_blank" rel="noopener">Gitea</a>. The full protocol walkthrough is in the <a href="https://bitcoin-after.life/docs/protocol/how-it-works.html" target="_blank" rel="noopener">manual</a>, and we recommend everyone starts on testnet.</p>
<p>Don't trust. Verify. Then, and only then, plan.</p>
<aside class="related">
<h2>Keep reading</h2>
<ul style="padding-left:22px">
<li><a href="proof-of-life.html">Proof of Life Without Surveillance: How Your Wallet Tells the Protocol You're Still Here</a></li>
<li><a href="it-all-starts-with-the-seed.html">It all starts with the seed</a></li>
<li><a href="run-a-will-executor.html">Run a Will-Executor: Earn Bitcoin Fees by Powering Decentralized Inheritance</a></li>
<li><a href="bal-is-a-protocol-not-a-plugin.html">The Plugin Is Just the First Door: BAL Is a Protocol, and Will-Executors Are Its Foundation</a></li>
</ul>
<p>New to Bitcoin After Life? Read the <a href="https://bitcoin-after.life/docs/">user manual</a> or <a href="../index.html#plugin">get the Electrum plugin</a>.</p>
</aside>
</article>
<div class="back">
<a href="../blog.html">← Back to the blog</a>
</div>
</main>
<footer>
<div class="wrap">
<div class="sig">Svātantrya</div>
<div>Signed — <span translate="no">Bitcoin After Life</span> Protocol</div>
<div class="links">
<a href="https://bitcoin-after.life">bitcoin-after.life</a>
<a href="mailto:info@bitcoin-after.life">info@bitcoin-after.life</a>
<a href="https://x.com/BitcoinAfterLif">@BitcoinAfterLif</a>
<a href="https://bitcoin-after.life/pgp">PGP Key</a>
<a href="https://bitcoin-after.life/gitea/bitcoinafterlife">Source Code</a>
</div>
<div class="built">Built with ₿itcoin. No FIAT was used in the making of this protocol.</div>
</div>
</footer>
<script>
/* Mobile menu toggle -- identical behaviour across all pages. */
(function () {
const toggle = document.getElementById('navToggle');
const nav = document.getElementById('mainNav');
if (!toggle || !nav) return;
function setOpen(open) {
nav.classList.toggle('open', open);
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
}
toggle.addEventListener('click', function () {
setOpen(!nav.classList.contains('open'));
});
nav.addEventListener('click', function (e) {
if (e.target.tagName === 'A') setOpen(false);
});
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') setOpen(false);
});
})();
</script>
</body>
</html>

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
how-it-works/cover.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

1075
how-it-works/index.html Normal file

File diff suppressed because one or more lines are too long

1127
how-it-works/simple.html Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More