A TransactionAuthenticator is an abstraction of a signature scheme. It
must know: (1) How to check its signature against a message and public key
(2) How to convert its public key into an AuthenticationKeyPreimage
structured as (public_key | signaure_scheme_id).
Each on-chain DiemAccount must store an AuthenticationKey (computed via
a sha3 hash of an AuthenticationKeyPreimage).
Each transaction submitted to the Diem blockchain contains a
TransactionAuthenticator. During transaction execution, the executor will
check if the TransactionAuthenticator’s signature on the transaction hash
is well-formed (1) and whether the sha3 hash of the
TransactionAuthenticator’s AuthenticationKeyPreimage matches the
AuthenticationKey stored under the transaction’s sender account address
(2).