# How the extended key in wallet is 512 bits?

For extended private key it is 512 bits but for extended public key how it is 512? It will be 264+256 right? And why in the book mastering bitcoin they said extended key is either 512 bits or 513 bits

• Why do you think the extended pubkey is 512 bits?
– Ava Chow
Commented Jul 2, 2022 at 14:44
• it's mentioned in the book mastering bitcoin Commented Jul 2, 2022 at 14:49

Recommend reading BIP-0032, and specifically serialization format.

The private key is a scalar value of 32 bytes (256 bits).

The public key is a point on the elliptic curve, a point is an XY value. This is called an uncompressed public key. It is prefixed with `0x04`. An uncompressed public key is 65 bytes.

For efficiency we simply represent the public key as an X value since the Y value can be derived easily. This is called a compressed public key. However for any X value there could be two Y values, as such we need to store a value to represent the sign of Y (or evenness). For even Y value we prefix `0x02`, for odd Y value we prefix `0x03`. A compressed public key is 33 bytes (see Chapter 4 in Mastering Bitcoin).

For HD, we have a private HD key and a public HD key. The serialization format from BIP-32 is as follows.

• 4 byte: version bytes (mainnet: 0x0488B21E public, 0x0488ADE4 private; testnet: 0x043587CF public, 0x04358394 private)
• 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 derived keys, ....
• 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
• 4 bytes: child number. This is ser32(i) for i in xi = xpar/i, with xi the key being serialized. (0x00000000 if master key)
• 32 bytes: the chain code
• 33 bytes: the public key or private key data (serP(K) for public keys, 0x00 || ser256(k) for private keys)

Typically the important part (for recovery purposes and generating other keys) is the chain code (32 bytes = 256 bits) and the public / private key (33 bytes).

The book says 512 or 513 bits because the extended private key is `256 chain code bits || 256 private key bits` (512), and the extended public key is `256 chain code bits || 1 evenness bit || 256 public key bits` (513).

Since computers storage works in bytes, the 1 bit for evenness is represented as a whole byte.

• But the wallet uses compressed public key which is 264bits? Commented Jul 9, 2022 at 14:32
• @athul 8 bits for evenness + 256 Y coordinate bits = 264 compressed public key bits. Commented Jul 9, 2022 at 21:17