There's a gap in my understanding regarding the generation, via hashing, of bitcoin addresses. (I'm quoting from Antonoplous below for convenience, but I have consulted multiple other sources.)
According to Antonpolous:
"The bitcoin address is derived from the public key through the use of one-way cryptographic hashing. (Antonpolous, 2014:71)"
My understanding of public keys is that they do not change once generated from a private key (via ECDSA multiplication):
"Because the generator point is always the same for all bitcoin users, a private key k multiplied with G will always result in the same public key K.(Antonpolous, 2014:68)"
Best practice regarding bitcoin addresses recommends that:
"a unique address should be used for each transaction. Most Bitcoin software and websites will help with this by generating a brand new address each time you create an invoice or payment request. (Antonpolous, 2014:188)"
I understand that performing a hash function on the same data will always produce the same result (digest):
"For any specific input, the resulting hash will always be the same and can be easily calculated and verified by anyone implementing the same hash algorithm." (Antonpolous, 2014:188).
Given all of the above, my question is, how can different addresses be generated from the same, unchanging input, namely the public key?
Is it the double-hashing (SHA256 + RIPEMD160)? Is it the address pool? Is it due to deterministic wallets? The answer is probably simple and staring me in the face, but I can't see it. Thanks for any clarification.