38

I sent some amount of ETH to a wallet. I checked the wallets balance on ether chain. I entered the address in the search field and noticed both lowercase and uppercase versions of the address seemed to work.

I wanted to buy a few bucks more, but now I'm not sure if there is something wrong with the address I created. I'd be grateful for some guidance.

30

Capitalization simply means the address has a checksum. You should use the capitalization address because of this, but both will work.

  • 1
    @user1035 if you are satisfied with this answer please mark it as accepted by clicking on the check mark next to it. – Joris Bontje Mar 19 '16 at 6:01
  • 1
    To verify, any addresses that's fully capitalized can be converted to an checksum address with right capitalization. So in that sense addresses are case insensitive - both addresses are the same. Unlike for example the unix/linux file system where you can have a file named 'Ethereum' and one named 'ethereum' in the same directory. Isn't that right? – Gerbrand Sep 8 '16 at 12:23
  • 3
    @JorisBontje I think this answer could still be clarified. Changing the letters to upper case doesn't give the address a checksum. – Peter Hall Jun 21 '17 at 13:27
  • 4
    what does capitalization address mean exactly? this answer is a bit ambiguous – knocte Jun 29 '17 at 7:22
30

I'm bringing the content of an answer from the Ethereum forum here:

Ethereum wallet addresses are in hex [0-9A-F]*. While the address itself is case-insensitive (A is the same as a to the network), the case sensitivity is used as a (optional) checksum. It was built as an after-thought to an addressing scheme that lacked basic checksum validation.

https://github.com/ethereum/EIPs/issues/55#issuecomment-187159063

The checksum works like so:

  1. lowercase address and remove 0x prefix
  2. sha3 hash result from #1
  3. change nth letter of address according to the nth letter of the hash:

    • 0,1,2,3,4,5,6,7 → Lowercase
    • 8, 9, a, b, c, d, e, f → Uppercase

So, you sha3 hash the address, and look at each Nth character of the sha result. If it's 7 or below, the Nth character in the address is lowercase. If it is 8 or above, that character is uppercase.

  • 3
    And the purpose of a checksum is to help make sure you typed in the address correctly. If there was no case-sensitivity check you could accidentally type "a" instead of "b" and send it to the wrong address. But if you accidentally type "a" instead of "B" (there's a 50% chance the letter was supposed to be capitalized), then you wallet software / exchange would throw an error – nick carraway Feb 12 at 18:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.