Skip to content

Serve the Spark identity from the one allowlisted MF_ seed - #18

Draft
Jossec101 wants to merge 2 commits into
spark/routingfrom
spark/seed-custody
Draft

Jossec101 wants to merge 2 commits into
spark/routingfrom
spark/seed-custody

Conversation

@Jossec101

@Jossec101 Jossec101 commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor
  • Only one seed (SPARK_SEED_FINGERPRINT) may sign for Spark; other seeds and compromised seeds are refused.
  • Serves /spark/info and the Spark identity key.
  • Caches only the derived Spark keys (60 seconds by default), never the mnemonic.
  • SPARK_ACCOUNT defaults to 0.

Stack created with GitHub Stacks CLI • Give Feedback 💬

SPARK_SEED_FINGERPRINT names the only MF_ seed that may sign for Spark, at
the SPARK_ACCOUNT Spark account (required, no default). Any other wallet
is refused before KMS is called, and so is a seed marked Compromised. The
decrypted mnemonic is normalized to single spaces, validated as BIP-39 and
must reproduce its MF_ fingerprint; errors never echo it.

Only the derived Spark account keys are cached, for
SPARK_SIGNER_CACHE_SECONDS (60 by default, 0 disables). The mnemonic and
master key are never cached.

The signer serves an explicit list of operations; this layer serves only
info and identity-public-key, so callers can pin the identity first.
Everything else under /spark/ is a 404 that never touches a seed.
Account 0 is NSpark's default and what NodeGuard uses unless told
otherwise. An invalid value is still a configuration error.
@Jossec101
Jossec101 added this pull request to stack #21 October 9, 2026 23:23
@Jossec101 Jossec101 changed the title spark/seed custody Serve the Spark identity from the one allowlisted MF_ seed Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant