1
0
mirror of https://github.com/bitcoinbook/bitcoinbook synced 2024-11-21 23:58:09 +00:00

OTD initial edits

This commit is contained in:
Clare Laylock 2023-11-02 16:15:15 -04:00
parent c283a09026
commit 4175b9cc9d
15 changed files with 43 additions and 31 deletions

View File

@ -3,11 +3,11 @@
<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> <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>
<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 worlds 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> <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 worlds 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>
<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> <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>
<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 Lets Talk Bitcoin podcast, and a frequent speaker at technology and security conferences worldwide.</p> <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>Lets Talk Bitcoin</em> podcast, and a frequent speaker at technology and security conferences worldwide.</p>
<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'>(20182023),</span> 21.co Bitcoin Computer tutorials (20152017), and Bitcoin.org developer documentation (20142015). He is also a Brink.dev grant committee member (20222023) and former board member (20202022).</p> <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'>(20182023),</span> <em>21.co Bitcoin Computer</em> tutorials (20152017), and Bitcoin.org developer documentation (20142015). He is also a Brink.dev grant committee member (20222023) and former board member (20202022).</p>
</section> </section>

View File

@ -7,7 +7,7 @@ Bitcoin((("Bitcoin", "operational overview", id="bitcoin-operational-overview"))
[TIP] [TIP]
==== ====
In this book, the ((("bitcoins", "defined")))unit of currency is called "bitcoin" with a small _b_, In this book, the ((("bitcoins", "defined")))unit of currency is called "bitcoin" with a small _b_,
and the system is called "Bitcoin", with a capital _B_. and the system is called "Bitcoin," with a capital _B_.
==== ====
Users can transfer bitcoin over the network to do just about anything 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
Bitcoin was((("Bitcoin", "history of")))((("history", "of Bitcoin", secondary-sortas="Bitcoin")))((("Nakamoto, Satoshi"))) first described in 2008 with the publication of a Bitcoin was((("Bitcoin", "history of")))((("history", "of Bitcoin", secondary-sortas="Bitcoin")))((("Nakamoto, Satoshi"))) first described in 2008 with the publication of a
paper titled "Bitcoin: A Peer-to-Peer Electronic Cash paper titled "Bitcoin: A Peer-to-Peer Electronic Cash
System,"footnote:[https://oreil.ly/KUaBM["Bitcoin: A Peer-to-Peer Electronic Cash System"], System,"footnote:[https://oreil.ly/KUaBM["Bitcoin: A Peer-to-Peer Electronic Cash System"],
Satoshi Nakamoto.] written under the Satoshi Nakamoto (see <<appendix>>).] written under the
alias of Satoshi Nakamoto (see <<satoshi_whitepaper>>). Nakamoto alias of Satoshi Nakamoto (see <<satoshi_whitepaper>>). Nakamoto
combined several prior inventions such as digital signatures and Hashcash to create combined several prior inventions such as digital signatures and Hashcash to create
a completely decentralized electronic cash system that does not rely on a completely decentralized electronic cash system that does not rely on

View File

