Domino Compass · deterministic key runtime

·Authority

Identity, Bitcoin, capabilities, revocation, recovery.

06Capabilities

You should not need to expose or repeatedly use your root key. Capabilities express operational access as scoped, time-bounded, revocable delegation statements.

The progression

Root authority → operational key → scoped capability → delegated capability → revoked capability

Capability record fields

FieldMeaning
capability_idcontent hash of the record
issuer_public_keywho issued (the authority)
derived_public_keythe key being delegated
purposewhat it is for
scopewhat it may do
valid_from / valid_untiltime bounds
block_context_limitsBitcoin-native bounds
service_namespacewhich service honors it
revocation_lanewhich revocation path applies
recipe_idwhich recipe produced it
entropy_card_fingerprintthe commitment
signaturebare secp256k1 by the issuer

Signed ≠ admitted

A signed capability is a claim, not a grant. Access is granted by the service's admission decision (its accepted-key set). The lifecycle:

signed → admitted → active → revoked
  • signed: the issuer has signed the capability (a claim of intent).
  • admitted: the service has accepted it into its accepted-key set (the actual grant).
  • active: the capability is currently honored.
  • revoked: the capability is no longer honored.

A capability that is signed but never admitted is not valid.

Example scenarios

  • Sign Nostr events for one application
  • Authorize dStor operations
  • Authorize a limited Bitcoin signing workflow
  • Issue a time-limited application token
  • Rotate compromised operational keys

Application key generator UX

Cryptographic authorization without forcing the user to manually administer raw cryptographic keys.

Capability ID
—
Public fingerprint
—
Expiration
—
Permissions
—
The root secret is never exposed. This generates a scoped capability bound to a derived key.

08Revocation

Revocation is not deletion of a copied secret. Revocation is refusal to honor the secret after a revocation condition.

The authority graph

Root └── Identity A └── Capability B └── Application C

When Capability B is compromised, you revoke B — without requiring Root compromise. You preserve the root and all unrelated derivations.

Before and after revocation

Before

Root └── Identity A ├── Capability B (active) │ └── Application C └── Capability D (active) └── Application E

After revoking B

Root └── Identity A ├── Capability B (revoked) │ └── Application C (denied) └── Capability D (active) └── Application E (still works)

Capability D and Application E are unaffected. The root is untouched.

Honest scoping — what revocation does and does not do

Revocation is honored only at acceptance boundaries that check revocation state. It is not honored by:

  • Bitcoin consensus. A revoked spend key still spends. The chain does not consult revocation state. Spend-capable lanes are not revocable once exported — treat them as permanent.
  • Offline verifiers that cannot reach revocation state. An offline verifier must deny on unknown (fail-closed). If it cannot verify current revocation state, it must not honor the capability.
Revocation checkpoint / epoch: every verifier must pass a revocation checkpoint before honoring any capability. The checkpoint is a signed, content-addressed revocation-state object with a monotonic epoch, a maximum staleness (TTL), a push/relay mechanism, and a fail-closed rule. A verifier that honors a capability without passing a fresh checkpoint is non-compliant.
Revocation-lane authority: the revocation_lane must be bound to a distinct revocation authority at issuance — a key that is not the capability issuer and that the issuer does not control. A capability whose revocation lane is self-declared must be rejected.

Revocation paths

  • Parent identity revokes child
  • Service peer updates accepted-key policy
  • Kapnet actor state marks child invalid
  • Recipe lane superseded
  • Expiry condition passes
  • HedlBit bond slashed
  • Trustee recovery branch rotates identity
  • Device key removed from accepted delegation set
  • Revocation event published
  • dStor keychain snapshot marks capability revoked

09Recovery

You lose the laptop, phone, application database, and operational keys — but you retain the physical entropy material and the recipe. Recovery reconstructs authority.

Recovery flow

physical material → recipe → deterministic reconstruction → root → identity runtime → Bitcoin runtime → capability reconstruction / replacement

Recovering authority vs. recovering every historical key

Recovery reconstructs the root and the runtimes — the authority. It does not necessarily recover every historical operational key. Where appropriate, operational state may instead be restored from encrypted backup material (e.g. the dStor keychain).

Recovery completeness: the full recovery set is the start seed (fixed or secret) + the 8×7 domino transcript (or canonical bytes / derived path) + recursion count r (if used) + the BIP85 export map. This is sufficient to regenerate every downstream BIP85 export.

Recovery checklist generator

Generate a printable recovery checklist describing what physical material must be retained, which recipe identifier applies, which derivation profile/version applies, and what public fingerprints should be expected. It does not include secrets.

17Public fingerprints

Fingerprints are verification handles. They prove regeneration succeeded without exposing the secret.

What each fingerprint proves

