Skip to content

Commit 4175b9c

Browse files
OTD initial edits
1 parent c283a09 commit 4175b9c

15 files changed

+43
-31
lines changed

author_bio.html

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ <h1>About the Authors</h1>
33

44
<p><strong>Andreas M. Antonopoulos</strong> is a noted technologist and serial entrepreneur who has become one of the most well-known and well-respected figures in Bitcoin. As an engaging public speaker, teacher, and writer, Andreas makes complex subjects accessible and easy to understand. As an advisor, he helps startups recognize, evaluate, and navigate security and business risks.</p>
55

6-
<p>Andreas grew up with the internet, starting his first company, an early BBS and proto-ISP, as a teenager in his home in Greece. He earned degrees in computer science, data communications, and distributed systems from University College London (UCL)—recently ranked among the world’s top 10 universities. After moving to the United States, Andreas cofounded and managed a successful technology research company, and in that role advised dozens of Fortune 500 company executives on networking, security, data centers, and cloud computing. More than 200 of his articles on security, cloud computing, and data centers have been published in print and syndicated worldwide. He holds two patents in networking and security.</p>
6+
<p>Andreas grew up with the internet, starting his first company, an early BBS and proto-ISP, as a teenager in his home in Greece. He earned degrees in computer science, data communications, and distributed systems from University College London (UCL)—recently ranked among the world’s top 10 universities. After moving to the United States, Andreas cofounded and managed a successful technology research company, and in that role advised dozens of Fortune 500 company executives on networking, security, data centers, and cloud computing. More than two hundred of his articles on security, cloud computing, and data centers have been published in print and syndicated worldwide. He holds two patents in networking and security.</p>
77

8-
<p>In 1990, Andreas started teaching various IT topics in private, professional, and academic environments. He honed his speaking skills in front of audiences ranging in size from five executives in a boardroom to thousands of people in large conferences. With more than 400 speaking engagements under his belt, he is considered a world-class and charismatic public speaker and teacher. In 2014, he was appointed as a teaching fellow with the University of Nicosia, the first university in the world to offer a masters degree in digital currency. In this role, he helped develop the curriculum and cotaught the Introduction to Digital Currencies course, offered as a massive open online course (MOOC) through the university.</p>
8+
<p>In 1990, Andreas started teaching various IT topics in private, professional, and academic environments. He honed his speaking skills in front of audiences ranging in size from five executives in a boardroom to thousands of people in large conferences. With more than four hundred speaking engagements under his belt, he is considered a world-class and charismatic public speaker and teacher. In 2014, he was appointed as a teaching fellow with the University of Nicosia, the first university in the world to offer a master's degree in digital currency. In this role, he helped develop the curriculum and cotaught the "Introduction to Digital Currencies" course, offered as a massive open online course (MOOC) through the university.</p>
99

10-
<p>As a bitcoin entrepreneur, Andreas has founded a number of Bitcoin businesses and launched several community open source projects. He serves as an advisor to several bitcoin and cryptocurrency companies. He is a widely published author of articles and blog posts on bitcoin, a permanent host on the popular Let’s Talk Bitcoin podcast, and a frequent speaker at technology and security conferences worldwide.</p>
10+
<p>As a Bitcoin entrepreneur, Andreas has founded a number of Bitcoin businesses and launched several community open source projects. He serves as an advisor to several Bitcoin and cryptocurrency companies. He is a widely published author of articles and blog posts on Bitcoin, a permanent host on the popular <em>Let’s Talk Bitcoin</em> podcast, and a frequent speaker at technology and security conferences worldwide.</p>
1111

12-
<p><strong>David A. Harding</strong> is a technical writer focused on creating documentation for open source software. He is the coauthor of the Bitcoin Optech weekly newsletter <span class='keep-together'>(2018–2023),</span> 21.co Bitcoin Computer tutorials (2015–2017), and Bitcoin.org developer documentation (2014–2015). He is also a Brink.dev grant committee member (2022–2023) and former board member (2020–2022).</p>
12+
<p><strong>David A. Harding</strong> is a technical writer focused on creating documentation for open source software. He is the coauthor of the <em>Bitcoin Optech</em> weekly newsletter <span class='keep-together'>(2018–2023),</span> <em>21.co Bitcoin Computer</em> tutorials (2015–2017), and Bitcoin.org developer documentation (2014–2015). He is also a Brink.dev grant committee member (2022–2023) and former board member (2020–2022).</p>
1313
</section>

