A heartbeat check-in is how you prove to the Deadman Vault system that you are still alive and in control. Each check-in extends your vault’s on-chain deadline by one full heartbeat interval. The mechanism is elegantly simple: you sign aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/natureloved/DeadMan-Vault/llms.txt
Use this file to discover all available pages before exploring further.
0.01 USDCx transfer to your vault’s keeper address, the server detects the incoming funds, decrypts the keeper key, and calls setRoutingRules with a new deadlineBlock followed by deposit() on the FlowVault contract. Your vault timer resets, and the check-in is written to the heartbeats table with the block height and transaction ID. Missing a check-in is the only thing that triggers vault succession — so make it a habit.
Heartbeat page
The check-in UI lives at/heartbeat?vaultId=[id]. You can reach it directly from any vault card on your dashboard — each card links to the heartbeat page for that vault. The page requires your Stacks wallet to be connected; if it isn’t, you’ll see a Connect Wallet prompt.
Navigate to /heartbeat and select your vault
Open
/heartbeat?vaultId=[vaultId] from your dashboard. The page resolves the vault ID from the URL query parameter and immediately fetches vault state from GET /api/vaults/[vaultId]?address=[yourAddress].If no vaultId is provided in the URL, the page shows a prompt directing you back to your dashboard to select a vault.Review your current deadline status
Once loaded, the page shows a
BlockCounter with three key numbers:- Current block height — fetched live from the Hiro Stacks API
- Deadline block — the
heartbeat_deadline_blockstored for your vault - Time remaining — computed as
(deadlineBlock − currentBlock) × ~10 minutes per block
DeadmanAnimation) that reflects your current vault status. Block data refreshes automatically every 30 seconds while the page is open.If your vault is still in
funding status (on-chain activation not yet complete), the page shows a yellow notice. Wait a few seconds and click Refresh — activation typically completes within one block confirmation.Initiate check-in
Click Check In Now. The button is disabled if:
- Your vault status is
triggeredorclaimed(succession already ran) - Your vault is still in
fundingstate - The keeper address could not be loaded
Sign the 0.01 USDCx transfer in your wallet
Your wallet extension opens with a pre-built SIP-010
transfer transaction:- Amount:
0.01 USDCx(the constantHEARTBEAT_AMOUNT) - Recipient: your vault’s keeper address
- Contract:
usdcxatST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
txId.If your wallet doesn’t respond within 45 seconds, the app surfaces an error. This is usually caused by multiple Stacks wallet extensions installed simultaneously — disable all but one in chrome://extensions and refresh.App calls POST /api/heartbeat
With the No
txId in hand, the app immediately posts to POST /api/heartbeat with:action field is sent — the endpoint treats requests without an action field as heartbeat check-ins.Server extends the deadline on-chain
The server performs the following sequence:
- Looks up the vault record and verifies its status allows a heartbeat.
- Decrypts the keeper private key from the stored ciphertext.
- Instantiates a
FlowVaultclient with the keeper as signer. - Reads the current block height.
- Computes the new deadline:
newDeadlineBlock = currentBlock + heartbeatIntervalDays × 144. - Calls
setRoutingRuleson the FlowVault contract with the updatedlockUntilBlock. - Calls
deposit()to register the 0.01 USDCx heartbeat payment. - Updates
heartbeat_deadline_blockin the database. - Inserts a row in the
heartbeatstable withblock_heightandtx_id.
{ newDeadlineBlock } and the BlockCounter on the page updates immediately.Verify the updated deadline
After a successful check-in, the
BlockCounter displays the new deadline block and the updated time remaining. The vault status returns to active if it had degraded to warning.You can also confirm the check-in on the /status/[vaultId] page — it lists every heartbeat event in the On-Chain Activity log with timestamps, block heights, and transaction links.What happens if you miss a check-in
The keeper cron job runs periodically and monitors all active vaults. Two thresholds are defined inconstants.ts:
| Constant | Blocks | Approx. time |
|---|---|---|
WARNING_BLOCKS | 432 | ~3 days before deadline |
GRACE_PERIOD_BLOCKS | 288 | ~2 days after deadline |
- At 432 blocks before deadline — vault status transitions to
warning; a warning email is sent to your registered email address. - At the deadline block — vault status transitions to
grace_period; a critical last-chance email is sent. - 288 blocks after the deadline — the vault is considered triggered; status moves to
triggeredand the keeper begins settling payouts to beneficiaries.
Heartbeat records
Every successful check-in is persisted in theheartbeats table with:
/status/[vaultId].
Create a Vault
Set up a new Deadman Vault with beneficiaries and a heartbeat interval.
Claim Inheritance
How beneficiaries claim their share from a triggered vault.