How does Kaspa sign a personal message with a private key?

Kaspa signs personal messages by hashing the raw message with Blake2B and then applying a Schnorr signature over the result using the private key. The process has two steps: first, the message is hashed using Blake2B with a digest length of 32 and the domain-separation key `PersonalMessageSigningHash`; second, a Schnorr signature is computed over that hash. The domain-separation key is deliberately different from the one used for transaction hashes (`TransactionSigningHash`), which prevents a signed personal message from being mistakenly treated as a valid transaction signature. For developers building on Kaspa, this distinction matters because mixing the two signing contexts would be a serious security flaw.

Learn more ›