ch01_intro.adoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Bitcoin((("Bitcoin", "operational overview", id="bitcoin-operational-overview"))
77
[TIP]
88
====
99
In this book, the ((("bitcoins", "defined")))unit of currency is called "bitcoin" with a small _b_,
10-
and the system is called "Bitcoin", with a capital _B_.
10+
and the system is called "Bitcoin," with a capital _B_.
1111
====
1212

1313
Users can transfer bitcoin over the network to do just about anything
@@ -100,7 +100,7 @@ Although these earlier digital currencies worked, they were centralized and, as
100100
Bitcoin was((("Bitcoin", "history of")))((("history", "of Bitcoin", secondary-sortas="Bitcoin")))((("Nakamoto, Satoshi"))) first described in 2008 with the publication of a
101101
paper titled "Bitcoin: A Peer-to-Peer Electronic Cash
102102
System,"footnote:[https://oreil.ly/KUaBM["Bitcoin: A Peer-to-Peer Electronic Cash System"],
103-
Satoshi Nakamoto.] written under the
103+
Satoshi Nakamoto (see <<appendix>>).] written under the
104104
alias of Satoshi Nakamoto (see <<satoshi_whitepaper>>). Nakamoto
105105
combined several prior inventions such as digital signatures and Hashcash to create
106106
a completely decentralized electronic cash system that does not rely on

ch02_overview.adoc

+7-6
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ relationships and flows between them.
3535
</p>
3636
++++
3737

38-
Popular blockchain explorers include:
38+
Popular blockchain explorers include the following:
3939

4040
* https://blockstream.info[Blockstream Explorer]
4141
* https://mempool.space[Mempool.Space]
@@ -101,11 +101,6 @@ description to the user. You can scan the QR code with a bitcoin wallet
101101
application to see what Alice would see:
102102

103103

104-
[TIP]
105-
====
106-
Try to scan this with your wallet to see
107-
the address and amount but DO NOT SEND MONEY.
108-
====
109104
[[invoice-URI]]
110105
.The invoice QR code encodes the following URI, defined in BIP21:
111106
----
@@ -121,6 +116,12 @@ A label for the recipient address: "Bob's Store"
121116
A description for the payment: "Purchase at Bob's Store"
122117
----
123118

119+
[TIP]
120+
====
121+
Try to scan this with your wallet to see
122+
the address and amount but DO NOT SEND MONEY.
123+
====
124+
124125
Alice uses her smartphone to scan the barcode on display. Her smartphone
125126
shows a payment for the correct amount to +Bob's Store+ and she selects Send to
126127
authorize the payment. Within a few seconds (about the same amount of

ch04_keys.adoc

+5-5
Original file line numberDiff line numberDiff line change
@@ -881,13 +881,13 @@ was simply that the input script needed to provide an appropriate
881881
signature. In <<addresses_for_p2pkh>>, an appropriate public key also needed to be
882882
provided.
883883

884-
In order for a spender (like Alice) to place the constraints Bob wants
884+
For a spender (like Alice) to place the constraints Bob wants
885885
in the output script she uses to pay him, Bob needs to communicate those
886886
constraints to her. This is similar to the problem of Bob needing to
887887
communicate his public key to her. Like that problem, where
888888
public keys can be fairly large, the constraints Bob uses can also be
889889
quite large--potentially thousands of bytes. That's not only thousands
890-
of bytes which need to be communicated to Alice, but thousands of bytes
890+
of bytes that need to be communicated to Alice, but thousands of bytes
891891
for which she needs to pay transaction fees every time she wants to spend money to Bob. However, the solution of using hash functions to create
892892
small commitments to large amounts of data also applies here.
893893

@@ -1078,7 +1078,7 @@ bech32 (pronounced with a soft "ch", as in "besh thirty-two"). The
10781078
"bech" stands for BCH, the initials of the three individuals who
10791079
discovered the cyclic code in 1959 and 1960 upon which bech32 is based.
10801080
The "32" stands for the number of characters in the bech32 alphabet
1081-
(similar to the 58 in base58check).
1081+
(similar to the 58 in base58check):
10821082

10831083
- Bech32 uses only numbers and a single case of letters (preferably
10841084
rendered in lowercase). Despite its alphabet being almost half the
@@ -1095,7 +1095,7 @@ The "32" stands for the number of characters in the bech32 alphabet
10951095
errors, it can tell the user where those errors occurred, allowing them to
10961096
quickly correct minor transcription mistakes. See <<bech32_typo_detection>>
10971097
for an example of an address entered with errors.
1098-
1098+
+
10991099
[[bech32_typo_detection]]
11001100
.Bech32 typo detection
11011101
====
@@ -1112,7 +1112,7 @@ https://oreil.ly/paWIx[bech32 address decoder demo].
11121112
encoding mode that uses less space. Notice the difference in size and
11131113
complexity of the two QR codes for the same address in
11141114
<<bech32_qrcode_uc_lc>>.
1115-
1115+
+
11161116
[[bech32_qrcode_uc_lc]]
11171117
.The same bech32 address QR encoded in lowercase and uppercase.
11181118
image::images/mbc3_0409.png["The same bech32 address QR encoded in lowercase and uppercase"]

ch05_wallets.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ simply adding the same value to both sides of the equation:
147147
[latexmath]
148148
++++
149149
\begin{equation}
150-
K + (123 \times G) =\!\!\!= (k + 123) \times G
150+
K + (123 \times G) == (k + 123) \times G
151151
\end{equation}
152152
++++
153153

ch06_transactions.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ for BIPs 37 and 144).
202202
203203
[WARNING]
204204
====
205-
There are several different varieties of variable length integers used
205+
Several varieties of variable length integers are used
206206
in different programs, including in different Bitcoin programs. For
207207
example, Bitcoin Core serializes its UTXO database using a data type it
208208
calls +VarInts+, which is different from compactSize. Additionally, the

