A mathematical scheme that consists of two parts:
1) an algorithm for creating a signature, using a private key
(the signing key), from a message (e.g., a transaction).
2) an algorithm that allows anyone to verify the signature
by only using the message and a public key.