I recently upgraded Mist from 0.3.9 to 0.5.0. I have noticed that the capitalisation of some of the characters in my public address have changed. Is this normal?
A basic backward compatible address check-sum mechanism was introduced into Mist (https://github.com/ethereum/mist/pull/201), whereby based on the address itself, some of the characters are capitalized while others are not.
If all the characters are uppercase or lowercase, Mist assumes that it's a non check-summed address for backward compatibility. On the other hand if some are upper case and some are lowercase, then Mist verifies the capitalization against how itself would capitalize that address. If they match, the address is considered valid.
More info on this reddit post: https://www.reddit.com/r/ethereum/comments/470s3q/vitalik_made_a_very_clever_backwards_compatible/
I don't think it actually matters. The capitalization is meant for the purpose of optional checksum. The Checksum mechanism is encoded in the address variation that consists capitalization. It is impossible to check the validity of a particular address if it only contains letters in lowercase. However, either variation will work fine as an address. As a matter of fact, you could even randomly capitalize or lower-case the letters and it will still work just fine! ( But don’t capitalize the prefix “0x”)
In case you are interested, this is how the checksum works:
Start with the lowercase address and the prefix 0x is removed. sha3 hash the string of letters change the capitalization of the address letter corresponding to the nth letter of the hash following the rule below 0/1/2/3/4/5/6/7 → Lowercase 8/9/a/b/c/d/e/f → Uppercase
Basically, you sha3 hash your original address with 0x removed, and examine each Nth character of the sha3 hash result. If the Nth character is from 0-7, the corresponding Nth character in your address is in lowercase. On the other hand, if the Nth character is from 8-9 or a-f, the corresponding Nth character in your address is in uppercase.