@ -35,7 +35,7 @@ relationships and flows between them.
</p> </p>
++++ ++++
Popular blockchain explorers include: Popular blockchain explorers include the following:
* https://blockstream.info[Blockstream Explorer] * https://blockstream.info[Blockstream Explorer]
* https://mempool.space[Mempool.Space] * https://mempool.space[Mempool.Space]
@ -101,11 +101,6 @@ description to the user. You can scan the QR code with a bitcoin wallet
application to see what Alice would see: application to see what Alice would see:
[TIP]
====
Try to scan this with your wallet to see
the address and amount but DO NOT SEND MONEY.
====
[[invoice-URI]] [[invoice-URI]]
.The invoice QR code encodes the following URI, defined in BIP21: .The invoice QR code encodes the following URI, defined in BIP21:
---- ----
@ -121,6 +116,12 @@ A label for the recipient address: "Bob's Store"
A description for the payment: "Purchase at Bob's Store" A description for the payment: "Purchase at Bob's Store"
---- ----
[TIP]
====
Try to scan this with your wallet to see
the address and amount but DO NOT SEND MONEY.
====
Alice uses her smartphone to scan the barcode on display. Her smartphone Alice uses her smartphone to scan the barcode on display. Her smartphone
shows a payment for the correct amount to +Bob's Store+ and she selects Send to shows a payment for the correct amount to +Bob's Store+ and she selects Send to
authorize the payment. Within a few seconds (about the same amount of authorize the payment. Within a few seconds (about the same amount of

View File

@ -881,13 +881,13 @@ was simply that the input script needed to provide an appropriate
signature. In <<addresses_for_p2pkh>>, an appropriate public key also needed to be signature. In <<addresses_for_p2pkh>>, an appropriate public key also needed to be
provided. provided.
In order for a spender (like Alice) to place the constraints Bob wants For a spender (like Alice) to place the constraints Bob wants
in the output script she uses to pay him, Bob needs to communicate those in the output script she uses to pay him, Bob needs to communicate those
constraints to her. This is similar to the problem of Bob needing to constraints to her. This is similar to the problem of Bob needing to
communicate his public key to her. Like that problem, where communicate his public key to her. Like that problem, where
public keys can be fairly large, the constraints Bob uses can also be public keys can be fairly large, the constraints Bob uses can also be
quite large--potentially thousands of bytes. That's not only thousands quite large--potentially thousands of bytes. That's not only thousands
of bytes which need to be communicated to Alice, but thousands of bytes of bytes that need to be communicated to Alice, but thousands of bytes
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 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
small commitments to large amounts of data also applies here. small commitments to large amounts of data also applies here.
@ -1078,7 +1078,7 @@ bech32 (pronounced with a soft "ch", as in "besh thirty-two"). The
"bech" stands for BCH, the initials of the three individuals who "bech" stands for BCH, the initials of the three individuals who
discovered the cyclic code in 1959 and 1960 upon which bech32 is based. discovered the cyclic code in 1959 and 1960 upon which bech32 is based.
The "32" stands for the number of characters in the bech32 alphabet The "32" stands for the number of characters in the bech32 alphabet
(similar to the 58 in base58check). (similar to the 58 in base58check):
- Bech32 uses only numbers and a single case of letters (preferably - Bech32 uses only numbers and a single case of letters (preferably
rendered in lowercase). Despite its alphabet being almost half the 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
errors, it can tell the user where those errors occurred, allowing them to errors, it can tell the user where those errors occurred, allowing them to
quickly correct minor transcription mistakes. See <<bech32_typo_detection>> quickly correct minor transcription mistakes. See <<bech32_typo_detection>>
for an example of an address entered with errors. for an example of an address entered with errors.
+
[[bech32_typo_detection]] [[bech32_typo_detection]]
.Bech32 typo detection .Bech32 typo detection
==== ====
@ -1112,7 +1112,7 @@ https://oreil.ly/paWIx[bech32 address decoder demo].
encoding mode that uses less space. Notice the difference in size and encoding mode that uses less space. Notice the difference in size and
complexity of the two QR codes for the same address in complexity of the two QR codes for the same address in
<<bech32_qrcode_uc_lc>>. <<bech32_qrcode_uc_lc>>.
+
[[bech32_qrcode_uc_lc]] [[bech32_qrcode_uc_lc]]
.The same bech32 address QR encoded in lowercase and uppercase. .The same bech32 address QR encoded in lowercase and uppercase.
image::images/mbc3_0409.png["The same bech32 address QR encoded in lowercase and uppercase"] image::images/mbc3_0409.png["The same bech32 address QR encoded in lowercase and uppercase"]

View File

@ -147,7 +147,7 @@ simply adding the same value to both sides of the equation:
[latexmath] [latexmath]
++++ ++++
\begin{equation} \begin{equation}
K + (123 \times G) =\!\!\!= (k + 123) \times G K + (123 \times G) == (k + 123) \times G
\end{equation} \end{equation}
++++ ++++

View File

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

View File

@ -132,6 +132,8 @@ validation.
.Combining input and output scripts to evaluate a transaction script. .Combining input and output scripts to evaluate a transaction script.
image::images/mbc3_0701.png["input_and_output_scripts"] image::images/mbc3_0701.png["input_and_output_scripts"]
[role="less_space pagebreak-before"]
===== The script execution stack ===== The script execution stack
Bitcoin's ((("scripts", "stack", id="script-stack")))((("stack", id="stack")))scripting language is called a stack-based language because it 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:
[[timelock_conflicts]] [[timelock_conflicts]]
.Timelock Conflicts .Timelock Conflicts
[WARNING] ****
====
+OP_CLTV+ and ((("transactions", "timelocks", "conflicts")))((("timelocks", "conflicts")))((("lock time", "conflicts")))((("scripts", "timelocks", "conflicts")))lock time use the same format to describe timelocks, either +OP_CLTV+ and ((("transactions", "timelocks", "conflicts")))((("timelocks", "conflicts")))((("lock time", "conflicts")))((("scripts", "timelocks", "conflicts")))lock time use the same format to describe timelocks, either
a block height or the time elapsed in seconds since the Unix epoch. a block height or the time elapsed in seconds since the Unix epoch.
Critically, when used together, the format of lock time must match 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
input uses the height variety and a different script for a different input uses the height variety and a different script for a different
input uses the time variety, there is no way to construct a valid transaction input uses the time variety, there is no way to construct a valid transaction
that spends both inputs. that spends both inputs.
==== ****
After execution, if +OP_CLTV+ is satisfied, the parameter that After execution, if +OP_CLTV+ is satisfied, the parameter that
preceded it remains as the top item on the stack and may need to be 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
https://oreil.ly/ZuANb[BIP68, https://oreil.ly/ZuANb[BIP68,
Relative Lock-Time Using Consensus-Enforced Sequence Numbers] and Relative Lock-Time Using Consensus-Enforced Sequence Numbers] and
https://oreil.ly/dLA2r[BIP112, https://oreil.ly/dLA2r[BIP112,
+OP_CHECKSEQUENCEVERIFY+]. OP_CHECKSEQUENCEVERIFY].
BIP68 and BIP112 were activated in May 2016 as a soft fork upgrade to BIP68 and BIP112 were activated in May 2016 as a soft fork upgrade to
the consensus rules. the consensus rules.

View File

@ -696,7 +696,7 @@ bit array. If all the bits indexed by the hash functions are set to +1+,
then the pattern is _probably_ recorded in the bloom filter. Because the then the pattern is _probably_ recorded in the bloom filter. Because the
bits may be set because of overlap from multiple patterns, the answer is bits may be set because of overlap from multiple patterns, the answer is
not certain, but is rather probabilistic. In simple terms, a bloom not certain, but is rather probabilistic. In simple terms, a bloom
filter positive match is a "Maybe, Yes." filter positive match is a "Maybe, yes."
<<bloom4>> is an example of testing the existence of pattern "X" in the <<bloom4>> is an example of testing the existence of pattern "X" in the
simple bloom filter. The corresponding bits are set to +1+, so the 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
one of the bits is set to +0+, this proves that the pattern was not one of the bits is set to +0+, this proves that the pattern was not
recorded in the bloom filter. A negative result is not a probability, it recorded in the bloom filter. A negative result is not a probability, it
is a certainty. In simple terms, a negative match on a bloom filter is a is a certainty. In simple terms, a negative match on a bloom filter is a
"Definitely Not!" "Definitely not!"
<<bloom5>> is an example of testing the existence of pattern "Y" in the <<bloom5>> is an example of testing the existence of pattern "Y" in the
simple bloom filter. One of the corresponding bits is set to +0+, so the simple bloom filter. One of the corresponding bits is set to +0+, so the

View File

@ -439,7 +439,7 @@ An extended comment in Bitcoin Core's source code, reproduced here with slight r
significant problem in the design of Bitcoin's duplication of odd significant problem in the design of Bitcoin's duplication of odd
elements in its merkle tree: elements in its merkle tree:
[quote,Bitcoin Core src/consensus/merkle.cpp] [quote,Bitcoin Core _src/consensus/merkle.cpp_]
____ ____
WARNING! If you're reading this because you're learning about crypto WARNING! If you're reading this because you're learning about crypto
and/or designing a new system that will use merkle trees, keep in mind and/or designing a new system that will use merkle trees, keep in mind
@ -746,7 +746,7 @@ $ bitcoin-cli -signet getblockchaininfo
} }
---- ----
==== Regtest&#x2014;The Local Blockchain ==== Regtest: The Local Blockchain
Regtest, ((("blockchain", "test blockchains", "regtest", id="blockchain-test-regtest")))((("test blockchains", "regtest", id="test-block-regtest")))((("regtest", id="regtest")))which stands for Regtest, ((("blockchain", "test blockchains", "regtest", id="blockchain-test-regtest")))((("test blockchains", "regtest", id="test-block-regtest")))((("regtest", id="regtest")))which stands for
"Regression Testing," is a Bitcoin Core feature that allows you to "Regression Testing," is a Bitcoin Core feature that allows you to

View File

@ -750,7 +750,7 @@ this case to vary the output of the SHA256 commitment to the phrase.
To make a challenge out of this algorithm, let's set a target: find a To make a challenge out of this algorithm, let's set a target: find a
phrase that produces a hexadecimal hash that starts with a zero. phrase that produces a hexadecimal hash that starts with a zero.
Fortunately, this isn't difficult, as shown in <<sha256_example_generator_output2>>: Fortunately, this isn't difficult, as shown in <<sha256_example_generator_output2>>.
[[sha256_example_generator_output2]] [[sha256_example_generator_output2]]
.Simple proof-of-work implementation .Simple proof-of-work implementation

View File

@ -190,7 +190,7 @@ spending transaction.
This provides part of the basis for the modern transfer for colored This provides part of the basis for the modern transfer for colored
coins. One or more colored coins are received to a UTXO. When that coins. One or more colored coins are received to a UTXO. When that
UTXO is spent, the spending transaction must describe how the colored UTXO is spent, the spending transaction must describe how the colored
coins are to be spent. That brings us to _pay to contract (P2C)_. coins are to be spent. That brings us to pay to contract (P2C).
[[p2c_for_colored_coins]] [[p2c_for_colored_coins]]
==== Pay to Contract (P2C) ==== Pay to Contract (P2C)

View File

@ -1,7 +1,7 @@
A particular focus in the third edition has been modernizing the 2017 A particular focus in the third edition has been modernizing the 2017
second edition text and the remaining 2014 first edition text. In second edition text and the remaining 2014 first edition text. In
addition, many concepts that are relevant to contempory Bitcoin addition, many concepts that are relevant to contempory Bitcoin
development in 2023 have been added. development in 2023 have been added:
<<ch04_keys_addresses>>:: <<ch04_keys_addresses>>::
We rearranged the address info so that we work through everything in We rearranged the address info so that we work through everything in

View File

@ -61,7 +61,7 @@ All the code snippets use real values and calculations where possible, so that y
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 youre 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 OReilly 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 products documentation does require permission. 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 youre 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 OReilly 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 products documentation does require permission.
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 (OReilly). Copyright 2024, ISBN 978-1-098-15009-9.” 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 (OReilly). Copyright 2024 David Harding, ISBN 978-1-098-15009-9.”
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. 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.

View File

@ -8,3 +8,9 @@ td.fakeheader {
/*--Table lines--*/ /*--Table lines--*/
table td.right, th.right { border-right: 0.25pt solid cmyk(0%,0%,0%,100%); } table td.right, th.right { border-right: 0.25pt solid cmyk(0%,0%,0%,100%); }
/* roman (reverse emphasis) on varlist terms*/
.plain {
font-style: normal;
}

View File

@ -13,4 +13,8 @@
<!-- Drop @width attributes from images if present --> <!-- Drop @width attributes from images if present -->
<xsl:template match="h:img/@width"/> <xsl:template match="h:img/@width"/>
<!-- Drop @alt attribute content from images if present -->
<xsl:template match="h:img/@alt">
<xsl:attribute name="alt"/>
</xsl:template>
</xsl:stylesheet> </xsl:stylesheet>