FingerprintFormulaProvesDoes not reveal
Root commitmentSHA-256(transcript || "dc-commit-v1")You hold the same physical cardThe root secret
Identity fingerprintSHA-256(id_pubkey || recipe_id || "identity")Regeneration of the identity keyThe identity private key
Bitcoin fingerprintSHA-256(btc_pubkey || recipe_id || "bitcoin")Regeneration of the Bitcoin keyThe Bitcoin private key
Capability fingerprintcontent hash of the capability recordThe capability is intact and signedAny private material
Descriptor fingerprinthash of the descriptorThe descriptor is intactSigning authority
Recovery = verification: recovery means rerunning the air-gapped recipe against the same physical entropy and verifying the resulting public key's fingerprint matches the expected value. The nsec itself never needs to be printed, cloud-stored, screenshotted, or placed in a persistent password manager.

Verification tool

Paste a public fingerprint or capability record and verify format validity, version, checksum, public identity, scope, expiration, and derivation profile identifier. The verifier requires no private material.

18Watch-only Bitcoin & descriptors

Bitcoin public material can be separated from signing material. Watch-only systems track funds without possessing signing authority.

Watch-only separation

Domino Compass root → Bitcoin signing hierarchy → descriptors / xpub-derived material → watch-only wallet

Watch-only wallets can track funds without possessing signing authority. The signing keys stay under the user's physical control; only public material (xpub, descriptors) is shared with the watch-only surface.

Descriptor explorer

Domino Compass derivation → derived Bitcoin key → extended public key / descriptor material → watch-only wallet representation
Domino Compass does not replace Bitcoin wallet standards. It generates deterministic key material compatible with BIP-32, BIP-84, BIP-86, descriptors, and PSBT. It does not invent proprietary Bitcoin transaction formats.

19Nostr identity

A Nostr-oriented example: the nsec can be regenerated from the deterministic root rather than permanently stored online.

Nostr derivation

Domino Compass root → identity derivation → nsec → npub → delegated application key → scoped authorization

The nsec is a downstream artifact of the identity lane. It can be regenerated from the deterministic root whenever needed — it does not need to be permanently stored online.

Nostr identity lane: the identity lane uses a Domino-Compass-specific purpose constant (m/220'/0'/0', unregistered private placeholder). It is not a standard BIP path — it is Domino-Compass-native.

12Security model

No "military-grade security," no "unhackable." Here are the assumptions and failure modes, honestly stated.

What we claim (and don't)

Correct to claim

  • ~265.9 bits of physical search entropy across two sortitions
  • 256-bit uniform secret target, appropriate for backup secrecy
  • Path-encoded secrecy independent of (or composable with) the start seed
  • Canonical, ambiguity-free transcript encoding
  • BIP85-ready downstream interoperability

Do NOT claim

  • 256-bit effective secp256k1 signing security (the curve's group order limits signing to ~128-bit)
  • The wordlist is the backup (it is a BIP85 artifact, never the root)
  • 8 rows are 8 independent events (they are display wrapping of 2 passes)
  • 56 tokens are 56 independent base-70 digits
  • The system removes the need to protect secret material (it changes its form)

Threat model

For each threat: what is exposed, what remains safe, what must be rotated, what must be reconstructed.

ThreatWhat is exposedWhat remains safeWhat you must rotate / reconstruct
Compromised browserAnything rendered in itRoot (if never entered online)Rotate operational keys; reconstruct from card offline
Compromised OSLocal plaintext stateRoot (if air-gapped)Rotate operational keys; rebuild environment
Compromised cloud storageEncrypted operational materialRoot (never stored there); decryption key (user-only)Nothing if encryption holds; rotate if decryption key leaked
Leaked recipePurpose, scope, lane context, commitmentRoot secret (commitment is non-revealing)Reconstruct a new recipe; re-derive lanes
Leaked capabilityThat capability's scopeRoot, other capabilitiesRevoke the capability; issue a replacement
Stolen entropy cardsThe rootNothing — this is the rootReconstruct a new physical card; migrate everything
Partial physical entropy disclosureSome of the transcriptRemaining entropy (search space shrinks)Reconstruct a new card if disclosure is material
Poor entropy constructionReduced search space—Reconstruct with a proper ceremony
Compromised operational keyThat key's scopeRoot, other lanesRevoke; rotate the operational key
Compromised root keyEverythingNothingReconstruct a new physical card; migrate everything
Metadata leakageWho/what/when of operationsKey materialReduce metadata; rotate affected capabilities
Deterministic encoding ambiguityPotential wrong-key derivation—Verify fingerprints; use canonical encoding
Implementation bugsDepends on the bug—Use the audited reference; verify against test vectors

Where the secret lives

Domino Compass stores the secret in the derivation path, not the start seed. The path is m/i1'/…/i9', where each index is a hardened child number derived from the 256-bit secret S.

  • If the start seed is public (e.g. 32 zero bytes), the entire secrecy rests on the path — i.e. on the transcript. The 8×7 card, the path, and the transcript bytes are secret material.
  • If the start seed is also secret, it composes as an independent secret component on top of the path.
Compatibility: Domino Compass is not interoperable at the root level with ordinary wallets. Compatibility arrives only through a BIP85 export.