Mastering Bitcoin by Andreas Antonopoulos

Category: Economics
Author: Andreas M. Antonopoulos
4.0
This Month Reddit 3

About This Book

Want to join the technological revolution that’s taking the world of finance by storm? Mastering Bitcoin is your guide through the seemingly complex world of bitcoin, providing the requisite knowledge to help you participate in the internet of money. Whether you’re building the next killer app, investing in a startup, or simply curious about the technology, this practical book is essential reading.

Bitcoin, the first successful decentralized digital currency, is still in its infancy and it’s already spawned a multi-billion dollar global economy. This economy is open to anyone with the knowledge and passion to participate. Mastering Bitcoin provides you with the knowledge you need (passion not included).

This book includes:

  • A broad introduction to bitcoin—ideal for non-technical users, investors, and business executives
  • An explanation of the technical foundations of bitcoin and cryptographic currencies for developers, engineers, and software and systems architects
  • Details of the bitcoin decentralized network, peer-to-peer architecture, transaction lifecycle, and security principles
  • Offshoots of the bitcoin and blockchain inventions, including alternative chains, currencies, and applications
  • User stories, analogies, examples, and code snippets illustrating key technical concepts

Comments

by dalebewan   2019-07-21

>In Trezor, is there anyway that we can say Firmware loaded is what is available in public?

I don't own a Trezor, but from what I understand and have read/seen about it, the system shows a checksum of the firmware after installing it. You can compare that with the checksum of the firmware you've got the source for and see if it matches.

However: This means there is a different part of the firmware responsible for showing the checksum. From a quick google search, it seems this is hardcoded on the device and is not editable. Therefore, if someone in the manufacturing line wanted to do so, they could in theory swap that part of the firmware out for one that shows the checksum you want to see rather than the one that it really generates.

That said, the logic for doing so is actually really complicated, so it wouldn't be an easy hack, even in the manufacturing line (and might not even be possible at all without adding a lot of cost to the device at the hacker's expense by upgrading the hardware capabilities!).

I'd say that Trezor's security model is therefore technically better than Ledger's in my personal evaluation. However, also in my evaluation both are "safe enough" for trusting with significant amounts of my money and are close enough to equivalent that I wouldn't consider either to be "taking a bigger risk" over the other. They're both secure within reason.

If I were a business dealing in huge amounts of money (like an exchange or similar), I probably wouldn't trust it, instead using purely offline generated private keys and manual processes involving multisig from a number of individuals that are additionally incentivised through other means not to conspire to commit theft. That's a whole different ballgame than just securing your own money though.

Depending on your use case, it could make sense to do a simpler version of something "truly" offline though. For example, if you want to just generate a private key, send some funds to it from time to time and never withdraw for a very long time (perhaps years); then something like the following wouldn't be totally out of the question:

  1. A coin-flip generated private key
  2. Pocket-calculator and paper generated public key
  3. A long enough list of addresses generated from that public key that you don't need to re-use them (optional, but better)

The necessary mathematical/cryptographic functions to do all of this without ever touching a computer are described in chapter 4 of Mastering Bitcoin by Andreas Antonopoulos. You can also get a physical copy if you prefer.

You also might want to consider generating it as a hierarchical deterministic (HD) wallet instead, in which case you don't just have a single private/public keypair, but instead generate multiple from the single "parent" key you made with the coin flips. Details are in BIP32.

If you do any of the above manual generation though (with or without things like BIP32), be sure to do it at least twice. Each time before the last time being with a very small amount of money sent to a few different addresses from the list you made and then try actually retrieving it all by using the private key to sign a transaction sending that bitcoin somewhere else. Once you're totally comfortable you'll be able to do this, you can store a larger amount of money and just not make any outgoing transactions.

You're going to one day want to do an outgoing transaction, which means you'll one day need access to the private key again. The list of addresses can be kept as public as you like (although "too public" defeats the point in having multiple, since they help avoid anyone associating them as all being you). The private key that you generated on the other hand should be stored somewhere very safe (possibly multiple copies). What this means for you is probably more of a personal choice than anything. For example, if you bury it in your back yard, it doesn't help much if your country gets involved in a war, bombs are dropping and you need to evacuate fast or even just the more mundane case of your landscaper (hey, you got rich and decided to spend a bit) coming across it while planting/removing/moving a tree. Or maybe if you keep it in a bank vault on the other side of the world, it'll be very safe from almost everyone... except the bankers and governments who can force them to open the vault. Doing both of these things means your chances of losing your private key gets close to zero (back-yard and foreign bank vault loss at the same time seems pretty unlikely) but it also means the chance of someone else accessing it is even higher.

You could also manually convert your private key(s) to a list of words (see BIP39) to reduce the chance of accidentally writing something down incorrectly since words are usually easier to spot mistakes in than long strings of digits or other characters.

There are companies that sell metal stamping kits specifically for backing up seed phrases (lists of words), avoiding risks of fire or other disasters destroying paper copies but generally any metal stamping kit would do the trick if you pay attention to things like the melting point of the metal, corrosion potential, and so on.

One thing you do not want to do is try to "roll your own security": adding extra things like your own special way of coding things further, or splitting the key up, or whatever else. This greatly increases the chance of total loss and also can in many cases reduce the security significantly (splitting the private key up in to two pieces for example actually just means you've now got two places that someone could access it and it's far less work for them to crack with half a key than with no key at all; so the total security is generally considered much lower than not splitting it up).

(okay, this answer grew WAY longer than I was planning... I just kind of went off on a tangent... but I hope it was at least interesting even if everything after the fourth paragraph didn't really have all that much to do with your original question)

by time_wasted504   2019-07-21

> does this not slow down the network?

no. IF youre running a full node, it has all the UTXOs in a database, with a record of which ones changed each block and references that to see if your keys are unspent.

IF youre using a mobile/desktop wallet that doesnt hold the ledger, the wallet is referencing some other copy of the blockchain.

Dont think of it as data written to a HDD as we are used to. It doesnt need to be sequential. It seems youre really interested in the detailed "how" BTC works. I suggest you subscribe to the dev mailing list and start reading further. Books like Mastering Bitcoin by Andreas Antonopoulos https://github.com/bitcoinbook/bitcoinbook OR if you want a hard copy https://www.amazon.com/Mastering-Bitcoin-Programming-Open-Blockchain/dp/1491954388 would be a good start.

by pp0787   2018-11-10

I have heard this book is good - https://toptalkedbooks.com/amzn/1491954388

by tawhidkhn63   2018-11-10

thank you but I heard that book is mostly about why we need bitcoin and basically hypes it up. I as thinking of more along the lines of what is a btc lol. Would this be good?:

https://toptalkedbooks.com/amzn/1491954388