Wallet signature & calldata digest display
Wallet Signature and Calldata Digest Display
Summary
ERC-8213 standardizes the terminology and display requirements for cryptographic digests that wallets show to signers. It defines the terms:
- EIP-712 Digest:
keccak256("\x19\x01" || domainSeparator || hashStruct(message))— the value that is ultimately signed. - Calldata Digest:
keccak256(uint256(len(calldata)) || calldata)— a compact, chain-agnostic fingerprint of the transaction payload.
For EIP-712 signing, wallets SHOULD display at least the EIP-712 Digest (or Domain Hash + Message Hash together).
For transactions with calldata, wallets SHOULD display the Calldata Digest as a 0x-prefixed hex string.
Why It Matters
Recent high-profile exchange compromises showed that users cannot safely rely on a website's description of what they are signing, if the signing interface is compromised, the description can be spoofed while the actual payload is malicious. ERC-8213 gives signers a way to independently verify the exact bytes they authorize by comparing a short digest against a trusted external source, without needing to parse raw hex character-by-character.