ch07_authorization-authentication.adoc

+5-4
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ validation.
132132
.Combining input and output scripts to evaluate a transaction script.
133133
image::images/mbc3_0701.png["input_and_output_scripts"]
134134

135+
136+
[role="less_space pagebreak-before"]
135137
===== The script execution stack
136138

137139
Bitcoin's ((("scripts", "stack", id="script-stack")))((("stack", id="stack")))scripting language is called a stack-based language because it
@@ -844,8 +846,7 @@ halts execution if one of the following occurs:
844846

845847
[[timelock_conflicts]]
846848
.Timelock Conflicts
847-
[WARNING]
848-
====
849+
****
849850
+OP_CLTV+ and ((("transactions", "timelocks", "conflicts")))((("timelocks", "conflicts")))((("lock time", "conflicts")))((("scripts", "timelocks", "conflicts")))lock time use the same format to describe timelocks, either
850851
a block height or the time elapsed in seconds since the Unix epoch.
851852
Critically, when used together, the format of lock time must match
@@ -863,7 +864,7 @@ used in any of the scripts of a transaction. If the script for one
863864
input uses the height variety and a different script for a different
864865
input uses the time variety, there is no way to construct a valid transaction
865866
that spends both inputs.
866-
====
867+
****
867868

868869
After execution, if +OP_CLTV+ is satisfied, the parameter that
869870
preceded it remains as the top item on the stack and may need to be
@@ -918,7 +919,7 @@ implemented according to the specifications in
918919
https://oreil.ly/ZuANb[BIP68,
919920
Relative Lock-Time Using Consensus-Enforced Sequence Numbers] and
920921
https://oreil.ly/dLA2r[BIP112,
921-
+OP_CHECKSEQUENCEVERIFY+].
922+
OP_CHECKSEQUENCEVERIFY].
922923

923924
BIP68 and BIP112 were activated in May 2016 as a soft fork upgrade to
924925
the consensus rules.

ch10_network.adoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,7 @@ bit array. If all the bits indexed by the hash functions are set to +1+,
696696
then the pattern is _probably_ recorded in the bloom filter. Because the
697697
bits may be set because of overlap from multiple patterns, the answer is
698698
not certain, but is rather probabilistic. In simple terms, a bloom
699-
filter positive match is a "Maybe, Yes."
699+
filter positive match is a "Maybe, yes."
700700

701701
<<bloom4>> is an example of testing the existence of pattern "X" in the
702702
simple bloom filter. The corresponding bits are set to +1+, so the
@@ -710,7 +710,7 @@ On the contrary, if a pattern is tested against the bloom filter and any
710710
one of the bits is set to +0+, this proves that the pattern was not
711711
recorded in the bloom filter. A negative result is not a probability, it
712712
is a certainty. In simple terms, a negative match on a bloom filter is a
713-
"Definitely Not!"
713+
"Definitely not!"
714714

715715
<<bloom5>> is an example of testing the existence of pattern "Y" in the
716716
simple bloom filter. One of the corresponding bits is set to +0+, so the

