<p>The original Bitcoin software used OpenSSL for verifying (and creating signatures) as a black box. Whatever OpenSSL accepted was accepted in blocks and transactions.</p>
<p>OpenSSL accepted both compressed and uncompressed public keys, since forever. However the wallet code only used uncompressed ones.</p>
<p>When this was discovered, all that was needed was switching the wallet software to start using compressed keys, which happened in version 0.5. No consensus rule change was needed, as unknowingly, the implicitly defined rules already supported them.</p>

CC BY-SA 4.0
2022-10-10T12:16:15.737Z
2022-10-10T16:12:11.623Z
2022-10-10T16:12:11.623Z
Pieter Wuille
<p>I was wondering when compressed public keys were introduced to bitcoin, then I saw this quote from <a href="https://bitcoin.stackexchange.com/questions/3059/what-is-a-compressed-bitcoin-key">this answer</a>:</p>
<blockquote>
<p>The original Bitcoin software didn't use compressed keys only because their use was poorly documented in OpenSSL.</p>
</blockquote>
<p>I hadn't heard about this before but it would make sense, otherwise introducing compressed public keys would have required a hard fork. Is that correct?</p>

<public-key><signature><ecdsa><openssl>
Were uncompressed public keys always supported by Bitcoin?
Darius
# Were uncompressed public keys always supported by Bitcoin?

(Asked by: username_0 on 2022-10-10)

I was wondering when compressed public keys were introduced to bitcoin, then I saw this quote from [this answer](https://bitcoin.stackexchange.com/questions/3059/what-is-a-compressed-bitcoin-key):

> The original Bitcoin software didn't use compressed keys only because their use was poorly documented in OpenSSL.

I hadn't heard about this before but it would make sense, otherwise introducing compressed public keys would have required a hard fork. Is that correct?

**Tags:** public-key, signature, ecdsa, openssl


---

## 1 answers

### Answer by username_1 on 2022-10-10. Score: 4 | Accepted answer

The original Bitcoin software used OpenSSL for verifying (and creating signatures) as a black box. Whatever OpenSSL accepted was accepted in blocks and transactions.

OpenSSL accepted both compressed and uncompressed public keys, since forever. However the wallet code only used uncompressed ones.

When this was discovered, all that was needed was switching the wallet software to start using compressed keys, which happened in version 0.5. No consensus rule change was needed, as unknowingly, the implicitly defined rules already supported them.


---

