1

As I understand, since bitcoin 0.6.x, compressed and uncompressed public keys are supported. And the process from the public key to the address has the step that puts a byte in front of the public key before hashing, like:

0x04<256bit x><256bit y> = buffer before hashing the uncompressed public key

or

[0x02|0x03]<256bit x> = buffer before hashing the compressed public key

That implies that the buffer before the hashing is either 33bytes long or 65 bytes long.

My question: pre-0.6, all the way back to the first public version of bitcoin, is the buffer pre-hashing always 65 bytes long, since compressed keys were not supported? Or was it 64 bytes long (just <256bit x><256bit y>) and there was no byte for the version prepended before hashing?

If it was just the 64bytes of the public key on clients pre-0.6, that means that for the same public key, if I ran that public key through the code path of both pre-0.6 bitcoin client and current bitcoin client (uncompressed fomat), the final bitcoin address would still be different, since the modern client would prepend the version byte?

2

is the buffer pre-hashing always 65 bytes long,

yes

since compressed keys were not supported?

they were not used by anybody. but there were no changes in client to "implement/support" them

Or was it 64 bytes long (just <256bit x><256bit y>) and there was no byte for the version prepended before hashing?

no. the client was written with openSSL library. This library always appends prefix to public key bytes (this is standard encoding defined somewhere)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.