为什么存储在合约中的地址会变成小写?

Why do addresses get lowercased when stored in contracts?

我问这个,因为我不确定这是错误还是正常行为。这是一个简单的合同。

   pragma solidity ^0.4.0;
    contract Contract {
        address public someAddress;
        function storeAddress(address someAddress_){
            someAddress = someAddress_;
        }
    }

存储 vs 获取:

0x203D17B4a1725E001426b7Ab3193E6657b0dBcc6 0x203d17b4a1725e001426b7ab3193e6657b0dbcc6

如果 EVM 只理解小写地址,那么为什么有些服务会生成混合大小写的地址?

大写只是意味着地址有 checksum.Both 会很好。
详见Is Ethereum wallet address case sensitive? and How can I check if an Ethereum address is valid?