1. Why doesn't any public key contain "zero" ?
Bitcoin addresses
are encoded in a way which makes it easier for a human to read them. Zero could be mistaken for 'o'. The public key itself can contain zero.
Bitcoin addresses are implemented using the Base58Check encoding of the hash of either:
Pay-to-pubkey-hash (p2pkh): payload is RIPEMD160(SHA256(ECDSA_publicKey)) where ECDSA_publicKey is a public key the wallet knows the private key for
Here's an example of an ECDSA publicKey -
0250863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b23522. As far as I know there is no difference between uppercase and lowercase letters when we make a transaction.
There is a difference. Only native SegWit addresses (the ones starting with bc1) are not case sensitive. They are encoded
in a different way.