Skip to content

Cryptographic Identity

A private key creates a digital signature. The matching public key lets someone check that signature and detect changes to the signed message.

Signing does not encrypt a message or make it private. A valid signature is evidence of control of the signing key, not proof of a person’s name, honesty, or the truth of the message.

From private key to node identity

Click each element to see how a secret key produces a public node identifier.

Private Key

A securely generated secret in the valid secp256k1 key range, encoded in 32 bytes. Used to sign artifacts. Keep it private.

Recovering the secret from the public key is considered computationally infeasible under the curve’s security assumptions.

Froglet uses the secp256k1 elliptic curve — the same curve used by Bitcoin, Ethereum, and Nostr. The math works on a curve defined by:

where is a very large prime number.

A private key is a securely generated integer in the curve’s valid secret-key range, encoded in 32 bytes. The corresponding public key is a point on this curve computed by multiplying the curve’s generator point by the private key :

This multiplication is easy to compute but practically impossible to reverse — you cannot derive from . This is the elliptic curve discrete logarithm problem.

Froglet uses BIP340 Schnorr signatures, with 32-byte x-only public keys and 64-byte signatures. The verification relationship is , subject to the specification’s checks. BIP340 also defines tagged hashes, nonce derivation, scalar bounds, and point-parity rules. The equation alone is not an implementation recipe. Use a tested implementation and the BIP340 specification and test vectors.

Froglet’s kernel specification defines the exact artifact bytes to sign; the conformance vectors check interoperability.

Your identity is your 32-byte x-only public key, encoded as a 64-character lowercase hex string:

Private key (secret, never shared):
32 secret bytes in the valid key range
Public key / node_id (your identity):
64 lowercase hexadecimal characters
Signature (64 bytes):
128 lowercase hexadecimal characters

Signed protocol artifacts can be checked against the claimed public key. The same key means the same signing identity, not necessarily the same person: keys can be shared, delegated, or stolen. Protect the private key accordingly.

Froglet can link a separate Nostr publication key in its signed descriptor. The descriptor and the Nostr event have their own signatures; verifiers check the relationship between them. Publication makes this evidence discoverable, but does not guarantee permanent storage. Relays can reject events or discard older replaceable events under Nostr’s event rules.