ETHOnline 2026 · ENS track + World track

your keys
shouldn't die
with you.

herit hands your on-chain estate to named next-of-kin once you stop proving you are alive. estate heirs are ENS subnames carrying real permissions, not raw addresses. liveness is a World ID Selfie Check, not a timestamp any bot can ping.

⚠️heads up: the Selfie Check only works if World has given you access to the World ID Sandbox. request it from the World team first.how to get sandbox access · testing Selfie Check in sandbox
  • a stolen key cannot pass a liveness check
  • one human, one heir slot
  • grace period for false alarms

estate

alice.herit.eth

active

next check-in

11d 04h

of a 30 days window

son.alice.herit.eth

son

40%

kate.alice.herit.eth

spouse

35%
ROLE_HEIR_CLAIMwithheld

every dead-man's switch breaks in the same two places

crypto inheritance has an identity problem.

the usual failure

proof of life is just a timestamp

classic dead-man's switches refresh a lastActive field on any transaction. a bot on a cron, a delegated signer, or an attacker holding your stolen key can all keep that clock alive forever while you are not.

a Selfie Check, not a signature

checking in requires a fresh World ID liveness and uniqueness proof scoped to your estate. a private key cannot look into a camera. whoever holds your key cannot pretend you are still here.

the usual failure

heirs are opaque addresses

0x71c7…976f tells a grantor nothing, carries no verifiable link to a real person, and can be silently swapped. reviewing your own will becomes an exercise in trusting a hex string.

heirs are ENS subnames with roles

each heir gets son.alice.herit.eth inside a registry deployed for your estate, holding a relationship record, a share, and a claim role that ENSv2 itself enforces. readable, portable, and permissioned.

setup takes four steps

how it works

01

claim your estate name

register alice.herit.eth in the grantor registry. herit deploys a dedicated ENSv2 registry for your estate in the same transaction, and holds only the root roles it needs to gate heirs later.

02

name your heirs

mint son.alice.herit.eth for each next-of-kin with a relationship record and a share in basis points. the claim role is deliberately withheld at registration.

03

set the clock and fund the vault

pick a check-in interval and a grace period, then escrow exactly what you intend to will into an opt-in vault.

04

keep proving you are alive

one Selfie Check per interval resets the clock. miss it and grace begins; miss grace and anyone may poke the registry, which grants the claim role to your heirs.

the state machine

two timers, three states

herit cannot unlock your estate on their own, and no one has to be online for it to unlock.

active

you checked in on time

the estate is sealed. heirs can see their subname and their share, and can do nothing with either. the claim role does not sit on their name at all.

heirs: read-only

grace

a window closed with no check-in

the safety harness for travel, illness, or a bad network day. one valid Selfie Check here returns the estate to active with nothing lost. heirs are notified.

reversible by you

unlocked

grace lapsed too

anyone may poke the registry. ROLE_HEIR_CLAIM lands on each heir subname. each heir then passes their own Selfie Check to claim their share.

heirs: claimable

live on sepolia

every estate opened so far

The Graph indexes every estate herit opens, and each row is then filled in from the contracts as you look at it, where the clock stands, and which ENS subnames are waiting on it. open a row to see the heirs and their shares.

live estates

reading sepolia…

two fundamental tracks

neither integration is a nice-to-have. remove either one and herit stops being safe to use.

ENS track

ENSv2 registries as the permission system

  • one registry deployed per estate through the Verifiable Factory, at an address derivable before it exists
  • heirs are subnames holding herit.relationship and herit.share resolver records
  • enhanced access control is a real bit — ROLE_HEIR_CLAIM, withheld at registration and granted on unlock
  • the grantor is denied ROLE_SET_SUBREGISTRY, so the estate registry can never be swapped for one they control

World track

Selfie Check on both sides of the handover

  • grantor liveness: a recurring proof-of-personhood that gates whether the estate stays sealed
  • heir claim: a one-time uniqueness proof, so one human cannot farm several heir slots
  • proofs are scoped per action and nonce, so a check-in can never be replayed as a claim
  • verified through Cloud Verify, then carried to Sepolia as an EIP-712 attestation with an expiry
under the hood

five contracts on sepolia

ENSv2 lives on Sepolia and World ID's verifier lives on World Chain. herit bridges that gap with a narrow, single-purpose attestor rather than blocking the build on an oracle.

AccessControlGate

deployed

opens estates, registers heirs, grants the claim role. holds root roles on every estate registry and never holds funds.

the ENS layer under herit.eth

deployed once and left alone by a herit redeploy. every grantor name and every heir record in the app lives inside these three.

herit.eth registry
registry A, attached as the subregistry of herit.eth. one subname per grantor — alice.herit.eth lives here.
0x0Aa2…4a21on sepolia etherscan
PermissionedResolver
holds every heir's addr(60), herit.relationship and herit.share records across all estates.
0x42fA…EBb1on sepolia etherscan
ETHRegistry
ENSv2's .eth registry from the frozen hackathon deployment. herit.eth itself is registered here.
0x1d78…971eon sepolia etherscan

takes about four minutes

set it up once, then just keep being alive

open an estate on Sepolia, name your heirs, and let the clock do the rest. demo timers run in minutes so you can watch the whole handover happen.