Identity — Key Management and Recovery
b1e55ed uses a two-layer key hierarchy:If you still have your Ethereum private key, your identity is recoverable.
Key Files
| File | Contents | Sensitivity |
|---|---|---|
.b1e55ed/identity.json | Public identity + encrypted keys | Protect |
.b1e55ed/forge_key.enc | Ethereum private key (plaintext!) | SECRET |
⚠️ forge_key.enc is stored unencrypted by the Forge CLI for backwards
compatibility. Back it up in a secure location (password manager, hardware
wallet, encrypted volume).
Encrypted identity file
WhenB1E55ED_MASTER_PASSWORD is set at forge/setup time, .b1e55ed/identity.json
stores both the Ed25519 and Ethereum private keys encrypted with Argon2id + AES-256-GCM.
The public key and node_id are stored in plaintext.
Backup Recommendations
- Back up
forge_key.enc(your Ethereum private key). This single file is sufficient to recover your full identity. - Back up
.b1e55ed/identity.jsonas a convenience copy. This is recoverable fromforge_key.encbut saves re-runningidentity restore. - Back up
B1E55ED_MASTER_PASSWORD— without it you cannot decryptidentity.jsoneven if you have the file.
Recovery — Restoring from Ethereum Key
If you have lostidentity.json but still have your Ethereum private key
(from forge_key.enc or another backup), run:
- Re-derive the Ed25519 signing key via HKDF (identical derivation to the original forge)
- Reconstruct your
node_idfrom the Ethereum address - Write the restored identity to the standard location (
.b1e55ed/identity.json)
node_id and public key will be identical to the originals — no re-registration needed.
Example
What Happens if You Lose Both Files
If you lose bothforge_key.enc and identity.json and have no other
backup of your Ethereum private key, your identity is permanently lost.
You will need to forge a new identity (b1e55ed identity forge) and
re-register as a contributor. Your previous karma score and signal history
will remain in the database under the old node_id but will be inaccessible
from the new identity.
Technical Details
Derivation Path
b"b1e55ed-ed25519-signing-key-v1" is a domain separation
constant that ensures this derivation is unique to this application.
Node ID Construction
eth_address is the checksummed Ethereum address derived from the
secp256k1 public key (the same address produced by The Forge).
See Also
docs/getting-started.md— initial setup and forgingdocs/crypto-primitives.md— cryptographic primitives referenceengine/security/identity.py— implementation source