Expand description

Scheme for deriving deterministic secret keys

DerivableSecret represents a secret key that can be used to derive child secret keys. A root key secret can be used to derives child keys from it, which can have child keys derived from them, recursively.

The DerivableSecret struct in this implementation is only used for deriving secret keys, not public keys. This allows supporting multiple crypto schemes for the different cryptographic operations used across the different modules:

  • secp256k1 for bitcoin deposit addresses, redeem keys and contract keys for lightning,
  • bls12-381 for the guardians’ threshold signature scheme,
  • chacha20-poly1305 for symmetric encryption used for backups.

Structs§