1
0
mirror of https://github.com/bitcoinbook/bitcoinbook synced 2024-11-16 04:59:35 +00:00
Mastering Bitcoin by Andreas M. Antonopoulos
Go to file
David A. Harding d9f6cf53c7 CH12-14: edits for Murchandamus feedback
- Describe topological order to help readers understand how that solves
  the double spend problem

- Mention that transactions can be safely relayed one block before their
  locktime allows them to be included in a block because they'll be
  valid next block.

- Be a bit clearer about when subsidy becomes zero due to rounding and
  when BIP42 makes it zero unconditionally.

- Describe the creation of the witness merkle root before the block
  header merkle root

- Move up note about the retarget off-by-one bug

- Make "best blockchain" an inherent property and not an alias for a
  current chain.  When a new block arrives that triggers a reorg, we
  don't switch best blockchains---the new chain is the best blockchain
  and we switch to using it.

- Combine two sections about forks that were repetitive

- Mention that pool miners also need to prove they paid the pool's
  preferred coinbase transaction template

- Add a todo to clarify terminology around the 51% attack.  The existing
  text used this in a way that's consistent with how it was used in
  early Bitcoin history, but it's potentially confusing because it
  doesn't actually require a majority of hashrate to make the attack and
  it confuses it with a censorship attack that does require a majority
  (or at least a selfishing mining minority) to maintain.

- Reduce the situations we describe as "double spends". Consensus
  prevents double spending within a valid chain; the other situations
  are about unconfirmed transactions, which might better be described
  using other terms that won't confuse readers into thinking Bitcoin's
  double spend protection doesn't work.

- Add warning about backing up more than your seed when multisig or
  complex contracts are in use.

- Add a todo to fix "millibits" situation, which might involve image
  changes.

- Note that the first commitment transaction (the refund) needs to be
  signed before the funding transaction in LN channels.

- Pluralize "bitcoin" as necessary (somehow missed this before).

- Drop mention of tumblebit and teechan, which nobody is working on
  AFAIK.
2023-08-06 21:45:37 -10:00
chapters CH12-14: edits for Murchandamus feedback 2023-08-06 21:45:37 -10:00
code CH11-12: remove long & not-very-useful example code 2023-08-02 10:06:45 -10:00
images Images: scale down send/receive 2023-08-01 07:13:05 -10:00
meta Preface: list changes since the previous edition 2023-08-02 12:39:48 -10:00
snippets Move getrawtx example to snippet for reuse 2023-03-05 11:05:36 -10:00
theme Edited theme/epub/layout.html with Atlas code editor 2023-02-22 10:34:29 -08:00
tools All: remove references to blockchain.info 2023-08-02 10:06:45 -10:00
.gitignore Revert CC-BY-SA material added since the second edition 2023-02-01 06:31:10 -10:00
.travis.yml Update .travis.yml 2017-11-18 08:02:35 +01:00
appdx-bips.asciidoc All: mostly replace "SPV client" with "lightweight client" 2023-08-06 21:08:04 -10:00
appdx-bitcoinwhitepaper.asciidoc Revert accidental s/=/==/ in the Bitcoin Whitepaper appendix. 2023-08-01 06:44:36 -10:00
appdx-bx.asciidoc [Housekeeping] Normalize BIP references 2023-08-01 06:44:36 -10:00
appdx-pycoin.asciidoc All: remove references to blockchain.info 2023-08-02 10:06:45 -10:00
atlas.json Updated atlas.json 2023-08-01 21:14:42 +00:00
author_bio.html Edited author_bio.html with Atlas code editor 2023-05-18 05:29:50 -07:00
book.asciidoc Appendixes: add whitepaper errata 2023-08-01 11:13:43 -10:00
ch01.asciidoc All: mostly replace "SPV client" with "lightweight client" 2023-08-06 21:08:04 -10:00
ch02.asciidoc All: mostly replace "SPV client" with "lightweight client" 2023-08-06 21:08:04 -10:00
ch03.asciidoc All: edits for Roasbeef feedback 2023-08-06 21:08:04 -10:00
ch04.asciidoc CH03-04: edits for Murchandamus feedback 2023-08-01 07:13:47 -10:00
ch05.asciidoc All: edits for Roasbeef feedback 2023-08-06 21:08:04 -10:00
ch08.asciidoc All: mostly replace "SPV client" with "lightweight client" 2023-08-06 21:08:04 -10:00
ch09.asciidoc All: mostly replace "SPV client" with "lightweight client" 2023-08-06 21:08:04 -10:00
ch10.asciidoc CH12-14: edits for Murchandamus feedback 2023-08-06 21:45:37 -10:00
ch11.asciidoc CH12-14: edits for Murchandamus feedback 2023-08-06 21:45:37 -10:00
ch12.asciidoc CH12-14: edits for Murchandamus feedback 2023-08-06 21:45:37 -10:00
colo.html Revert CC-BY-SA material added since the second edition 2023-02-01 06:31:10 -10:00
copyright.html Edited copyright.html with Atlas code editor 2023-02-22 10:35:06 -08:00
cover.html Edited cover.html with Atlas code editor 2023-02-16 09:30:25 -08:00
dedication.html Dedication: update for 3rd ed 2023-08-06 21:08:04 -10:00
glossary.asciidoc All: mostly replace "SPV client" with "lightweight client" 2023-08-06 21:08:04 -10:00
ix.html
LICENSE
mast.asciidoc
praise.html bitcoin/Bitcoin capitalization changed everywhere 2021-10-25 23:51:17 +02:00
preface.asciidoc Preface: list changes since the previous edition 2023-08-02 12:39:48 -10:00
README.md Revert CC-BY-SA material added since the second edition 2023-02-01 06:31:10 -10:00
second_edition_changes.asciidoc All: update to comply with current draft of bip-bikeshed 2023-08-01 06:44:36 -10:00
tapscript.asciidoc bips links 2022-06-26 15:22:09 +02:00
titlepage.html Edited titlepage.html with Atlas code editor 2023-02-13 12:57:13 -08:00
toc.html Edited toc.html with Atlas code editor 2016-06-21 05:53:09 -07:00

