Address – Did the uncompressed public key use the ’04’ prefix before the compressed public key was used?
Did uncompressed keys always use the 04 prefix, even before compressed keys (which used 02, 03) came into use?
yes.
Has Bitcoin gone through an update to add these prefixes to various key types?
Bitcoin wallet software has been updated to use these compressed keys. Since OpenSSL (at the time) accepted both compressed and uncompressed public keys, there were no changes to the required consensus rules/implementation. In fact, there is a third type who were (and still are!) supporters. hybrid Keys using prefixes 06
or 07
(according to even/odd T coordinates), 32 bytes and 32 bytes Y coordinate. I don’t understand the motivation behind having that type, but it works.
So these prefixes are included in the hash used to generate the address, so have addresses using uncompressed keys “changed” when compressed keys are introduced?
yes. However, since the sender only sees the 160-bit public key hash, only the recipient cares about the distinction. At consumption time, the recipient must reveal its entire public key, and its hash must match the sent public key hash.
If you have a very old Bitcoin Core wallet.dat file that has never been updated and you load it into the latest Bitcoin Core 27.0 software, you can still go back to the previous version since it uses the uncompressed public key to generate the P2PKH address. Previous version. However, this feature will not continue to work as legacy wallet support is scheduled to be removed from Bitcoin Core. You can still use these older files, but you must first convert them to a newer format.
Additionally, since the introduction of compressed public keys, there has actually been a new address type (with Applicable consensus changes): P2SH, segwit, and taproot.