What is EIP-55: Ethereum address checksum explained
EIP-55 is a checksum for Ethereum addresses encoded in the capitalisation of their hex letters.
An Ethereum address is 20 bytes written as 0x plus 40 hexadecimal characters. The original format had no checksum, so a typo produced another valid address and funds could be lost. EIP-55 solved this without changing the address itself: it encodes a checksum in whether each letter (a–f) is upper or lower case.
The algorithm is simple. Take the address in lowercase without 0x, compute its keccak-256 hash, and walk through the characters. If a character is a letter and the corresponding hex digit of the hash is 8 or higher, write it in uppercase; otherwise keep it lowercase. Digits stay as they are. A wallet that receives a mixed-case address recomputes this and rejects it if the capitalisation does not match.
EIP-55 applies to all EVM networks, including BNB Smart Chain, because they use the same address format. An address written entirely in lowercase (or entirely in uppercase) carries no checksum at all; it is still valid, but a typo will not be detected. That is why developers should store and display addresses in checksummed form and validate user input with a library function such as getAddress in ethers or viem.
The limits matter as much as the benefits. EIP-55 catches accidental typos with high probability, but it cannot detect that the address belongs to a different network, and it cannot detect deliberate substitution: an attacker’s address has its own valid checksum. Clipboard malware and address poisoning attacks produce perfectly checksummed addresses.
On the Moonvex payment page, Ethereum and BSC addresses come with a QR code, so customers do not need to type them, and the network is shown next to the amount to prevent wrong-network transfers.