Skip to content

Add periodic key health check pings #274

@kwsantiago

Description

@kwsantiago

Problem

Treasury wallets may sit idle for months. If a participant's hardware wallet breaks or their signing device is lost, the group won't discover this until they need to sign — potentially during an urgent situation where recovery tiers and timelocks add significant delay.

Solution

Add a periodic key liveness check using the existing Nostr keepalive infrastructure in keep-frost-net. Each participant periodically proves they can still sign by responding to a challenge.

Design

  • Coordinator (or any member) sends a HealthCheckRequest with a random nonce
  • Participant signs the nonce with their FROST signing share and returns HealthCheckResponse
  • Track last-seen timestamps per share index
  • Configurable check interval (default: weekly)
  • Alert when a participant hasn't responded within 2x the interval

New message types

HealthCheckRequest { group_pubkey: [u8; 32], nonce: [u8; 32] }
HealthCheckResponse { group_pubkey: [u8; 32], nonce: [u8; 32], signature: Vec<u8> }

Changes needed

  • Add message types to KfpMessage in protocol.rs
  • Add handler in node/ (can be a new node/health.rs)
  • Store last-check timestamps in keep-core (per group + share index)
  • CLI: keep frost health-check --group <hex>
  • Events: HealthCheckPassed, HealthCheckFailed

Context

For company treasury and family vaults, early detection of key unavailability allows orderly recovery (re-sharing, activating backup devices) rather than emergency recovery under time pressure.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestmediumnostr-frostNostr FROST coordination protocolp3Lowest Priority

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions