Errata

Mastering Bitcoin

Errata for Mastering Bitcoin

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date submitted
Printed, ePub Page The Extra Nonce Solution
Direct under heading

In "Mastering Bitcoin" (hardcopy 2nd edition 3rd revision) under the heading "The Extra Nonce Solution" you give (me) the impression the extra nonce is used starting in 2012. But Sergio Darmain Lerner sees the extra nonce in 2009 blocks (Patoshi pattern)

Rob G Weemhoff  Oct 01, 2022 
PDF Page 64
2nd paragraph

On Chapter 4, section: "Generating a private key from a random number". Text:

"More accurately, the private key can be any number between 1 and n - 1, where n is a constant (n = 1.158 * 10^77, slightly less than 2^256) defined as the order of the elliptic curve used in bitcoin ..."

According to my calculations and Wolfram Alpha, n = 1.158 * 10^77, the order of the elliptic curve, is not less than 2^256.

See:
https://www.wolframalpha.com/input/?i=1.158+*+10%5E77+%3E+2%5E256

Fernando Pelliccioni  Jun 29, 2016 
Printed Page 89
Middle figure 4-10

Figure 4-10 and the accompanying text says that the root seed of 128, 256, or 512 bits is input into the HMAC-SHA512 algorithm. This is incorrect, the bits are not what is hashed, its the mnemonic sentence of words (the string) that is hashed. BIP-39 specifies that a buffer containing the mnemonic words themselves, separated by spaces, is input into the PBKDF2 HMAC-SHA512 function.

Anonymous  Jan 27, 2022 
Printed Page 140
Bottom two paragraphs

Although book figures are B&W, text states "blue circle" and "orange circle". The chapter may contain similar typos for remaining colors (which should be easy to detect on the source text - but not as easy on the print version).

Anonymous  Dec 02, 2016 
Printed Page 163
3rd paragraph (1st within Block Identifiers: Block Header Hash and Block Height" section)

The text states "The resulting 32-byte hash is called the block hash but is more accurately the block header hash, because only the block header is used to compute it".

Whereas this is true, it misleads the reader to think that the hash does not protect the block content (transactions) - at this point Merkle trees were not yet introduced within the text, and since the Merkle Root summarizes the block content, the hash also encompasses a representation of the block content.

Anonymous  Dec 02, 2016 
Printed Page 178
1st paragraph within the box

"Deflation is the phenomenon of appreciation of value due to [...] that drives up the value (and exchange rate) of a currency".

Unclear because:
- for layman deflation occurs when prices go down (the indirect consequence, which should be explained, is that a unit of deflationary currency will serve to buy more in the future than today)
- the part "mismatch in supply and demand" should be replaced with an indication of what will cause the currency deflation (demand of currency higher or lower than supply?)

Anonymous  Dec 02, 2016 
Printed Page 189
First line

The book states:

"The key characteristic of a cryptographic hash algorithm is that it is virtually impossible to find two different inputs that produce the same fingerprint. As a corollary, it is also virtually impossible to select an input in such a way as to produce a desired fingerprint, other than trying random inputs."

I agree with the first sentence, although I would prefer it be phrased "A key characteristic of...". The second sentence, however, is not true. I will prove this by providing a counterexample.

Say that a 'desired fingerprint' is 'any fingerprint that starts with three zeros'. Now, take the hash function H to be a modified version of SHA256, which is defined as H(x) = x[0:2] || SHA256(x). In other words, H(x) is the SHA256-hash of x, prepended by the first three bytes of x. H is collision-resistant, because SHA256 is collision-resistant. A collision of H is directly a collision of SHA256 as well. However, it is trivial to produce a 'desired fingerprint' by using '000' as input (or any other string that starts with '000').

It is actually not so easy to fix this sentence directly, because the 'property' of SHA256 that is used here is not actually a property of a cryptographic hash function. It is a lucky coincidence that SHA256 appears suitable for this purpose, but I am not aware of any research that supports its use in such a scenario.

Pieter  May 03, 2016