Code Examples: travis_ci

Mastering Bitcoin

Mastering Bitcoin is a book for developers, although the first two chapters cover bitcoin at a level that is also approachable to non-programmers. Anyone with a basic understanding of technology can read the first two chapters to get a great understanding of bitcoin.

This repository contains the complete first edition, second print, published in December 2014, and the complete second edition, second print, published in July 2017, as published by O'Reilly Media in paperback and ebook formats.

Issues, Errors, Comments, Contributions

If you know how to make a pull request to contribute a fix, please write the correction and use a pull request to submit it for consideration against the develop branch. If you are making several changes, please use a separate commit for each to make it easier to cherry-pick or resolve conflicts. Otherwise, please submit an issue, explaining the error or comment. If you would like to contribute extensive changes or new material, please coordinate with the author first; contact information can be found on his web site: https://antonopoulos.com/

Reading this book (Where is the PDF?)

To read this book, see book.asciidoc. Click on each of the chapters to read in your browser. This is not as convenient as reading a PDF or an ebook on your e-reader, for which there is a cost (see below).

The 2nd edition of "Mastering Bitcoin" is available under a CC-BY-NC-ND license, not a CC-BY-SA license.

It is deliberately not available as a PDF. Why? Because a PDF is a "derivative" product, which is what the ND prohibits. That's because the publisher (O'Reilly Media) is a for-profit publisher who puts considerable resources behind distributing the book. The book will eventually (within a year of publication) be released under a CC-BY-SA license, at which point the PDF format and translations will be allowed. Until then, making PDF copies violates the license and interferes with the publisher's (and the author's) ability to make a living. Furthermore, if you make it so the publisher can't recoup their investment, they will delay the release into CC-BY-SA.

Please don't create or distribute PDFs until the license is changed to CC-BY-SA. It is rare for a publisher to even agree to a CC-BY-NC-ND license. Don't make it harder for free culture by violating even that, already generous, license.

Published

"Mastering Bitcoin (Second Edition, Second Print): Programming the Open Blockchain" is now available in paperback and ebook formats by many book sellers worldwide:

Mastering Bitcoin (First Edition Second Print) is also published in Japanese, Korean, and Chinese (Simplified) by publishers in the respective countries.

Mastering Bitcoin (Open Edition), based on the First Edition, has been translated by volunteers into more than a dozen languages. Translations are available for free under CC-BY-SA license at: https://bitcoinbook.info

Source

The book's source code, found in this repository, is kept synchronized with the print and ebook editions.

Mastering Bitcoin - First Edition

The tags Edition1Print1, Edition1Print2 correspond to the two existing prints of Mastering Bitcoin (First Edition) as published by O'Reilly Media.

Creative Commons License
Mastering Bitcoin - First Edition by Andreas M. Antonopoulos LLC is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

This "Free Culture" compliant license was approved by my publisher O'Reilly Media (http://oreilly.com), who understands the value of open source. O'Reilly Media is not just the world's best publisher of technical books, but is also a strong supporter of this open culture and the sharing of knowledge.

Thank you O'Reilly Media!

Mastering Bitcoin - Second Edition

The tags, second_edition_print_1 and second_edition_print2, correspond to the first (June 8th 2017) and second (July 20th 2017) print of Mastering Bitcoin (Second Edition), as published by O'Reilly Media.

Creative Commons License
Mastering Bitcoin - Second Edition by Andreas M. Antonopoulos LLC is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

It is expected that the second edition will be released under a CC-BY-SA license within a year of publication.

Translations

If you are interested in translating this book, please join our team of volunteers at: https://www.transifex.com/bitcoinbook/mastering-bitcoin/

Free copies of "Mastering Bitcoin Open Edition," translated in many languages, can be downloaded from: https://bitcoinbook.info