ch11_blockchain.adoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ An extended comment in Bitcoin Core's source code, reproduced here with slight r
439439
significant problem in the design of Bitcoin's duplication of odd
440440
elements in its merkle tree:
441441
442-
[quote,Bitcoin Core src/consensus/merkle.cpp]
442+
[quote,Bitcoin Core _src/consensus/merkle.cpp_]
443443
____
444444
WARNING! If you're reading this because you're learning about crypto
445445
and/or designing a new system that will use merkle trees, keep in mind
@@ -746,7 +746,7 @@ $ bitcoin-cli -signet getblockchaininfo
746746
}
747747
----
748748

749-
==== Regtest&#x2014;The Local Blockchain
749+
==== Regtest: The Local Blockchain
750750

751751
Regtest, ((("blockchain", "test blockchains", "regtest", id="blockchain-test-regtest")))((("test blockchains", "regtest", id="test-block-regtest")))((("regtest", id="regtest")))which stands for
752752
"Regression Testing," is a Bitcoin Core feature that allows you to

ch12_mining.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -750,7 +750,7 @@ this case to vary the output of the SHA256 commitment to the phrase.
750750

751751
To make a challenge out of this algorithm, let's set a target: find a
752752
phrase that produces a hexadecimal hash that starts with a zero.
753-
Fortunately, this isn't difficult, as shown in <<sha256_example_generator_output2>>:
753+
Fortunately, this isn't difficult, as shown in <<sha256_example_generator_output2>>.
754754

755755
[[sha256_example_generator_output2]]
756756
.Simple proof-of-work implementation

ch14_applications.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ spending transaction.
190190
This provides part of the basis for the modern transfer for colored
191191
coins. One or more colored coins are received to a UTXO. When that
192192
UTXO is spent, the spending transaction must describe how the colored
193-
coins are to be spent. That brings us to _pay to contract (P2C)_.
193+
coins are to be spent. That brings us to pay to contract (P2C).
194194

195195
[[p2c_for_colored_coins]]
196196
==== Pay to Contract (P2C)

meta/third_edition_changes.asciidoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
A particular focus in the third edition has been modernizing the 2017
22
second edition text and the remaining 2014 first edition text. In
33
addition, many concepts that are relevant to contempory Bitcoin
4-
development in 2023 have been added.
4+
development in 2023 have been added:
55

66
<<ch04_keys_addresses>>::
77
We rearranged the address info so that we work through everything in

preface.asciidoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ All the code snippets use real values and calculations where possible, so that y
6161

6262
This book is here to help you get your job done. In general, if example code is offered with this book, you may use it in your programs and documentation. You do not need to contact us for permission unless you’re reproducing a significant portion of the code. For example, writing a program that uses several chunks of code from this book does not require permission. Selling or distributing examples from O’Reilly books does require permission. Answering a question by citing this book and quoting example code does not require permission. Incorporating a significant amount of example code from this book into your product’s documentation does require permission.
6363

64-
We appreciate, but do not require, attribution. An attribution usually includes [.keep-together]#the title,# author, publisher, and ISBN. For example: “_Mastering Bitcoin_, 3rd ed., by [.keep-together]#Andreas M.# Antonopoulos and David A. Harding (O’Reilly). Copyright 2024, ISBN 978-1-098-15009-9.”
64+
We appreciate, but do not require, attribution. An attribution usually includes [.keep-together]#the title,# author, publisher, and ISBN. For example: “_Mastering Bitcoin_, 3rd ed., by [.keep-together]#Andreas M.# Antonopoulos and David A. Harding (O’Reilly). Copyright 2024 David Harding, ISBN 978-1-098-15009-9.”
6565

6666
Some editions of this book are offered under an open source license, such as https://oreil.ly/RzUHE[CC-BY-NC], in which case the terms of that license apply.
6767

theme/epub/epub.css

+6
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,9 @@ td.fakeheader {
88

99
/*--Table lines--*/
1010
table td.right, th.right { border-right: 0.25pt solid cmyk(0%,0%,0%,100%); }
11+
12+
13+
/* roman (reverse emphasis) on varlist terms*/
14+
.plain {
15+
font-style: normal;
16+
}

theme/epub/epub.xsl

+4
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,8 @@
1313
<!-- Drop @width attributes from images if present -->
1414
<xsl:template match="h:img/@width"/>
1515

16+
<!-- Drop @alt attribute content from images if present -->
17+
<xsl:template match="h:img/@alt">
18+
<xsl:attribute name="alt"/>
19+
</xsl:template>
1620
</xsl:stylesheet>

0 commit comments

Comments
 (0)