From 8898000a430e17e667abe65259ae412148004634 Mon Sep 17 00:00:00 2001 From: "andreas@antonopoulos.com" Date: Sun, 17 Aug 2014 12:31:20 -0700 Subject: [PATCH 001/102] Updated book.asciidoc --- book.asciidoc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/book.asciidoc b/book.asciidoc index f3973f18..5f71ab85 100644 --- a/book.asciidoc +++ b/book.asciidoc @@ -18,4 +18,6 @@ include::ch06.asciidoc[] include::ch07.asciidoc[] -include::ch08.asciidoc[] \ No newline at end of file +include::ch08.asciidoc[] + +include::ch09.asciidoc[] \ No newline at end of file From 483c5b737348adec54f97f51382db1853f774a69 Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Sun, 17 Aug 2014 15:27:19 -0700 Subject: [PATCH 002/102] Reword the transaction verification checklist per Issue #85 --- ch08.asciidoc | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/ch08.asciidoc b/ch08.asciidoc index 2f53c88c..1729c1fb 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -60,24 +60,24 @@ However, before forwarding transactions to its neighbors, every bitcoin node tha Each node verifies every transaction against a long checklist of criteria: -* Check the syntactic correctness of the transaction's data structure -* Make sure neither lists of inputs or outputs are empty +* The transaction's syntax and data structure must be correct +* Neither lists of inputs or outputs are empty * The transaction size in bytes is less than MAX_BLOCK_SIZE * Each output value, as well as the total, must be within the allowed range of values (less than 21m coins, more than 0) -* Check that none of the inputs have hash=0, N=-1 (coinbase transactions should not be relayed) -* Check that nLockTime is less than or equal to INT_MAX -* Check that the transaction size in bytes is greater than or equal to 100 -* Check that the number of signature operations contained in the transaction is less than the signature operation limit -* Reject "nonstandard" transactions: unlocking script (scriptSig) doing anything other than pushing numbers on the stack, or the locking script (scriptPubkey) not matching isStandard forms -* Check for a matching transaction in the pool, or in a block in the main branch, if so reject this transaction +* None of the inputs have hash=0, N=-1 (coinbase transactions should not be relayed) +* nLockTime is less than or equal to INT_MAX +* The transaction size in bytes is greater than or equal to 100 +* The number of signature operations contained in the transaction is less than the signature operation limit +* Unlocking script (scriptSig) only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions) +* A matching transaction in the pool, or in a block in the main branch, must exist * For each input, if the referenced output exists in any other transaction in the pool, reject this transaction * For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions, if a matching transaction is not already in the pool -* For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations; else reject this transaction -* For each input, if the referenced output does not exist (e.g. never existed or has already been spent), reject this transaction +* For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations +* For each input, the referenced output must exist and cannot already be spent * Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0) * Reject if the sum of input values < sum of output values * Reject if transaction fee would be too low to get into an empty block -* Verify the unlocking scripts for each input against the corresponding output locking scripts +* The unlocking scripts for each input must validate against the corresponding output locking scripts These conditions can be seen in detail in the functions +AcceptToMemoryPool+, +CheckTransaction+, and +CheckInputs+ in the bitcoin reference client. Note that the conditions change over time, to address new types of Denial-of-Service attacks or sometimes to relax the rules so as to include more types of transactions. From c11901122c758a162c7ea19ce88a82b6380e023d Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Sun, 17 Aug 2014 15:33:25 -0700 Subject: [PATCH 003/102] Reword the block verification checklist per Issue #85 --- ch08.asciidoc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ch08.asciidoc b/ch08.asciidoc index 1729c1fb..9158bc79 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -620,14 +620,14 @@ In the next section we'll look at the process each node uses to validate a block The third step in bitcoin's consensus mechanism is independent validation of each new block by every node on the network. As the newly solved block moves across the network, each node performs a series of tests to validate it before propagating it to its peers. This ensures that only valid blocks are propagated on the network. The independent validation also ensures that miners who act honestly get their blocks incorporated in the blockchain, thus earning the reward. Those miners who act dishonestly have their blocks rejected and not only lose the reward but also waste the effort expended to find a Proof-of-Work solution, thus incurring the cost of electricity without compensation. -When a node receives a new block, it will validate the block by checking it against a long list of criteria. These criteria can be seen in the Bitcoin Core client in the functions +CheckBlock+ and +CheckBlockHeader+. These criteria include: +When a node receives a new block, it will validate the block by checking it against a long list of criteria that must all be met; otherwise the block is rejected. These criteria can be seen in the Bitcoin Core client in the functions +CheckBlock+ and +CheckBlockHeader+ and include: -* Check the syntactic validity of the block data structure -* Check the Proof-of-Work, by checking the block header hash is less than the target difficulty -* Check the block timestamp is less than two hours in the future (allowing for time errors) -* Check the block size is within acceptable limits -* Check the first transaction (and only the first) is a coinbase generation transaction -* Validate all transactions within the block, using the transaction checklist discussed in <> +* The block data structure is syntactically valid +* The block header hash is less than the target difficulty (enforces the Proof-of-Work) +* The block timestamp is less than two hours in the future (allowing for time errors) +* The block size is within acceptable limits +* The first transaction (and only the first) is a coinbase generation transaction +* All transactions within the block are valid using the transaction checklist discussed in <> The independent validation of each new block by every node on the network ensures that the miners can't cheat. In previous sections we saw how the miners get to write a transaction that awards them the new bitcoins created within the block and claim the transaction fees. Why doesn't the miner write themselves a transaction for a thousand bitcoin instead of the correct reward? Because every node validates blocks according to the same rules. An invalid coinbase transaction would make the entire block invalid, which would result in the block being rejected and therefore that transaction would never become part of the ledger. The miner has to construct a perfect block, based on the shared rules that all nodes follow and mine it with a correct solution to the Proof-of-Work. To do so they expend a lot of electricity in mining and if they cheat all the electricity and effort is wasted. This is why independent validation is a key component of decentralized consensus. From 3de2551c7f5012d1fa792cb054d6d3c18e005aec Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Sun, 17 Aug 2014 15:40:14 -0700 Subject: [PATCH 004/102] Change 'In the example above' to 'In the hashing example above' to disambiguate which example is being referred to per issue #87 --- ch08.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch08.asciidoc b/ch08.asciidoc index 9158bc79..17e57cb4 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -432,7 +432,7 @@ To make a challenge out of this algorithm, let's set an arbitrary target: find a To give a simple analogy, imagine a game where players throw a pair of dice repeatedly, trying to throw less than a specified target. In the first round, the target is 12. Unless you throw double-six, you win. In the next round the target is 11. Players must throw 10 or less to win, again an easy task. Let's say a few rounds later the target is down to 5. Now, more than half the dice throws will add up to more than 5 and therefore be invalid. It takes exponentially more dice throws to win, the lower the target gets. Eventually, when the target is 2 (the minimum possible), only one throw out of every 36, or 2% of them will produce a winning result. -In the example above, the winning "nonce" is 13 and this result can be confirmed by anyone independently. Anyone can add the number 13 as a suffix to the phrase "I am Satoshi Nakamoto" and compute the hash, verifying that it is less than the target. The successful result is also proof-of-work, as it proves we did the work to find that nonce. While it only takes one hash computation to verify, it took us 13 hash computations to find a nonce that worked. If we had a lower target (higher difficulty) it would take many more hash computations to find a suitable nonce, but only one hash computation for anyone to verify. Furthermore, by knowing the target, anyone can estimate the difficulty using statistics and therefore know how much work was needed to find such a nonce. +In the hashing example above, the winning "nonce" is 13 and this result can be confirmed by anyone independently. Anyone can add the number 13 as a suffix to the phrase "I am Satoshi Nakamoto" and compute the hash, verifying that it is less than the target. The successful result is also proof-of-work, as it proves we did the work to find that nonce. While it only takes one hash computation to verify, it took us 13 hash computations to find a nonce that worked. If we had a lower target (higher difficulty) it would take many more hash computations to find a suitable nonce, but only one hash computation for anyone to verify. Furthermore, by knowing the target, anyone can estimate the difficulty using statistics and therefore know how much work was needed to find such a nonce. Bitcoin's Proof-of-Work is very similar to the problem above. The miner constructs a candidate block filled with transactions. Next, the miner calculates the hash of this block's header and see if it is smaller than the current _target_. If the hash is not less than the target, the miner will modify the nonce (usually just incrementing it by one) and try again. At the current difficulty in the bitcoin network, miners have to try quadrillions of times before finding a nonce that results in a low enough block header hash. From 683af91111da59294af498956e5ae5c523c1d136 Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Sun, 17 Aug 2014 15:54:21 -0700 Subject: [PATCH 005/102] =?UTF-8?q?Change=20'Jing=E2=80=99s=20node=20has?= =?UTF-8?q?=20assembled=20a=20chain=20of=20277,314=20blocks'=20to=20'Jing'?= =?UTF-8?q?s=20node=20has=20assembled=20a=20chain=20up=20to=20block=20277,?= =?UTF-8?q?314.'=20per=20issue=20#92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch08.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch08.asciidoc b/ch08.asciidoc index 17e57cb4..daf2f78c 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -95,7 +95,7 @@ After validating transactions, a bitcoin node will add them to the _memory pool_ Let's follow the blocks that were created during the time Alice bought a cup of coffee from Bob's Cafe (see <>). Alice's transaction was included in block 277,316. For the purpose of demonstrating the concepts in this chapter let's assume that block was mined by Jing's mining system and follow Alice's transaction as it becomes part of this new block. -Jing's mining node maintains a local copy of the blockchain, the list of all blocks created since the beginning of the bitcoin system in 2009. By the time Alice buys the cup of coffee, Jing's node has assembled a chain of 277,314 blocks. Jing's node is listening for transactions, trying to mine a new block and also listening for blocks discovered by other nodes. As Jing's node is mining, it receives block 277,315 through the bitcoin network. The arrival of this block signifies the end of the competition for block 277,315 and the beginning of the competition to create block 277,316. +Jing's mining node maintains a local copy of the blockchain, the list of all blocks created since the beginning of the bitcoin system in 2009. By the time Alice buys the cup of coffee, Jing's node has assembled a chain up to block 277,314. Jing's node is listening for transactions, trying to mine a new block and also listening for blocks discovered by other nodes. As Jing's node is mining, it receives block 277,315 through the bitcoin network. The arrival of this block signifies the end of the competition for block 277,315 and the beginning of the competition to create block 277,316. During the previous 10 minutes, while Jing's node was searching for a solution to block 277,315, it was also collecting transactions in preparation for the next block. By now it has collected a few hundred transactions in the memory pool. Upon receiving block 277,315 and validating it, Jing's node will also check all the transactions in the memory pool and remove any that were included in block 277,315. Whatever transaction remain in the memory pool are unconfirmed and are waiting to be recorded in a new block. From 2a8399dad1bc825479eede46d172d150834be1d5 Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Sun, 17 Aug 2014 16:00:05 -0700 Subject: [PATCH 006/102] Add 'virtually' to 'virtually impossible' when talking about hash collisions per issue #94 --- ch08.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch08.asciidoc b/ch08.asciidoc index daf2f78c..f0ed0ab9 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -356,7 +356,7 @@ In the simplest terms, mining is the process of hashing the block header repeate ==== Proof-of-Work Algorithm -A hash algorithm takes an arbitrary-length data input and produces a fixed-length deterministic result, a digital fingerprint of the input. For any specific input, the resulting hash will always be the same and can be easily calculated and verified by anyone implementing the same hash algorithm. The key characteristic of a cryptographic hash algorithm is that it is impossible to find two different inputs that produce the same fingerprint. As a corollary, it is also impossible to select an input in such a way as to produce a desired fingerprint, other than trying random inputs. +A hash algorithm takes an arbitrary-length data input and produces a fixed-length deterministic result, a digital fingerprint of the input. For any specific input, the resulting hash will always be the same and can be easily calculated and verified by anyone implementing the same hash algorithm. 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. With SHA-256, the output is always 256 bits long, regardless of the size of the input. In the example below, we will use the Python interpreter to calculate the SHA256 hash of the phrase "I am Satoshi Nakamoto". From 167c2741101ac8f1c346c91763f9da8af6f77c96 Mon Sep 17 00:00:00 2001 From: Nekomata Date: Mon, 18 Aug 2014 01:11:30 -0300 Subject: [PATCH 007/102] Update ch09.asciidoc --- ch09.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch09.asciidoc b/ch09.asciidoc index a04ddecb..3b829c69 100644 --- a/ch09.asciidoc +++ b/ch09.asciidoc @@ -253,7 +253,7 @@ Bytecoin was the first implementation spawned from CryptoNote, offering a viable Monero is another implementation of CryptoNote. It has a slightly flatter issuance curve than Bytecoin, issuing 80% of the currency in the first 4 years. It offers the same anonymity features inherited from CryptoNote. * Block generation: 1 minute -* Total currency: 184 billion XMR +* Total currency: 18.4 million XMR * Consensus algorithm: Cryptonight Proof-of-Work * Market capitalization: $5 million USD in Summer 2014 From df9beb5ec940146528bd6f3ca2a85bfc0deebcc1 Mon Sep 17 00:00:00 2001 From: Holger Schinzel Date: Mon, 18 Aug 2014 11:59:30 +0200 Subject: [PATCH 008/102] Darkcoin: corrected launch date and maximum coin supply, according to https://bitcointalk.org/index.php?topic=421615.0 --- ch09.asciidoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ch09.asciidoc b/ch09.asciidoc index a04ddecb..0920eac9 100644 --- a/ch09.asciidoc +++ b/ch09.asciidoc @@ -259,10 +259,10 @@ Monero is another implementation of CryptoNote. It has a slightly flatter issuan *Darkcoin* -Darkcoin was launched in March of 2014. Darkcoin implements anonymous currency using a re-mixing protocol for all transactions called DarkSend. Darkcoin is also notable for using 11 rounds of different hash functions (blake, bmw, groestl, jh, keccak, skein, luffa, cubehash, shavite, simd, echo) for the Proof-of-Work algorithm. +Darkcoin was launched in January of 2014. Darkcoin implements anonymous currency using a re-mixing protocol for all transactions called DarkSend. Darkcoin is also notable for using 11 rounds of different hash functions (blake, bmw, groestl, jh, keccak, skein, luffa, cubehash, shavite, simd, echo) for the Proof-of-Work algorithm. * Block generation: 2.5 minutes -* Total currency: 22 million DRK +* Total currency: maximum 22 million DRK * Consensus algorithm: Multi-algorithm Multi-round Proof-of-Work * Market capitalization: $19 million USD in Summer 2014 From d17947f16873da5abfd447db584a5ab924d1bc8d Mon Sep 17 00:00:00 2001 From: effectsToCause Date: Mon, 18 Aug 2014 10:20:57 -0400 Subject: [PATCH 009/102] Corrected case and added feature I added here an additional novel feature of VeriCoin that directly relates to bitcoin, as an example how alt-coins can co-exist symbiotically with Bitcoin in the market. --- ch09.asciidoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ch09.asciidoc b/ch09.asciidoc index 3b829c69..1fa02067 100644 --- a/ch09.asciidoc +++ b/ch09.asciidoc @@ -177,9 +177,9 @@ Blackcoin was introduced in February 2014 and uses a Proof-of-Stake consensus al * Consensus algorithm: Proof-of-Stake * Market capitalization: $3.7 million USD in Summer 2014 -*Vericoin* +*VeriCoin* -Vericoin was launched in May 2014. It uses a Proof-of-Stake consensus algorithm with a variable interest rate that dynamically adjusts based on market forces of supply and demand. +VeriCoin was launched in May 2014. It uses a Proof-of-Stake consensus algorithm with a variable interest rate that dynamically adjusts based on market forces of supply and demand. It also is the first alt-coin featuring auto-exchange to Bitcoin for payment in Bitcoin from the wallet. * Block generation: 1 minute * Total currency: No limit From d18aa9d9ce02d5596aeb53dfc4b7a640139cb9bd Mon Sep 17 00:00:00 2001 From: ethers Date: Mon, 18 Aug 2014 23:18:28 -0700 Subject: [PATCH 010/102] grammar --- ch04.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch04.asciidoc b/ch04.asciidoc index 59912e7a..e59a6842 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -20,7 +20,7 @@ Wikipedia has a good article that explains the details of how arithmetic operati Glossing over details, here are the fundamental facts: -An elliptic curve field is a set of points (x, y) each of which that satisfies the equation +An elliptic curve field is a set of points (x, y) each of which satisfies the equation y^2^ = x^3^ + ax + b (mod P) From f048a7c24cc5bf6ef7a7c30b07289a5b5aeccba1 Mon Sep 17 00:00:00 2001 From: ethers Date: Mon, 18 Aug 2014 23:30:30 -0700 Subject: [PATCH 011/102] be more precise about secp256k1 curve (is also more consistent with further text in the chapter) --- ch04.asciidoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ch04.asciidoc b/ch04.asciidoc index e59a6842..619ed8c0 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -24,9 +24,9 @@ An elliptic curve field is a set of points (x, y) each of which satisfies the eq y^2^ = x^3^ + ax + b (mod P) -for some constants a, b and P (where P is prime). Bitcoin uses a standard curve known as secp256, where a=0, b=7, and P = 2^256^ - 2^32^ - 2^9^ - 2^8^ - 2^7^ - 2^6^ - 2^4^ - 1. +for some constants a, b and P (where P is prime). Bitcoin uses a curve known as secp256k1, where a=0, b=7, and P = 2^256^ - 2^32^ - 2^9^ - 2^8^ - 2^7^ - 2^6^ - 2^4^ - 1. -So for example, (55066263022277343669578718895168534326250603453777594175500187360389116729240, 32670510020758816978083085130507043184471273380659243275938904335757337482424) is a point on the secp256 curve. You can check this yourself using Python. +So for example, (55066263022277343669578718895168534326250603453777594175500187360389116729240, 32670510020758816978083085130507043184471273380659243275938904335757337482424) is a point on the secp256k1 curve. You can check this yourself using Python. ---- Python 3.4.0 (default, Mar 30 2014, 19:23:13) From 4e229b0ff1ea71a25dc8783e7441d6d82c531478 Mon Sep 17 00:00:00 2001 From: ethers Date: Tue, 19 Aug 2014 01:09:35 -0700 Subject: [PATCH 012/102] fix Mutli typo and grammar --- ch05.asciidoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ch05.asciidoc b/ch05.asciidoc index 4d807467..b5032ed7 100644 --- a/ch05.asciidoc +++ b/ch05.asciidoc @@ -4,9 +4,9 @@ [[ch5_intro]] === Introduction -Transactions are the most important part of the bitcoin system. Everything else in bitcoin is designed to ensure that transactions can be created, propagated on the network, validated, and finally added to the global ledger of transactions, the blockchain. Transactions are data structures that encode the transfer of value between participants in the bitcoin system. Each transaction is an public entry in bitcoin's global double-entry bookkeeping ledger, the blockchain. +Transactions are the most important part of the bitcoin system. Everything else in bitcoin is designed to ensure that transactions can be created, propagated on the network, validated, and finally added to the global ledger of transactions, the blockchain. Transactions are data structures that encode the transfer of value between participants in the bitcoin system. Each transaction is a public entry in bitcoin's global double-entry bookkeeping ledger, the blockchain. -In this chapter we will examine all the various forms of transactions, what do they contain, how to create them, how they are verified, and how they become part of the permanent record of all transactions. +In this chapter we will examine all the various forms of transactions, what they contain, how to create them, how they are verified, and how they become part of the permanent record of all transactions. [[tx_lifecycle]] === Transaction Lifecycle @@ -335,7 +335,7 @@ The combined script, which is validated by the transaction validation software i The script above is a simple invocation of the CHECKSIG operator which validates the signature as belonging to the correct key and returns TRUE on the stack. [[multisig]] -==== Mutli-Signature +==== Multi-Signature Multi-signature scripts set a condition where N public keys are recorded in the script and at least M of those must provide signatures to release the encumbrance. This is also known as an M-of-N scheme, where N is the total number of keys and M is the threshold of signatures required for validation. For example, a 2-of-3 multi-signature is one where 3 public keys are listed as potential signers and at least 2 of those must be used to create signatures for a valid transaction to spend the funds. At this time, standard multi-signature scripts are limited to at most 15 listed public keys, meaning you can do anything from a 1-of-1 to a 15-of-15 multi-signature or any combination within that range. The limitation to 15 listed keys may be lifted by the time of publication of this book, so check the +isStandard()+ function to see what is currently accepted by the network. From fc493ba2dac8ed6c7532a9060477e665f671cd4f Mon Sep 17 00:00:00 2001 From: Jameson Lopp Date: Tue, 19 Aug 2014 09:14:19 -0400 Subject: [PATCH 013/102] Adding Chapter 9 to book index --- book.asciidoc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/book.asciidoc b/book.asciidoc index f3973f18..f4fbbfca 100644 --- a/book.asciidoc +++ b/book.asciidoc @@ -18,4 +18,6 @@ include::ch06.asciidoc[] include::ch07.asciidoc[] -include::ch08.asciidoc[] \ No newline at end of file +include::ch08.asciidoc[] + +include::ch09.asciidoc[] From a51d2f941bd295119bba7f551610fa01957ee4e5 Mon Sep 17 00:00:00 2001 From: Jameson Lopp Date: Tue, 19 Aug 2014 09:36:17 -0400 Subject: [PATCH 014/102] Attempting clarification of 6 confirmation standard --- preface.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/preface.asciidoc b/preface.asciidoc index 8e490082..a1f5c26f 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -131,7 +131,7 @@ blockchain:: confirmations:: ((("confirmations"))) - Once a transaction is included in a block, it has "one confirmation". As soon as _another_ block is mined on the same blockchain, the transaction has two confirmations etc. Six or more confirmations is considered final. + Once a transaction is included in a block, it has "one confirmation". As soon as _another_ block is mined on the same blockchain, the transaction has two confirmations etc. Six or more confirmations is considered sufficient proof that a transaction can not be reversed. difficulty:: ((("difficulty"))) From 6e3b09855a4fb4b0ac5cdd264f535484cdb978d5 Mon Sep 17 00:00:00 2001 From: "amacdonald@oreilly.com" Date: Tue, 19 Aug 2014 08:05:58 -0700 Subject: [PATCH 015/102] Updated book.asciidoc --- book.asciidoc | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/book.asciidoc b/book.asciidoc index 5f71ab85..9b2b82e2 100644 --- a/book.asciidoc +++ b/book.asciidoc @@ -2,22 +2,6 @@ = Mastering Bitcoin -include::preface.asciidoc[] - -include::ch01.asciidoc[] - -include::ch02.asciidoc[] - -include::ch03.asciidoc[] - -include::ch04.asciidoc[] - -include::ch05.asciidoc[] - -include::ch06.asciidoc[] - -include::ch07.asciidoc[] - include::ch08.asciidoc[] include::ch09.asciidoc[] \ No newline at end of file From d275835ec366a72e89e9dc27906781aafff45c06 Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Tue, 19 Aug 2014 08:27:42 -0700 Subject: [PATCH 016/102] Change 'can not' to 'cannot' --- preface.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/preface.asciidoc b/preface.asciidoc index a1f5c26f..82e962ce 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -131,7 +131,7 @@ blockchain:: confirmations:: ((("confirmations"))) - Once a transaction is included in a block, it has "one confirmation". As soon as _another_ block is mined on the same blockchain, the transaction has two confirmations etc. Six or more confirmations is considered sufficient proof that a transaction can not be reversed. + Once a transaction is included in a block, it has "one confirmation". As soon as _another_ block is mined on the same blockchain, the transaction has two confirmations etc. Six or more confirmations is considered sufficient proof that a transaction cannot be reversed. difficulty:: ((("difficulty"))) From 0b093bef4ef99443754a5450298dc8ff32922006 Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Tue, 19 Aug 2014 09:10:24 -0700 Subject: [PATCH 017/102] Light copyediting/grammer/spelling mistakes --- ch09.asciidoc | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/ch09.asciidoc b/ch09.asciidoc index 5fcffa4b..558fa635 100644 --- a/ch09.asciidoc +++ b/ch09.asciidoc @@ -1,7 +1,7 @@ [[ch9]] == Alternative chains, currencies and applications -Bitcoin was neither the beginning nor the end of the digital currency evolution. It came from twenty years of research in distributed systems and currencies and brought a revolutionary new technology into the space: the de-centralized consensus mechanism based on Proof-of-Work. The invention at the heart of bitcoin has ushered a wave of innovation in currencies, financial services, economics, distributed systems, voting systems, corporate governance and contracts. +Bitcoin was neither the beginning nor the end of the digital currency evolution. It came from twenty years of research in distributed systems and currencies and brought a revolutionary new technology into the space: the de-centralized consensus mechanism based on Proof-of-Work. The invention at the heart of bitcoin has ushered a wave of innovation in currencies, financial services, economics, distributed systems, voting systems, corporate governance, and contracts. In this chapter we'll examine the many offshoots of the bitcoin and blockchain inventions, the alternative chains, currencies and applications built since the introduction of this technology in 2009. @@ -15,7 +15,7 @@ Bitcoin is an open source project and its code has been used as the basis for ma There are a number of protocol layers implemented on top of bitcoin's blockchain. These _meta-coins_, _meta-chains_, or _blockchain apps_ use the blockchain as an application platform or extend the bitcoin protocol by adding protocol layers. Examples include Colored Coins, Mastercoin and Counterparty. -In the next section we will examine a few notable alt-coins, such as Litecoin, Dogecoin, Freicoin, Primecoin, Peercoin, Darkcoin and Zerocoin. These alt-coins are notable for historical reasons or because they are good examples a specific type of alt-coin innovation, not because they are the most valuable or "best" alt-coins. +In the next section we will examine a few notable alt-coins, such as Litecoin, Dogecoin, Freicoin, Primecoin, Peercoin, Darkcoin, and Zerocoin. These alt-coins are notable for historical reasons or because they are good examples for a specific type of alt-coin innovation, not because they are the most valuable or "best" alt-coins. In addition to the alt-coins, there are also a number of alternative blockchain implementations that are not really "coins", which I call _alt-chains_. These alt-chains implement a consensus algorithm and distributed ledger as a platform for contracts, name registration or other applications. Alt-chains use the same basic building blocks and sometimes also use a currency or token as a payment mechanism, but their primary purpose is not currency. We will look at Namecoin, Ethereum and NXT as examples of alt-chains. @@ -25,7 +25,7 @@ Finally, there are a number of bitcoin contenders that offer digital currency or === Meta-Coin Platforms -Meta-coins and meta-chains are software layers implemented on top of bitcoin, either implementing a currency-inside-a-currency, or a platform/protocol overlay inside the bitcoin system. These function layers extend the core bitcoin protocol and add features and capabilities by encoding additional data inside bitcoin transactions and bitcoin addresses. The first implementations of meta-coins used various "hacks" to add meta-data to the bitcoin blockchain, such as using bitcoin addresses to encode data or using unused transaction fields (eg. the transaction sequence field) to encode meta-data about the added protocol layer. Since the introduction of the OP_RETURN transaction scripting opcode, the meta-coins have been able to record meta-data more directly in the blockchain and most are migrating to using that instead. +Meta-coins and meta-chains are software layers implemented on top of bitcoin, either implementing a currency-inside-a-currency, or a platform/protocol overlay inside the bitcoin system. These function layers extend the core bitcoin protocol and add features and capabilities by encoding additional data inside bitcoin transactions and bitcoin addresses. The first implementations of meta-coins used various "hacks" to add meta-data to the bitcoin blockchain, such as using bitcoin addresses to encode data or using unused transaction fields (e.g. the transaction sequence field) to encode meta-data about the added protocol layer. Since the introduction of the OP_RETURN transaction scripting opcode, the meta-coins have been able to record meta-data more directly in the blockchain and most are migrating to using that instead. ==== Colored Coins @@ -61,7 +61,7 @@ To demonstrate the use of colored coins, we have created a set of 20 colored coi ==== Mastercoin -Mastercoin is a protocol layer on top of bitcoin that supports a platform for various applications extending the bitcoin system. Mastercoin uses the currency MST as a token for conducting Mastercoin transactions but it not primarily a currency. Rather it is a platform for building other things, such as user currencies, smart property tokens, de-centralized asset exchanges, contracts etc. Think of Mastercoin as an application-layer protocol on top of bitcoin's financial transaction transport-layer, just like HTTP runs on top of TCP. +Mastercoin is a protocol layer on top of bitcoin that supports a platform for various applications extending the bitcoin system. Mastercoin uses the currency MST as a token for conducting Mastercoin transactions but it is not primarily a currency. Rather it is a platform for building other things, such as user currencies, smart property tokens, de-centralized asset exchanges, contracts etc. Think of Mastercoin as an application-layer protocol on top of bitcoin's financial transaction transport-layer, just like HTTP runs on top of TCP. Mastercoin operates primarily through transactions sent to and from a special bitcoin address called the "exodus" address (+1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P+), just like HTTP uses a specific TCP port (port 80) to differentiate its traffic from the rest of the TCP traffic. The Mastercoin protocol is gradually transitioning from using the specialized exodus address and multi-signatures to using the OP_RETURN bitcoin operator to encode transaction metadata. @@ -71,7 +71,7 @@ Counterparty is another protocol layer implemented on top of bitcoin. Counterpar === Alt-coins -Alt-coins are digital currencies implemented using the same design pattern as bitcoin, with a completely separate blockchain and network. The vast majority of alt-coins are derived from bitcoin's source code, also known as "forks". Some are implemented "from scratch" based on the blockchain model but without using any of bitcoin's source code. Alt-coins and alt-chains (in the next section) are both separate implementations of blockchain technology and both forms use their own blockchain. The difference in the terms is to indicate that alt-coins are primarily used as currency, whereas alt-chains are used for other purposes, not primarily currency. +Alt-coins are digital currencies implemented using the same design pattern as bitcoin, but with a completely separate blockchain and network. The vast majority of alt-coins are derived from bitcoin's source code, also known as "forks". Some are implemented "from scratch" based on the blockchain model but without using any of bitcoin's source code. Alt-coins and alt-chains (in the next section) are both separate implementations of blockchain technology and both forms use their own blockchain. The difference in the terms is to indicate that alt-coins are primarily used as currency, whereas alt-chains are used for other purposes, not primarily currency. The first alt-coins appeared in August of 2011 as forks of the bitcoin source code. Strictly speaking, the first major fork of bitcoin's code was not an alt-coin but the alt-chain _Namecoin_, which will be discussed in the next section. @@ -79,9 +79,9 @@ Based on the date of announcement, the first alt-coin appears to be _IXCoin_, la In September of 2011, _Tenebrix_ was launched. Tenebrix was the first crypto-currency to implement an alternative Proof-of-Work algorithm, namely _scrypt_, an algorithm originally designed for password stretching (brute-force resistance). The stated goal of Tenebrix was to make a coin that was resistant to mining with GPUs and ASICs, by using a memory-intensive algorithm. Tenebrix did not succeed as a currency, but it was the basis for Litecoin, which has enjoyed great success and has spawned hundreds of clones. -_Litecoin_, in addition to using scrypt as the Proof-of-Work algorithm, also implemented a faster block generation time, targeted at 2.5 minutes instead of bitcoin's 10 minutes. The resulting currency is touted as "silver to bitcoin's gold" and intended as a light-weight alternative currency. Due to the faster confirmation time and 84 million total currency limit, many adherents of Litecoin believe it is better suited for retail transactions than bitcoin. +_Litecoin_, in addition to using scrypt as the Proof-of-Work algorithm, also implemented a faster block generation time, targeted at 2.5 minutes instead of bitcoin's 10 minutes. The resulting currency is touted as "silver to bitcoin's gold" and is intended as a light-weight alternative currency. Due to the faster confirmation time and the 84 million total currency limit, many adherents of Litecoin believe it is better suited for retail transactions than bitcoin. -Alt-coins continued to proliferate in 2011 and 2012, either based on bitcoin, or on Litecoin. In the beginning of 2013 there were 20 alt-coins vying for position in the market. By the end of 2013 however, this number had exploded to 200, with 2013 quickly becoming the "year of the alt-coins". The growth of alt-coins continued in 2014 with more than 500 alt-coins now in existence. More than half the alt-coins today are clones of Litecoin. +Alt-coins continued to proliferate in 2011 and 2012, either based on bitcoin or on Litecoin. In the beginning of 2013 there were 20 alt-coins vying for position in the market. By the end of 2013 however, this number had exploded to 200, with 2013 quickly becoming the "year of the alt-coins". The growth of alt-coins continued in 2014 with more than 500 alt-coins now in existence. More than half the alt-coins today are clones of Litecoin. Creating an alt-coin is easy, which is why there are now more than 500 of them. Most of the alt-coins differ very slightly from bitcoin and do not offer anything worth studying. Many are in fact just attempts to enrich their creators. Among the copycats and pump-and-dump schemes, there are however some notable exceptions and very important innovations. These alt-coins take radically different approaches or add significant innovation to bitcoin's design pattern. There are three primary areas where alt-coins differentiate from bitcoin: @@ -89,7 +89,7 @@ Creating an alt-coin is easy, which is why there are now more than 500 of them. * Different Proof-of-Work or consensus mechanism * Specific features, such as strong anonymity -A graphical timeline of alt-coins and alt-chains can be found at http://mapofcoins.com +A graphical timeline of alt-coins and alt-chains can be found at http://mapofcoins.com. ==== Evaluating an alt-coin @@ -101,7 +101,7 @@ Here are some questions to ask about how well an alt-coin differentiates from bi * Does the alt-coin differentiate sufficiently from bitcoin? * Is the difference compelling enough to attract users away from bitcoin? * Does the alt-coin address an interesting niche market or application? -* Can the alt-coin attract enough miners to be secure against consensus attacks? +* Can the alt-coin attract enough miners to be secured against consensus attacks? Here are some of the key financial and market metrics to examine: @@ -146,7 +146,7 @@ Freicoin was introduced in July 2012. It is a _demurrage currency_, meaning that ==== Consensus Innovation: Peercoin, Myriad, Blackcoin, Vericoin, NXT -Bitcoin's consensus mechanism is based on Proof-of-Work using the SHA256 algorithm. The first alt-coins introduced scrypt as an alternative Proof-of-Work algorithms, as a way to make mining more CPU-friendly and less susceptible to centralization with ASICs. Since then, innovation in the consensus mechanism has continued at a frenetic pace. Several alt-coins adopted a variety of algorithms such as scrypt, scrypt-N, Skein, Groestl, SHA3, X11, Blake and others. Some alt-coins combined multiple algorithms for Proof-of-Work. In 2013 we saw the invention of an alternative to Proof-of-Work, called _Proof-of-Stake_, which forms the basis of many modern alt-coins. +Bitcoin's consensus mechanism is based on Proof-of-Work using the SHA256 algorithm. The first alt-coins introduced scrypt as an alternative Proof-of-Work algorithms, as a way to make mining more CPU-friendly and less susceptible to centralization with ASICs. Since then, innovation in the consensus mechanism has continued at a frenetic pace. Several alt-coins adopted a variety of algorithms such as scrypt, scrypt-N, Skein, Groestl, SHA3, X11, Blake, and others. Some alt-coins combined multiple algorithms for Proof-of-Work. In 2013 we saw the invention of an alternative to Proof-of-Work, called _Proof-of-Stake_, which forms the basis of many modern alt-coins. Proof-of-Stake is a system by which existing owners of a currency can "stake" currency as interest-bearing collateral. Somewhat like a Certificate of Deposit (CD), participants can reserve a portion of their currency holdings, while earning an investment return in the form of new currency (issued as interest payments) and transaction fees. @@ -198,11 +198,11 @@ NXT (pronounced "Next") is a "pure" Proof-of-Stake alt-coin, in that it does not ==== Dual-Purpose Mining Innovation: Primecoin, Curecoin, Gridcoin -Bitcoin's Proof-of-Work algorithm has only one purpose: securing the bitcoin network. Compared to traditional payment system security, the cost of mining is not very high. However, it has been criticized by many as "wasteful". The next set of alt-coins attempt to address this concern. Dual-purpose Proof-of-Work algorithms solve a specific "useful" problem, while producing Proof-of-Work to secure the network. The risk of adding an external use to the currency's security is that it also adds external influence to the supply/demand curve. +Bitcoin's Proof-of-Work algorithm has only one purpose: securing the bitcoin network. Compared to traditional payment system security, the cost of mining is not very high. However, it has been criticized by many as being “wasteful". The next set of alt-coins attempt to address this concern. Dual-purpose Proof-of-Work algorithms solve a specific "useful" problem, while producing Proof-of-Work to secure the network. The risk of adding an external use to the currency's security is that it also adds external influence to the supply/demand curve. *Primecoin* -Primecoin was announced in July 2013. It's Proof-of-Work algorithm searches for prime numbers, computing Cunningham and bi-twin prime chains. Prime numbers are useful in a variety of scientific disciplines. The Primecoin blockchain contains the discovered prime numbers, thereby producing a public record of scientific discovery in parallel to the public ledger of transactions. +Primecoin was announced in July 2013. Its Proof-of-Work algorithm searches for prime numbers, computing Cunningham and bi-twin prime chains. Prime numbers are useful in a variety of scientific disciplines. The Primecoin blockchain contains the discovered prime numbers, thereby producing a public record of scientific discovery in parallel to the public ledger of transactions. * Block generation: 1 minute * Total currency: No limit @@ -233,7 +233,7 @@ Bitcoin is often mistakenly characterized as "anonymous" currency. In fact, it i *Zerocoin/Zerocash* -Zerocoin is a theoretical approach to digital currency anonymity introduced in 2013 by researchers at Johns Hopkins. Zerocash is an alt-coin implementation of Zercoin that is in development and not yet released. +Zerocoin is a theoretical approach to digital currency anonymity introduced in 2013 by researchers at Johns Hopkins. Zerocash is an alt-coin implementation of Zerocoin that is in development and not yet released. *CryptoNote* @@ -272,7 +272,7 @@ Alt-chains are alternative implementations of the blockchain design pattern, whi ==== Namecoin -Namecoin was the first "fork" of the bitcoin code. Namecoin is a de-centralized key-value registration and transfer platform using a blockchain. It supports a global domain name registry similar to the domain-name registration system on the Internet. Namecoin is currently used as an alternative Domain Name Service (DNS) for the root-level domain +.bit+. Namecoin can also be used to register names and key-value pairs in other namespaces, for storing things like email addresses, encryption keys, SSL certificates, file signatures, voting systems, stock certificates and a myriad other applications. +Namecoin was the first "fork" of the bitcoin code. Namecoin is a de-centralized key-value registration and transfer platform using a blockchain. It supports a global domain name registry similar to the domain-name registration system on the Internet. Namecoin is currently used as an alternative Domain Name Service (DNS) for the root-level domain +.bit+. Namecoin can also be used to register names and key-value pairs in other namespaces, for storing things like email addresses, encryption keys, SSL certificates, file signatures, voting systems, stock certificates and a myriad of other applications. The Namecoin system includes the namecoin currency (symbol NMC), which is used to pay transaction fees for registration and transfer of names. At current prices, the fee to register a name is 0.01 NMC or approximately 1 US cent. As in bitcoin, the fees are collected by Namecoin miners. @@ -287,7 +287,7 @@ Namecoin's namespaces are not restricted, and anyone can use any namespace in an * +d/+ is the domain-name namespace for +.bit+ domains * +id/+ is the namespace for storing person identifiers such as email addresses, PGP keys etc. -* +u/+ is an additional, more structured specfication to store identities (based on openspecs). +* +u/+ is an additional, more structured specification to store identities (based on openspecs). The Namecoin client is very similar to Bitcoin Core, as it is derived from the same source code. Upon installation, the client will download a full copy of the namecoin blockchain and then will be ready to query and register names. There are three main commands: @@ -355,7 +355,7 @@ else: === Future of Currencies -The future of cryptographic currencies overall is even brighter than the future of bitcoin. Bitcoin introduced a completely new form of de-centralized organization and consensus that has spawned hundreds of incredible innovations. These inventions will likely affect broad sectors of the economy, from distributed systems science, to finance, economics, currencies, central banking and corporate governance. Many human activities that previously required centralized institutions or organizations to function as authoritative or trusted points of control can now be de-centralized. The invention of the blockchain and consensus system will significantly reduce the cost of organization and coordination on large scale systems, while removing opportunities for concentration of power, corruption and regulatory capture. +The future of cryptographic currencies overall is even brighter than the future of bitcoin. Bitcoin introduced a completely new form of de-centralized organization and consensus that has spawned hundreds of incredible innovations. These inventions will likely affect broad sectors of the economy, from distributed systems science, to finance, economics, currencies, central banking, and corporate governance. Many human activities that previously required centralized institutions or organizations to function as authoritative or trusted points of control can now be de-centralized. The invention of the blockchain and consensus system will significantly reduce the cost of organization and coordination on large scale systems, while removing opportunities for concentration of power, corruption and regulatory capture. From a86fa10543520d948cc85c55ef942789e73cf018 Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Tue, 19 Aug 2014 09:13:49 -0700 Subject: [PATCH 018/102] Changing Summer 2014 to mid-2014, since seasons have different meanings in different hemispheres --- ch09.asciidoc | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/ch09.asciidoc b/ch09.asciidoc index 558fa635..45b3da9c 100644 --- a/ch09.asciidoc +++ b/ch09.asciidoc @@ -124,7 +124,7 @@ One of the first alt-coins, released in 2011, Litecoin is the second most succes * Block generation time: 2.5 minutes * Total currency: 84 million coins by 2140 * Consensus Algorithm: scrypt Proof-of-Work -* Market capitalization: $160 million USD in Summer 2014 +* Market capitalization: $160 million USD in mid-2014 *Dogecoin* @@ -133,7 +133,7 @@ Dogecoin was released in December of 2013, based on a fork of Litecoin. Dogecoin * Block generation time: 60 seconds * Total currency: 100,000,000,000 (100 trillion) Doge by 2015 * Consensus algorithm: scrypt Proof-of-Work -* Market capitalization: $12 million USD in Summer 2014 +* Market capitalization: $12 million USD in mid-2014 *Freicoin* @@ -142,7 +142,7 @@ Freicoin was introduced in July 2012. It is a _demurrage currency_, meaning that * Block generation: 10 minutes * Total currency: 100 million coins by 2140 * Consensus algorithm: SHA256 Proof-of-Work -* Market capitalization: $130,000 USD in Summer 2014 +* Market capitalization: $130,000 USD in mid-2014 ==== Consensus Innovation: Peercoin, Myriad, Blackcoin, Vericoin, NXT @@ -157,7 +157,7 @@ Peercoin was introduced in August of 2012 and is the first alt-coin to use a hyb * Block generation: 10 minutes * Total currency: No limit * Consensus algorithm: (Hybrid) Proof-of-Stake with initial Proof-of-Work -* Market capitalization: $14 million USD in Summer 2014 +* Market capitalization: $14 million USD in mid-2014 *Myriad* @@ -166,7 +166,7 @@ Myriad was introduced in February 2014 and is notable because it uses five diffe * Block generation: 30 second average (2.5 minutes target per mining algorithm) * Total currency: 2 billion by 2024 * Consensus algorithm: Multi-Algorithm Proof-of-Work -* Market capitalization: $120,000 USD in Summer 2014 +* Market capitalization: $120,000 USD in mid-2014 *Blackcoin* @@ -175,7 +175,7 @@ Blackcoin was introduced in February 2014 and uses a Proof-of-Stake consensus al * Block generation: 1 minute * Total currency: No limit * Consensus algorithm: Proof-of-Stake -* Market capitalization: $3.7 million USD in Summer 2014 +* Market capitalization: $3.7 million USD in mid-2014 *VeriCoin* @@ -184,7 +184,7 @@ VeriCoin was launched in May 2014. It uses a Proof-of-Stake consensus algorithm * Block generation: 1 minute * Total currency: No limit * Consensus algorithm: Proof-of-Stake -* Market capitalization: $1.1 million USD in Summer 2014 +* Market capitalization: $1.1 million USD in mid-2014 *NXT* @@ -193,7 +193,7 @@ NXT (pronounced "Next") is a "pure" Proof-of-Stake alt-coin, in that it does not * Block generation: 1 minute * Total currency: No limit * Consensus algorithm: Proof-of-Stake -* Market capitalization: $30 million USD in Summer 2014 +* Market capitalization: $30 million USD in mid-2014 ==== Dual-Purpose Mining Innovation: Primecoin, Curecoin, Gridcoin @@ -207,7 +207,7 @@ Primecoin was announced in July 2013. Its Proof-of-Work algorithm searches for p * Block generation: 1 minute * Total currency: No limit * Consensus algorithm: Proof-of-Work with prime number chain discovery -* Market capitalization: $1.3 million USD in Summer 2014 +* Market capitalization: $1.3 million USD in mid-2014 *Curecoin* @@ -216,7 +216,7 @@ Curecoin was announced in May 2013. It combines a SHA256 Proof-of-Work algorithm * Block generation: 10 minutes * Total currency: No limit * Consensus algorithm: Proof-of-Work with protein folding research -* Market capitalization: $58,000 USD in Summer 2014 +* Market capitalization: $58,000 USD in mid-2014 *Gridcoin* @@ -225,7 +225,7 @@ Gridcoin was introduced in October 2013. It supplements scrypt-based Proof-of-Wo * Block generation: 150 seconds * Total currency: No limit * Consensus algorithm: Proof-of-Work with BOINC grid-computing subsidy -* Market capitalization: $122,000 USD in Summer 2014 +* Market capitalization: $122,000 USD in mid-2014 ==== Anonymity-Focused Alt-Coins: CryptoNote, Bytecoin, Monero, Zerocash/Zerocoin, Darkcoin @@ -246,7 +246,7 @@ Bytecoin was the first implementation spawned from CryptoNote, offering a viable * Block generation: 2 minutes * Total currency: 184 billion BCN * Consensus algorithm: Cryptonight Proof-of-Work -* Market capitalization: $3 million USD in Summer 2014 +* Market capitalization: $3 million USD in mid-2014 *Monero* @@ -255,7 +255,7 @@ Monero is another implementation of CryptoNote. It has a slightly flatter issuan * Block generation: 1 minute * Total currency: 18.4 million XMR * Consensus algorithm: Cryptonight Proof-of-Work -* Market capitalization: $5 million USD in Summer 2014 +* Market capitalization: $5 million USD in mid-2014 *Darkcoin* @@ -264,7 +264,7 @@ Darkcoin was launched in January of 2014. Darkcoin implements anonymous currency * Block generation: 2.5 minutes * Total currency: maximum 22 million DRK * Consensus algorithm: Multi-algorithm Multi-round Proof-of-Work -* Market capitalization: $19 million USD in Summer 2014 +* Market capitalization: $19 million USD in mid-2014 === Non-currency alt-chains @@ -281,7 +281,7 @@ Namecoin's basic parameters are the same as bitcoin's: * Block generation: 10 minutes * Total currency: 21 million NMC by 2140 * Consensus algorithm: SHA256 Proof-of-Work -* Market capitalization: $10 million USD in Summer 2014 +* Market capitalization: $10 million USD in mid-2014 Namecoin's namespaces are not restricted, and anyone can use any namespace in any way. However, certain namespaces have an agreed upon specification so that when it is read from the blockchain, software knows how to read and proceed from there. If it is malformed, then whatever software you used to read from the specific namespace will throw an error. Some of the popular namespaces are: From 54a1215a9c11daa3ab29fceb0059916e7fcc91ee Mon Sep 17 00:00:00 2001 From: Jason Bisterfeldt Date: Tue, 19 Aug 2014 14:06:27 -0500 Subject: [PATCH 019/102] Update address definition Addresses are the 160-bit hash of a public key, multisignature addresses begin with three (3). --- preface.asciidoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/preface.asciidoc b/preface.asciidoc index 82e962ce..5e5ec4dd 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -111,11 +111,11 @@ Watch us on YouTube: link:$$http://www.youtube.com/oreillymedia$$[] This quick glossary contains many of the terms used in relation to bitcoin. These terms are used throughout the book, so bookmark this for a quick reference and clarification. -address (aka public key):: +address (sometimes mistakenly referred to as a public key):: ((("bitcoin address"))) ((("address", see="bitcoin address"))) ((("public key", see="bitcoin address"))) - A bitcoin address looks like +1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV+, they always start with a one. You can have as many as you like, share them so people can send you coins. + A bitcoin address is derived from a public key, and looks like +1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV+. Most addresses begin with a one, excepting multisignature addresses, which begin with a three. You can have as many as you like, share them so people can send you coins. bitcoin:: ((("bitcoin"))) From 493e45bbe040376bded6a91fd220175914d32366 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Tue, 19 Aug 2014 16:07:54 -0400 Subject: [PATCH 020/102] README added --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..3e28edbf --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# Mastering Bitcoin + +Mastering Bitcoin is a book for developers, but the first two chapters cover bitcoin at a level that is approachable to non-programmers. Anyone with a basic understanding of technology can read the first two chapters and get a great understanding of bitcoin. + +# Contributing + +To contribute to this book, please fork and make changes to your forked copy, then submit a pull request. Or alternatively, if you cannot use the github.com pull request system, submit an Issue from the menu on the right. Major contributions will receive an acknowledgment in the preface of the book. + +# Purchasing + +"Mastering Bitcoin" will be available in print and e-book format in Fall 2014. To pre-order your copy, please visit: + +http://bitcoinbook.info \ No newline at end of file From 6b852f2a8eb6a348b16983557c68a30e3794d660 Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Wed, 20 Aug 2014 02:31:14 +0300 Subject: [PATCH 021/102] Add missing comma --- ch08.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch08.asciidoc b/ch08.asciidoc index f0ed0ab9..6f686ee6 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -781,5 +781,5 @@ The massive increase of total hashing power has arguably made bitcoin impervious Not all attackers will be motivated by profit, however. One potential attack scenario is where an attacker intends to disrupt the bitcoin network without the possibility of profiting from such disruption. A malicious attack aimed at crippling bitcoin would require enormous investment and covert planning, but could conceivably be launched by a well funded, most likely state-sponsored attacker. Alternatively, a well-funded attacker could attack bitcoin's consensus by simultaneously amassing mining hardware, compromising pool operators and attacking other pools with denial-of-service. All of these scenarios are theoretically possible, but increasingly impractical as the bitcoin network's overall hashing power continues to grow exponentially. Recent advancements in bitcoin, such as P2Pool mining, aim to further de-centralize mining control, making bitcoin consensus even harder to attack. -Undoubtedly, a serious consensus attack would erode confidence in bitcoin in the short term, possibly causing a significant price decline. However, the bitcoin network and software is constantly evolving, so consensus attacks would be met with immediate counter-measures by the bitcoin community, making bitcoin hardier, stealthier and more robust. +Undoubtedly, a serious consensus attack would erode confidence in bitcoin in the short term, possibly causing a significant price decline. However, the bitcoin network and software is constantly evolving, so consensus attacks would be met with immediate counter-measures by the bitcoin community, making bitcoin hardier, stealthier, and more robust. From f521a46225b4dffee12e1782f9222767ce2d2145 Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Wed, 20 Aug 2014 02:54:20 +0300 Subject: [PATCH 022/102] Add more missing commas --- ch09.asciidoc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ch09.asciidoc b/ch09.asciidoc index 45b3da9c..efc37147 100644 --- a/ch09.asciidoc +++ b/ch09.asciidoc @@ -1,9 +1,9 @@ [[ch9]] -== Alternative chains, currencies and applications +== Alternative chains, currencies, and applications Bitcoin was neither the beginning nor the end of the digital currency evolution. It came from twenty years of research in distributed systems and currencies and brought a revolutionary new technology into the space: the de-centralized consensus mechanism based on Proof-of-Work. The invention at the heart of bitcoin has ushered a wave of innovation in currencies, financial services, economics, distributed systems, voting systems, corporate governance, and contracts. -In this chapter we'll examine the many offshoots of the bitcoin and blockchain inventions, the alternative chains, currencies and applications built since the introduction of this technology in 2009. +In this chapter we'll examine the many offshoots of the bitcoin and blockchain inventions, the alternative chains, currencies, and applications built since the introduction of this technology in 2009. For every alt-coin mentioned in this chapter, 50 or more will go unmentioned, eliciting howls of anger from their creators and fans. The purpose of this chapter is not to evaluate or qualify alt-coins, or to mention the most "significant" ones based on some subjective assessment. Instead, we will highlight a few examples that show the breadth and variety of the ecosystem, noting the first-of-a-kind for each innovation or significant differentiation. Some of the most interesting examples of alt-coins are in fact complete failures from a monetary perspective. That perhaps makes them even more interesting for study and highlights the fact that this chapter is not to be used as an investment guide. @@ -13,11 +13,11 @@ With new coins introduced every day, it would be impossible not to miss some imp Bitcoin is an open source project and its code has been used as the basis for many other software projects. The most common form of software spawned from bitcoin's source code are alternative de-centralized currencies, or _alt-coins_, which use the same basic building blocks to implement digital currencies. -There are a number of protocol layers implemented on top of bitcoin's blockchain. These _meta-coins_, _meta-chains_, or _blockchain apps_ use the blockchain as an application platform or extend the bitcoin protocol by adding protocol layers. Examples include Colored Coins, Mastercoin and Counterparty. +There are a number of protocol layers implemented on top of bitcoin's blockchain. These _meta-coins_, _meta-chains_, or _blockchain apps_ use the blockchain as an application platform or extend the bitcoin protocol by adding protocol layers. Examples include Colored Coins, Mastercoin, and Counterparty. In the next section we will examine a few notable alt-coins, such as Litecoin, Dogecoin, Freicoin, Primecoin, Peercoin, Darkcoin, and Zerocoin. These alt-coins are notable for historical reasons or because they are good examples for a specific type of alt-coin innovation, not because they are the most valuable or "best" alt-coins. -In addition to the alt-coins, there are also a number of alternative blockchain implementations that are not really "coins", which I call _alt-chains_. These alt-chains implement a consensus algorithm and distributed ledger as a platform for contracts, name registration or other applications. Alt-chains use the same basic building blocks and sometimes also use a currency or token as a payment mechanism, but their primary purpose is not currency. We will look at Namecoin, Ethereum and NXT as examples of alt-chains. +In addition to the alt-coins, there are also a number of alternative blockchain implementations that are not really "coins", which I call _alt-chains_. These alt-chains implement a consensus algorithm and distributed ledger as a platform for contracts, name registration, or other applications. Alt-chains use the same basic building blocks and sometimes also use a currency or token as a payment mechanism, but their primary purpose is not currency. We will look at Namecoin, Ethereum, and NXT as examples of alt-chains. In addition to the Proof-of-Work consensus mechanism used in bitcoin, alternatives include experimental protocols based on Proof-of-Resource and Proof-of-Publishing. We will examine Maidsafe and Twister as examples of these consensus mechanisms. @@ -31,7 +31,7 @@ Meta-coins and meta-chains are software layers implemented on top of bitcoin, ei Colored Coins is a meta-protocol that overlays information on small amounts of bitcoin. A "colored" coin is an amount of bitcoin repurposed to express another asset. Imagine for example taking a $1 USD note and putting a stamp on it that said "This is a 1 share certificate of Acme Inc.". Now the $1 serves two purposes: it is a currency note and also a share certificate. Because it is more valuable as a share, you would not want to use it to buy candy, so effectively it is no longer useful as currency. Colored coins work in a same way by converting a specific, very small, amount of bitcoin into a traded certificate that represents another asset. The term "color" refers to the idea of giving special meaning through the addition of an attribute such as a color - it is a metaphor not an actual color association. There are no colors in colored coins. -Colored coins are managed by specialized "wallets" that record and interpret the metadata attached to the "colored" bitcoins. Using such a wallet, the user will convert an amount of bitcoins from uncolored currency, into colored coins, by adding a label that has a special meaning. For example, a label could represent stock certificates, coupons, real property, commodities, collectible tokens etc. It is entirely up to the users of colored coins to assign and interpret the meaning of the "color" associated with specific coins. To color the coins, the user defines the associated metadata, such as the type of issuance, whether it can be subdivided into smaller units, a symbol and description and other related information. Once colored, these coins can be bought and sold, subdivided, aggregated and receive dividend payments. The colored coins can also be "uncolored" to remove the special association and redeem them for their face-value in bitcoin. +Colored coins are managed by specialized "wallets" that record and interpret the metadata attached to the "colored" bitcoins. Using such a wallet, the user will convert an amount of bitcoins from uncolored currency, into colored coins, by adding a label that has a special meaning. For example, a label could represent stock certificates, coupons, real property, commodities, collectible tokens, etc. It is entirely up to the users of colored coins to assign and interpret the meaning of the "color" associated with specific coins. To color the coins, the user defines the associated metadata, such as the type of issuance, whether it can be subdivided into smaller units, a symbol and description, and other related information. Once colored, these coins can be bought and sold, subdivided, aggregated and receive dividend payments. The colored coins can also be "uncolored" to remove the special association and redeem them for their face-value in bitcoin. To demonstrate the use of colored coins, we have created a set of 20 colored coins with symbol "MasterBTC" that represent coupons for a free copy of this book. Each unit of MasterBTC is represented by these colored coins can now be sold or given to any bitcoin user with a colored-coin-capable wallet, who can then transfer them to others or redeem them with the issuer for a free copy of the book. This example of colored coins can be seen here: https://cpr.sm/FoykwrH6UY @@ -61,13 +61,13 @@ To demonstrate the use of colored coins, we have created a set of 20 colored coi ==== Mastercoin -Mastercoin is a protocol layer on top of bitcoin that supports a platform for various applications extending the bitcoin system. Mastercoin uses the currency MST as a token for conducting Mastercoin transactions but it is not primarily a currency. Rather it is a platform for building other things, such as user currencies, smart property tokens, de-centralized asset exchanges, contracts etc. Think of Mastercoin as an application-layer protocol on top of bitcoin's financial transaction transport-layer, just like HTTP runs on top of TCP. +Mastercoin is a protocol layer on top of bitcoin that supports a platform for various applications extending the bitcoin system. Mastercoin uses the currency MST as a token for conducting Mastercoin transactions but it is not primarily a currency. Rather it is a platform for building other things, such as user currencies, smart property tokens, de-centralized asset exchanges, contracts, etc. Think of Mastercoin as an application-layer protocol on top of bitcoin's financial transaction transport-layer, just like HTTP runs on top of TCP. Mastercoin operates primarily through transactions sent to and from a special bitcoin address called the "exodus" address (+1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P+), just like HTTP uses a specific TCP port (port 80) to differentiate its traffic from the rest of the TCP traffic. The Mastercoin protocol is gradually transitioning from using the specialized exodus address and multi-signatures to using the OP_RETURN bitcoin operator to encode transaction metadata. ==== Counterparty -Counterparty is another protocol layer implemented on top of bitcoin. Counterparty enables user currencies, tradable tokens, financial instruments, de-centralized asset exchanges and other features. Counterparty is implemented primarily using the OP_RETURN operator in bitcoin's scripting language to record metadata enhancing bitcoin transactions with additional meaning. Counterparty uses the currency XCP as a token for conducting Counterparty transactions. +Counterparty is another protocol layer implemented on top of bitcoin. Counterparty enables user currencies, tradable tokens, financial instruments, de-centralized asset exchanges, and other features. Counterparty is implemented primarily using the OP_RETURN operator in bitcoin's scripting language to record metadata enhancing bitcoin transactions with additional meaning. Counterparty uses the currency XCP as a token for conducting Counterparty transactions. === Alt-coins From 7c5bacd3033d5f28c4036cde5ee5de70a8b62948 Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Tue, 19 Aug 2014 18:43:29 -0700 Subject: [PATCH 023/102] Minor copyediting following merge from issue #109 --- preface.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/preface.asciidoc b/preface.asciidoc index 5e5ec4dd..c0741383 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -115,7 +115,7 @@ address (sometimes mistakenly referred to as a public key):: ((("bitcoin address"))) ((("address", see="bitcoin address"))) ((("public key", see="bitcoin address"))) - A bitcoin address is derived from a public key, and looks like +1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV+. Most addresses begin with a one, excepting multisignature addresses, which begin with a three. You can have as many as you like, share them so people can send you coins. + A bitcoin address is derived from a public key and looks like +1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV+. Most addresses begin with a one, except multisignature addresses which begin with a three. You can have as many addresses as you like and share them so people can send you coins. bitcoin:: ((("bitcoin"))) From a39956d520b009219e12e5c0db6ffb8b535ca2fa Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Tue, 19 Aug 2014 18:54:51 -0700 Subject: [PATCH 024/102] Reverting changes from Issue #109 back to its original --- preface.asciidoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/preface.asciidoc b/preface.asciidoc index c0741383..92455bbc 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -111,11 +111,11 @@ Watch us on YouTube: link:$$http://www.youtube.com/oreillymedia$$[] This quick glossary contains many of the terms used in relation to bitcoin. These terms are used throughout the book, so bookmark this for a quick reference and clarification. -address (sometimes mistakenly referred to as a public key):: +address (aka public key):: ((("bitcoin address"))) ((("address", see="bitcoin address"))) ((("public key", see="bitcoin address"))) - A bitcoin address is derived from a public key and looks like +1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV+. Most addresses begin with a one, except multisignature addresses which begin with a three. You can have as many addresses as you like and share them so people can send you coins. + A bitcoin address looks like +1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV+, they always start with a one. You can have as many as you like, share them so people can send you coins. bitcoin:: ((("bitcoin"))) From 0bf544abae4b015289e413821a177aadaf04d80d Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Wed, 20 Aug 2014 14:54:29 +0300 Subject: [PATCH 025/102] Another missing comma --- ch02.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch02.asciidoc b/ch02.asciidoc index e82b6113..64c4193d 100644 --- a/ch02.asciidoc +++ b/ch02.asciidoc @@ -1,7 +1,7 @@ [[ch02_bitcoin_overview]] == How Bitcoin Works -=== Transactions, Blocks, Mining and the Blockchain +=== Transactions, Blocks, Mining, and the Blockchain The bitcoin system, unlike traditional banking and payment systems, is based on de-centralized trust. Instead of a central trusted authority, in bitcoin, trust is achieved as an emergent property from the interactions of different participants in the bitcoin system. In this chapter we will examine bitcoin from a high-level by tracking a single transaction through the bitcoin system and watch as it becomes "trusted" and accepted by the bitcoin mechanism of distributed consensus and is finally recorded on the blockchain, the distributed ledger of all transactions. From 77ccfb08b1cf8cf1ef2364b4f4a2d83836eef059 Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Wed, 20 Aug 2014 08:21:43 -0700 Subject: [PATCH 026/102] Updating GitHub contributors --- preface.asciidoc | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/preface.asciidoc b/preface.asciidoc index 92455bbc..2b3cd840 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -198,16 +198,25 @@ Many contributors offered comments, corrections and additions to the early-relea ===== (Name - Github ID) -* *Minh T. Nguyen - enderminh: Github contribution editor* -* Erik Wahlström - erikwam -* Eric Winchell - winchell -* Richard Kiss - richardkiss -* Sergej Kotliar - ziggamon -* Nagaraj Hubli - nagarajhubli +* *Minh T. Nguyen - enderminh: Github contribution editor* +* Ed Eykholt - edeykholt * Michalis Kargakis - kargakis -* Ish Ot Jr. - ishotjr +* Erik Wahlström - erikwam +* Richard Kiss - richardkiss +* Eric Winchell - winchell +* Sergej Kotliar - ziggamon +* Nagaraj Hubli - nagarajhubli +* ethers * Alex Waters - alexwaters -* Mihail Russu - MihailRussu +* Mihail Russu - MihailRussu +* Ish Ot Jr. - ishotjr * James Addison - jayaddison -* Joe Bauers - joebauers -* Stephan Oeste - Emzy +* Nekomata - nekomata-3 +* Simon de la Rouviere - simondlr +* Chapman Shoop - belovachap +* Holger Schinzel - schinzelh +* effectsToCause - vericoin +* Stephan Oeste - Emzy +* Joe Bauers - joebauers +* Jason Bisterfeldt - jbisterfeldt +* Ed Leafe - EdLeafe From 185978a9f13d9ee826786caa616f9149427362c2 Mon Sep 17 00:00:00 2001 From: Bryan Gmyrek Date: Wed, 20 Aug 2014 15:52:26 -0700 Subject: [PATCH 027/102] fix superscript --- ch05.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch05.asciidoc b/ch05.asciidoc index b5032ed7..1274fcd0 100644 --- a/ch05.asciidoc +++ b/ch05.asciidoc @@ -103,7 +103,7 @@ The transaction scripting language, used in the locking script mentioned above, [options="header"] |======= |Size| Field | Description -| 8 bytes | Amount | Bitcoin Value in Satoshis (10^^-8 bitcoin) +| 8 bytes | Amount | Bitcoin Value in Satoshis (10^-8^ bitcoin) | 1-9 bytes (VarInt) | Locking-Script Size | Locking-Script length in bytes, to follow | Variable | Locking-Script | A script defining the conditions needed to spend the output |======= From 25af5c23bd296eae47feaa195abc6fee38deef83 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Fri, 22 Aug 2014 16:14:14 +0800 Subject: [PATCH 028/102] Update preface.asciidoc bitcoin address clearer explanation --- preface.asciidoc | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/preface.asciidoc b/preface.asciidoc index 2b3cd840..1fddda84 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -115,7 +115,7 @@ address (aka public key):: ((("bitcoin address"))) ((("address", see="bitcoin address"))) ((("public key", see="bitcoin address"))) - A bitcoin address looks like +1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV+, they always start with a one. You can have as many as you like, share them so people can send you coins. + A bitcoin address looks like +1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV+, they always start with a one. Just like you ask others to send an email to your email address, you would ask others to send you bitcoin to your bitcoin address. bitcoin:: ((("bitcoin"))) @@ -198,25 +198,25 @@ Many contributors offered comments, corrections and additions to the early-relea ===== (Name - Github ID) -* *Minh T. Nguyen - enderminh: Github contribution editor* -* Ed Eykholt - edeykholt +* *Minh T. Nguyen - enderminh: Github contribution editor* +* Ed Eykholt - edeykholt * Michalis Kargakis - kargakis -* Erik Wahlström - erikwam +* Erik Wahlström - erikwam * Richard Kiss - richardkiss * Eric Winchell - winchell * Sergej Kotliar - ziggamon -* Nagaraj Hubli - nagarajhubli -* ethers +* Nagaraj Hubli - nagarajhubli +* ethers * Alex Waters - alexwaters -* Mihail Russu - MihailRussu +* Mihail Russu - MihailRussu * Ish Ot Jr. - ishotjr * James Addison - jayaddison -* Nekomata - nekomata-3 -* Simon de la Rouviere - simondlr -* Chapman Shoop - belovachap -* Holger Schinzel - schinzelh +* Nekomata - nekomata-3 +* Simon de la Rouviere - simondlr +* Chapman Shoop - belovachap +* Holger Schinzel - schinzelh * effectsToCause - vericoin -* Stephan Oeste - Emzy -* Joe Bauers - joebauers -* Jason Bisterfeldt - jbisterfeldt +* Stephan Oeste - Emzy +* Joe Bauers - joebauers +* Jason Bisterfeldt - jbisterfeldt * Ed Leafe - EdLeafe From e8f4ab417aed7c60e9eb844b64d70c2a3dd00a9c Mon Sep 17 00:00:00 2001 From: Lornestar Date: Fri, 22 Aug 2014 16:24:20 +0800 Subject: [PATCH 029/102] Update preface.asciidoc I think it's better to explain the value and usage of a fee, instead of a more technical definition that identifies how it works. It is possible for a transaction to be processed without a fee. --- preface.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/preface.asciidoc b/preface.asciidoc index 1fddda84..d07a6ca6 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -147,7 +147,7 @@ difficulty re-targeting:: fees:: ((("fees"))) - An excess amount included in each transaction as a network fee or additional reward to the miner who finds the proof-of-work for the new block. Currently 0.5 mBTC minimum. + The sender of a transaction often includes a fee to the network for processing their requested transaction. Most transactions require a minimum fee of 0.5mBTC. hash:: ((("hash"))) From fb2fe84c862e6a02907e98e7ffe3bffd8a3dd57a Mon Sep 17 00:00:00 2001 From: Lornestar Date: Fri, 22 Aug 2014 16:42:00 +0800 Subject: [PATCH 030/102] Update preface.asciidoc Maintain consistency. If you're gonna show an example bitcoin address, should show an example private key. It also helps to understand it further when you can see an example. --- preface.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/preface.asciidoc b/preface.asciidoc index d07a6ca6..be8ed91d 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -176,7 +176,7 @@ reward:: secret key (aka private key):: ((("secret key"))) ((("private key", see="secret key"))) - The secret number that unlocks bitcoins sent to the corresponding address. + The secret number that unlocks bitcoins sent to the corresponding address. A secret key looks like +5J76sF8L5jTtzE96r66Sf8cka9y44wdpJjMwCxR3tzLh3ibVPxh+ transaction:: ((("transaction"))) From 97f37419f559a51ef9caf9e7e3afa247747764b5 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Fri, 22 Aug 2014 16:55:14 +0800 Subject: [PATCH 031/102] Update preface.asciidoc A clearer explanation of the value a wallet brings to a user --- preface.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/preface.asciidoc b/preface.asciidoc index be8ed91d..1666c07b 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -184,7 +184,7 @@ transaction:: wallet:: ((("wallet"))) - Software that holds all your addresses. Use it to send bitcoin and manage your keys. + Software that holds all your bitcoin addresses and secret keys. Use it to send, receive and store your bitcoin. ++++ From 4079a650cd2553cecfc516c1f9dbe0919ef9fd10 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Fri, 22 Aug 2014 17:02:02 +0800 Subject: [PATCH 032/102] Update ch01.asciidoc As I read through the history of Bitcoin section I kept asking when are you going to get to the part about Bitcoin. I think half of that section is really events leading up to Bitcoin, as well Bitcoin didn't have any history until it was invented. --- ch01.asciidoc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index f8e0ee5b..3fab0164 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -17,7 +17,7 @@ Behind the scenes, bitcoin is also the name of the protocol, a network and a dis In this chapter we'll get started by explaining some of the main concepts and terms, getting the necessary software and using bitcoin for simple transactions. In following chapters we'll start unwrapping the layers of technology that make bitcoin possible and examine the inner workings of the bitcoin network and protocol. -=== History of Bitcoin +=== Before Bitcoin? The emergence of viable digital money is closely linked to developments in cryptography. This is not surprising when one considers the fundamental challenges involved with using bits to represent value that can be exchanged for goods and services. Two fundamental questions for anyone accepting digital money are: @@ -36,7 +36,9 @@ Bitcoin represents the culmination of decades of research in cryptography and di * A public transaction ledger (the blockchain); * A de-centralized mathematical and deterministic currency issuance (distributed mining), and; * A de-centralized transaction verification system (transaction script). - + +=== What is Bitcoin? + Bitcoin was invented in 2008 by Satoshi Nakamoto with the publication of a paper titled "Bitcoin: A Peer-to-Peer Electronic Cash System". Satoshi Nakamoto combined several prior inventions such as b-money and HashCash to create a completely de-centralized electronic cash system that does not rely on a central authority for currency issuance or settlement and validation of transactions. The key innovation was to use a Proof-Of-Work algorithm to conduct a global "election" every 10 minutes, allowing the de-centralized network to arrive at _consensus_ about the state of transactions. This elegantly solves the issue of double-spend where a single currency unit can be spent twice. Previously, the double-spend problem was a weakness of digital currency and was addressed by clearing all transactions through a central clearinghouse. The bitcoin network started in 2009, based on a reference implementation published by Nakamoto and since revised by many other programmers. During the first four years of operation, the network has grown to include an enormous amount of Proof-Of-Work computation, thereby increasing its security and resilience. In 2013, the total market value of bitcoin's primary monetary supply measure (M0) is estimated at more than 10 billion US dollars. The largest transaction processed by the network was $150 million US dollars, transmitted instantly and processed without any fees. From 2b8040e4b0e6db20fd8578c3063180df8b315c40 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Fri, 22 Aug 2014 17:35:03 +0800 Subject: [PATCH 033/102] Update ch01.asciidoc accidentally put What is Bitcoin, for History of Bitcoin --- ch01.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index 3fab0164..b6639f6c 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -37,7 +37,7 @@ Bitcoin represents the culmination of decades of research in cryptography and di * A de-centralized mathematical and deterministic currency issuance (distributed mining), and; * A de-centralized transaction verification system (transaction script). -=== What is Bitcoin? +=== History of Bitcoin? Bitcoin was invented in 2008 by Satoshi Nakamoto with the publication of a paper titled "Bitcoin: A Peer-to-Peer Electronic Cash System". Satoshi Nakamoto combined several prior inventions such as b-money and HashCash to create a completely de-centralized electronic cash system that does not rely on a central authority for currency issuance or settlement and validation of transactions. The key innovation was to use a Proof-Of-Work algorithm to conduct a global "election" every 10 minutes, allowing the de-centralized network to arrive at _consensus_ about the state of transactions. This elegantly solves the issue of double-spend where a single currency unit can be spent twice. Previously, the double-spend problem was a weakness of digital currency and was addressed by clearing all transactions through a central clearinghouse. From 68fe6a3d29e8a86d22a814ad885c0960d1b0a71d Mon Sep 17 00:00:00 2001 From: Lornestar Date: Fri, 22 Aug 2014 17:38:58 +0800 Subject: [PATCH 034/102] Update ch01.asciidoc Identifying the potential pains that Bitcoin can solve, quantifying how big of an impact the innovation can really have. This should hopefully get the reader excited about the possible power their code can have, and encourage them even more to learn more about Bitcoin. --- ch01.asciidoc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ch01.asciidoc b/ch01.asciidoc index b6639f6c..759858d7 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -45,6 +45,16 @@ The bitcoin network started in 2009, based on a reference implementation publish Satoshi Nakamoto withdrew from the public in April of 2011, leaving the responsibility of developing the code and network to a thriving group of volunteers. The name Satoshi Nakamoto is an alias and the identity of the person or people behind this invention is currently unknown. However, neither Satoshi Nakamoto nor anyone else exerts control over the bitcoin system, which operates based on fully transparent mathematical principles. The invention itself is groundbreaking and has already spawned new science in the fields of distributed computing, economics and econometrics. +Bitcoin has the potential to fix many financial and economic problems that exist today due to flawed centralized systems. Some examples are: +* Hyperinflation that has severly hurt the economies of countries like Argentinian and Zimbabwe. +* 2.5 Billion unbanked around the world who do not benefit from the financial services most do in the developed world. +* Merchants getting charged 2-4% per transaction when accepting credit cards. +* Bank accounts getting frozen, or funds seized from accounts for various reasons. +* People sending money back home and getting charged remittance fees that can range from 2-20%. +* Lack of transparency when performing a wire transfer. +* World travelers getting charged exchange rate fees when using credit cards in foreign countries. +* Citizens of Cyprus having bank accounts frozen for two weeks to secure a Eurozone bailout. + .A Solution To a Distributed Computing Problem **** From d3d95954e5907aee0ffe7186396ed0088278256e Mon Sep 17 00:00:00 2001 From: Lornestar Date: Fri, 22 Aug 2014 18:10:53 +0800 Subject: [PATCH 035/102] Update ch01.asciidoc I took the Coinbase description from their own about page. They are not an exchange, since you do not exchange bitcoin with other users, you buy and sell it directly with Coinbase. The big value they bring is making it easy to use bitcoin. --- ch01.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index 759858d7..e43c1f07 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -147,7 +147,7 @@ Alice is now ready to start using her new bitcoin web-wallet. It is not possible to buy bitcoins at a bank or foreign exchange kiosks at this time. It is not possible to use a credit card to buy bitcoins, either. As of 2014, it is still quite difficult to acquire bitcoins in most countries. There are a number of specialized currency exchanges where you can buy and sell bitcoin in exchange for a local currency. These operate as web-based currency markets and include: * Bitstamp (bitstamp.net), a European currency market that supports several currencies including euros (EUR) and US dollars (USD) via wire transfer -* Coinbase (coinbase.com), a US-based currency market in California that supports US dollar exchange to and from bitcoin. Coinbase can connect to US checking accounts via the ACH system. +* Coinbase (coinbase.com), a US-based bitcoin wallet and platform where merchants and consumers can transact in bitcoin. Coinbase makes it easy to buy and sell bitcoin, allowing users to connect to US checking accounts via the ACH system. Crypto-currency exchanges such as these operate at the intersection of national currencies and crypto-currencies. As such, they are subject to national and international regulations and are often specific to a single country or economic area and specialize in the national currencies of that area. Your choice of currency exchange will be specific to the national currency you use and limited to the exchanges that operate within the legal jurisdiction of your country. Similar to opening a bank account, it takes several days or weeks to set up the necessary accounts with the above services because they require various forms of identification to comply with KYC (Know Your Customer) and AML (Anti-Money Laundering) banking regulations. Once you have an account on a bitcoin exchange, you can then buy or sell bitcoins quickly just as you could with foreign currency with a brokerage account. From 78b5d4f868b6cd5ff2fca5835d4af2160c16ea0e Mon Sep 17 00:00:00 2001 From: Lornestar Date: Fri, 22 Aug 2014 18:13:38 +0800 Subject: [PATCH 036/102] Update ch01.asciidoc Using a bitcoin ATM is another method of getting bitcoins. --- ch01.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/ch01.asciidoc b/ch01.asciidoc index e43c1f07..f6b450b0 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -158,6 +158,7 @@ There are three other methods for getting bitcoins as a new user: * Find a friend who has bitcoins and buy some from them directly. Many bitcoin users started this way. * Use a classified service like localbitcoins.com to find a seller in your area to buy bitcoins for cash in an in-person transaction. * Sell a product or service for bitcoin. If you're a programmer, sell your programming skills. If you have an online store, see <> to sell in bitcoin. +* Use a bitcoin ATM in your city. A map of bitcoin ATMs can be found at http://www.coindesk.com/bitcoin-atm-map/ Alice was introduced to bitcoin by a friend and so she has an easy way of getting her first bitcoin while she waits for her account on a California currency market to be verified and activated. From d30a644e32f4ef39c020d4ea8d46379e28428ec4 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Fri, 22 Aug 2014 19:27:06 +0800 Subject: [PATCH 037/102] Update ch01.asciidoc You can buy bitcoin using Purse.IO. However I do not think it's a good idea to add purse.io to ways you can buy bitcoin because there is a chance that at any moment Amazon can shut them down and then the comment will become obsolete. --- ch01.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index f6b450b0..55bcc0db 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -144,7 +144,7 @@ Alice is now ready to start using her new bitcoin web-wallet. [[getting_first_bitcoin]] ==== Getting your first bitcoins -It is not possible to buy bitcoins at a bank or foreign exchange kiosks at this time. It is not possible to use a credit card to buy bitcoins, either. As of 2014, it is still quite difficult to acquire bitcoins in most countries. There are a number of specialized currency exchanges where you can buy and sell bitcoin in exchange for a local currency. These operate as web-based currency markets and include: +It is not possible to buy bitcoins at a bank or foreign exchange kiosks at this time. As of 2014, it is still quite difficult to acquire bitcoins in most countries. There are a number of specialized currency exchanges where you can buy and sell bitcoin in exchange for a local currency. These operate as web-based currency markets and include: * Bitstamp (bitstamp.net), a European currency market that supports several currencies including euros (EUR) and US dollars (USD) via wire transfer * Coinbase (coinbase.com), a US-based bitcoin wallet and platform where merchants and consumers can transact in bitcoin. Coinbase makes it easy to buy and sell bitcoin, allowing users to connect to US checking accounts via the ACH system. From 0149c111e0b720aa46518ff010795e32abf9f28f Mon Sep 17 00:00:00 2001 From: Lornestar Date: Fri, 22 Aug 2014 19:32:13 +0800 Subject: [PATCH 038/102] Update ch01.asciidoc I personally use bitcoinwisdom all the time to watch/analyze prices over the exchanges --- ch01.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/ch01.asciidoc b/ch01.asciidoc index 55bcc0db..bad317ea 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -173,6 +173,7 @@ First, Joe has to figure out the exchange rate so that he can give the correct a * bitcoincharts.com, a market data listing service that shows the market rate of bitcoin across many exchanges around the globe, denominated in different local currencies * bitcoinaverage.com, a site that provides a simple view of the volume-weighted-average for each currency * ZeroBlock, a free Android and iOS application that can display a bitcoin price from different exchanges +* bitcoinwisdom.com, another market data listing service [[zeroblock-android]] .ZeroBlock - A bitcoin market-rate application for Android and iOS From 7586d4550fb16209887420a58478e780fa594b3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Wahlstr=C3=B6m?= Date: Fri, 22 Aug 2014 20:32:23 +0200 Subject: [PATCH 039/102] Update ch09.asciidoc Minor changes/typos --- ch09.asciidoc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ch09.asciidoc b/ch09.asciidoc index efc37147..4864993e 100644 --- a/ch09.asciidoc +++ b/ch09.asciidoc @@ -29,11 +29,11 @@ Meta-coins and meta-chains are software layers implemented on top of bitcoin, ei ==== Colored Coins -Colored Coins is a meta-protocol that overlays information on small amounts of bitcoin. A "colored" coin is an amount of bitcoin repurposed to express another asset. Imagine for example taking a $1 USD note and putting a stamp on it that said "This is a 1 share certificate of Acme Inc.". Now the $1 serves two purposes: it is a currency note and also a share certificate. Because it is more valuable as a share, you would not want to use it to buy candy, so effectively it is no longer useful as currency. Colored coins work in a same way by converting a specific, very small, amount of bitcoin into a traded certificate that represents another asset. The term "color" refers to the idea of giving special meaning through the addition of an attribute such as a color - it is a metaphor not an actual color association. There are no colors in colored coins. +Colored Coins is a meta-protocol that overlays information on small amounts of bitcoin. A "colored" coin is an amount of bitcoin repurposed to express another asset. Imagine for example taking a $1 USD note and putting a stamp on it that said "This is a 1 share certificate of Acme Inc.". Now the $1 serves two purposes: it is a currency note and also a share certificate. Because it is more valuable as a share, you would not want to use it to buy candy, so effectively it is no longer useful as currency. Colored coins work in the same way by converting a specific, very small, amount of bitcoin into a traded certificate that represents another asset. The term "color" refers to the idea of giving special meaning through the addition of an attribute such as a color - it is a metaphor not an actual color association. There are no colors in colored coins. -Colored coins are managed by specialized "wallets" that record and interpret the metadata attached to the "colored" bitcoins. Using such a wallet, the user will convert an amount of bitcoins from uncolored currency, into colored coins, by adding a label that has a special meaning. For example, a label could represent stock certificates, coupons, real property, commodities, collectible tokens, etc. It is entirely up to the users of colored coins to assign and interpret the meaning of the "color" associated with specific coins. To color the coins, the user defines the associated metadata, such as the type of issuance, whether it can be subdivided into smaller units, a symbol and description, and other related information. Once colored, these coins can be bought and sold, subdivided, aggregated and receive dividend payments. The colored coins can also be "uncolored" to remove the special association and redeem them for their face-value in bitcoin. +Colored coins are managed by specialized "wallets" that record and interpret the metadata attached to the "colored" bitcoins. Using such a wallet, the user will convert an amount of bitcoins from uncolored currency, into colored coins, by adding a label that has a special meaning. For example, a label could represent stock certificates, coupons, real property, commodities, collectible tokens, etc. It is entirely up to the users of colored coins to assign and interpret the meaning of the "color" associated with specific coins. To color the coins, the user defines the associated metadata, such as the type of issuance, whether it can be subdivided into smaller units, a symbol and description, and other related information. Once colored, these coins can be bought and sold, subdivided, aggregated and receive dividend payments. The colored coins can also be "uncolored" by removing the special association and redeem them for their face-value in bitcoin. -To demonstrate the use of colored coins, we have created a set of 20 colored coins with symbol "MasterBTC" that represent coupons for a free copy of this book. Each unit of MasterBTC is represented by these colored coins can now be sold or given to any bitcoin user with a colored-coin-capable wallet, who can then transfer them to others or redeem them with the issuer for a free copy of the book. This example of colored coins can be seen here: https://cpr.sm/FoykwrH6UY +To demonstrate the use of colored coins, we have created a set of 20 colored coins with symbol "MasterBTC" that represent coupons for a free copy of this book. Each unit of MasterBTC, represented by these colored coins can now be sold or given to any bitcoin user with a colored-coin-capable wallet, who can then transfer them to others or redeem them with the issuer for a free copy of the book. This example of colored coins can be seen here: https://cpr.sm/FoykwrH6UY .The metadata profile of the colored coins recorded as a coupon for a free copy of the book ==== @@ -119,7 +119,7 @@ Bitcoin has a few monetary parameters that give it distinctive characteristics o *Litecoin* -One of the first alt-coins, released in 2011, Litecoin is the second most successful digital currency after bitcoin. It's primary innovations were the use of _scrypt_ as the Proof-of-Work algorithm (inherited from Tenebrix) and the faster/lighter currency parameters. +One of the first alt-coins, released in 2011, Litecoin is the second most successful digital currency after bitcoin. Its primary innovations were the use of _scrypt_ as the Proof-of-Work algorithm (inherited from Tenebrix) and the faster/lighter currency parameters. * Block generation time: 2.5 minutes * Total currency: 84 million coins by 2140 @@ -137,7 +137,7 @@ Dogecoin was released in December of 2013, based on a fork of Litecoin. Dogecoin *Freicoin* -Freicoin was introduced in July 2012. It is a _demurrage currency_, meaning that is has a negative interest rate for stored value. Value stored in Freicoin is assessed a 4.5% APR fee, to encourage consumption and discourage hoarding of money. Freicoin is notable in that it implements a monetary policy that is the exact opposite of Bitcoin's deflationary policy. Freicoin has not seen success as a currency, but is an interesting example of the variety of monetary policies that can be expressed by alt-coins. +Freicoin was introduced in July 2012. It is a _demurrage currency_, meaning that it has a negative interest rate for stored value. Value stored in Freicoin is assessed a 4.5% APR fee, to encourage consumption and discourage hoarding of money. Freicoin is notable in that it implements a monetary policy that is the exact opposite of Bitcoin's deflationary policy. Freicoin has not seen success as a currency, but is an interesting example of the variety of monetary policies that can be expressed by alt-coins. * Block generation: 10 minutes * Total currency: 100 million coins by 2140 @@ -335,7 +335,7 @@ Namecoin registrations need to be updated every 36,000 blocks (approximately 200 ==== Bitmessage -Bitmessage is a bitcoin alt-chain that implements a de-centralized secure messaging service, essentially a server-less encrypted email system. Bitmessage allows users to compose and send message to each other, using a bitmessage address. The messages operate in much the same way as a bitcoin transaction, but they are transient - they do not persist beyond 2 days and if not delivered to the destination node in that time, they are lost. Senders and recipients are pseudonymous, they have no identifiers other than a bitmessage address, but are strongly authenticated, meaning that messages cannot be "spoofed". Bitmessages are encrypted to the recipient and therefore the bitmessage network is resistant to holistic surveillance - an eavesdropper has to compromise the recipient's device in order to intercept messages. +Bitmessage is a bitcoin alt-chain that implements a de-centralized secure messaging service, essentially a server-less encrypted email system. Bitmessage allows users to compose and send messages to each other, using a bitmessage address. The messages operate in much the same way as a bitcoin transaction, but they are transient - they do not persist beyond 2 days and if not delivered to the destination node in that time, they are lost. Senders and recipients are pseudonymous, they have no identifiers other than a bitmessage address, but are strongly authenticated, meaning that messages cannot be "spoofed". Bitmessages are encrypted to the recipient and therefore the bitmessage network is resistant to holistic surveillance - an eavesdropper has to compromise the recipient's device in order to intercept messages. ==== Ethereum From 62262c3cf72df648b66c5adc0258a5d310082558 Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Fri, 22 Aug 2014 12:09:39 -0700 Subject: [PATCH 040/102] Adding another comma following the changes from Issue #117 --- ch09.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch09.asciidoc b/ch09.asciidoc index 4864993e..9bf9079e 100644 --- a/ch09.asciidoc +++ b/ch09.asciidoc @@ -33,7 +33,7 @@ Colored Coins is a meta-protocol that overlays information on small amounts of b Colored coins are managed by specialized "wallets" that record and interpret the metadata attached to the "colored" bitcoins. Using such a wallet, the user will convert an amount of bitcoins from uncolored currency, into colored coins, by adding a label that has a special meaning. For example, a label could represent stock certificates, coupons, real property, commodities, collectible tokens, etc. It is entirely up to the users of colored coins to assign and interpret the meaning of the "color" associated with specific coins. To color the coins, the user defines the associated metadata, such as the type of issuance, whether it can be subdivided into smaller units, a symbol and description, and other related information. Once colored, these coins can be bought and sold, subdivided, aggregated and receive dividend payments. The colored coins can also be "uncolored" by removing the special association and redeem them for their face-value in bitcoin. -To demonstrate the use of colored coins, we have created a set of 20 colored coins with symbol "MasterBTC" that represent coupons for a free copy of this book. Each unit of MasterBTC, represented by these colored coins can now be sold or given to any bitcoin user with a colored-coin-capable wallet, who can then transfer them to others or redeem them with the issuer for a free copy of the book. This example of colored coins can be seen here: https://cpr.sm/FoykwrH6UY +To demonstrate the use of colored coins, we have created a set of 20 colored coins with symbol "MasterBTC" that represent coupons for a free copy of this book. Each unit of MasterBTC, represented by these colored coins, can now be sold or given to any bitcoin user with a colored-coin-capable wallet, who can then transfer them to others or redeem them with the issuer for a free copy of the book. This example of colored coins can be seen here: https://cpr.sm/FoykwrH6UY .The metadata profile of the colored coins recorded as a coupon for a free copy of the book ==== From 8e5111a3f96bc886e919733f0e42c5de0b13d22b Mon Sep 17 00:00:00 2001 From: Lornestar Date: Sat, 23 Aug 2014 18:51:25 +0800 Subject: [PATCH 041/102] Removing question marks from new titles --- ch01.asciidoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index bad317ea..7be428fa 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -17,7 +17,7 @@ Behind the scenes, bitcoin is also the name of the protocol, a network and a dis In this chapter we'll get started by explaining some of the main concepts and terms, getting the necessary software and using bitcoin for simple transactions. In following chapters we'll start unwrapping the layers of technology that make bitcoin possible and examine the inner workings of the bitcoin network and protocol. -=== Before Bitcoin? +=== Before Bitcoin The emergence of viable digital money is closely linked to developments in cryptography. This is not surprising when one considers the fundamental challenges involved with using bits to represent value that can be exchanged for goods and services. Two fundamental questions for anyone accepting digital money are: @@ -37,7 +37,7 @@ Bitcoin represents the culmination of decades of research in cryptography and di * A de-centralized mathematical and deterministic currency issuance (distributed mining), and; * A de-centralized transaction verification system (transaction script). -=== History of Bitcoin? +=== History of Bitcoin Bitcoin was invented in 2008 by Satoshi Nakamoto with the publication of a paper titled "Bitcoin: A Peer-to-Peer Electronic Cash System". Satoshi Nakamoto combined several prior inventions such as b-money and HashCash to create a completely de-centralized electronic cash system that does not rely on a central authority for currency issuance or settlement and validation of transactions. The key innovation was to use a Proof-Of-Work algorithm to conduct a global "election" every 10 minutes, allowing the de-centralized network to arrive at _consensus_ about the state of transactions. This elegantly solves the issue of double-spend where a single currency unit can be spent twice. Previously, the double-spend problem was a weakness of digital currency and was addressed by clearing all transactions through a central clearinghouse. From 4fb73060300dd9f6791090386a4218962ffc87d9 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Sat, 23 Aug 2014 19:28:12 +0800 Subject: [PATCH 042/102] improved explanation of confirmations identifying that the additional blocks must be removed first --- ch01.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index 7be428fa..0cd53e7e 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -198,7 +198,7 @@ If Alice has a smartphone or laptop with her, she will also be able to see the t .Confirmations **** -At first, Alice's address will show the transaction from Joe as "Unconfirmed". This means that the transaction has been propagated to the network but has not yet been included in the bitcoin transaction ledger, known as the blockchain. To be included, the transaction must be "picked up" by a miner and included in a block of transactions. Once a miner has discovered a solution to the Proof-of-Work algorithm for this block (in approximately 10 minutes), the transactions within the block will be accepted as "confirmed" by the network and can be spent. The transaction is seen by all instantly, but it is only "trusted" by all when it is included in a newly mined block. The more blocks mined after that block, the more trusted it is, as more and more computation is "piled" on top of it. +At first, Alice's address will show the transaction from Joe as "Unconfirmed". This means that the transaction has been propagated to the network but has not yet been included in the bitcoin transaction ledger, known as the blockchain. To be included, the transaction must be "picked up" by a miner and included in a block of transactions. Once a miner has discovered a solution to the Proof-of-Work algorithm for this block (in approximately 10 minutes), the transactions within the block will be accepted as "confirmed" by the network and can be spent. The transaction is seen by all instantly, but it is only "trusted" by all when it is included in a newly mined block. As more blocks are mined after that block, the lower the risk that block can be removed or modified because the additional blocks must be removed first requiring additional computational power. **** Alice is now the proud owner of 0.10 bitcoin which she can spend. In the next chapter we will look at her first purchase with bitcoin and examine the underlying transaction and propagation technologies in more detail. From 9c67b2c88119b0adaadf5e0703f0695322d76530 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Sat, 23 Aug 2014 19:45:27 +0800 Subject: [PATCH 043/102] Added BIP to the quick glossary list BIPs are mentioned throughout the book, so I figure many readers will be asking what does BIP0021 mean? --- preface.asciidoc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/preface.asciidoc b/preface.asciidoc index 1666c07b..324fdc22 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -117,6 +117,10 @@ address (aka public key):: ((("public key", see="bitcoin address"))) A bitcoin address looks like +1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV+, they always start with a one. Just like you ask others to send an email to your email address, you would ask others to send you bitcoin to your bitcoin address. +bip:: +((("bip"))) + Bitcoin Improvement Proposals. A set of proposals that members of the bitcoin community have submitted to improve bitcoin. For example BIP0021 is a proposal to improve the bitcoin URI scheme. + bitcoin:: ((("bitcoin"))) The name of the currency unit (the coin), the network and the software From bd1cf52ff02abcb5883ccb4ee48e273f9c618148 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Sat, 23 Aug 2014 20:11:55 +0800 Subject: [PATCH 044/102] New block every 10 minutes is average They may think it's written into the rules of bitcoin that a new block is discovered every 10 min, instead of on average every 10 min. --- ch02.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch02.asciidoc b/ch02.asciidoc index 64c4193d..0ebea795 100644 --- a/ch02.asciidoc +++ b/ch02.asciidoc @@ -222,7 +222,7 @@ Jing started mining in 2010 using a very fast desktop computer to find a suitabl === Mining transactions in blocks -A transaction transmitted across the network is not verified until it becomes part of the global distributed ledger, the blockchain. Every ten minutes, miners generate a new block that contains all the transactions since the last block. New transactions are constantly flowing into the network from user wallets and other applications. As these are seen by the bitcoin network nodes, they get added to a temporary "pool" of unverified transactions maintained by each node. As miners build a new block, they add unverified transactions from this pool to a new block and then attempt to solve a very hard problem (aka Proof-of-Work) to prove the validity of that new block. The process of mining is explained in detail in <>. +A transaction transmitted across the network is not verified until it becomes part of the global distributed ledger, the blockchain. Every ten minutes on average, miners generate a new block that contains all the transactions since the last block. New transactions are constantly flowing into the network from user wallets and other applications. As these are seen by the bitcoin network nodes, they get added to a temporary "pool" of unverified transactions maintained by each node. As miners build a new block, they add unverified transactions from this pool to a new block and then attempt to solve a very hard problem (aka Proof-of-Work) to prove the validity of that new block. The process of mining is explained in detail in <>. Transactions are added to the new block, prioritized by the highest-fee transactions first and a few other criteria. Each miner starts the process of mining a new block of transactions as soon as they receive the previous block from the network, knowing they have lost that previous round of competition. They immediately create a new block, fill it with transactions and the fingerprint of the previous block and start calculating the Proof-of-Work for the new block. Each miner includes a special transaction in their block, one that pays their own bitcoin address a reward of newly created bitcoins (currently 25 BTC per block). If they find a solution that makes that block valid, they "win" this reward because their successful block is added to the global blockchain and the reward transaction they included becomes spendable. Jing, who participates in a mining pool, has set up his software to create new blocks that assign the reward to a pool address. From there, a share of the reward is distributed to Jing and other miners in proportion to the amount of work they contributed in the last round. From c3190cd32c479f2195125215b8f6f628041c7372 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Sat, 23 Aug 2014 20:28:20 +0800 Subject: [PATCH 045/102] Improved description of keys ownership --- ch04.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch04.asciidoc b/ch04.asciidoc index 619ed8c0..82b7d80e 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -5,7 +5,7 @@ Ownership of bitcoin is established through _digital keys_, _bitcoin addresses_ and _digital signatures_. The digital keys are not actually stored in the network, but are instead created and stored by end-users in a file, or simple database, called a _wallet_. The digital keys in a user's wallet are completely independent of the bitcoin protocol and can be generated and managed by the user's wallet software without reference to the blockchain or access to the Internet. Keys enable many of the interesting properties of bitcoin, including de-centralized trust and control, ownership attestation and the cryptographic-proof security model. -The digital keys within each user's wallet allow the user to sign transactions, thereby providing cryptographic proof of the ownership of the bitcoins sourced by the transaction. Keys come in pairs consisting of a private (secret) and public key. Think of the public key as similar to a bank account number and the private key as similar to the secret PIN number, or signature on a cheque that provides control over the account. These digital keys are very rarely seen by the users of bitcoin. For the most part, they are stored inside the wallet file and managed by the bitcoin wallet software. +Every bitcoin transaction requires a valid signature to be included in the blockchain, which can only be generated with valid digital keys, therefore anyone with a copy of those keys has control of the bitcoin in that account. Keys come in pairs consisting of a private (secret) and public key. Think of the public key as similar to a bank account number and the private key as similar to the secret PIN number, or signature on a cheque that provides control over the account. These digital keys are very rarely seen by the users of bitcoin. For the most part, they are stored inside the wallet file and managed by the bitcoin wallet software. In the payment portion of a bitcoin transaction, the recipient's public key is represented by its digital fingerprint, called a _bitcoin address_, which is used in the same way as the beneficiary name on a cheque (i.e. "Pay to the order of"). In most cases, a bitcoin address is generated from and corresponds to a public key. However, not all bitcoin addresses represent public keys; they can also represent other beneficiaries such as scripts, as we will see later in this chapter. This way, bitcoin addresses abstract the recipient of funds, making transaction destinations flexible, similar to paper cheques: a single payment instrument that can be used to pay into people's accounts, company accounts, pay for bills or pay to cash. The bitcoin address is the only representation of the keys that users will routinely see, as this is the part they need to share with the world. From 604c90590fb51bd931f9006c6ed1c2a37494c82f Mon Sep 17 00:00:00 2001 From: Jameson Lopp Date: Sat, 23 Aug 2014 16:27:37 -0400 Subject: [PATCH 046/102] fixing market cap description for Dogecoin --- ch09.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch09.asciidoc b/ch09.asciidoc index 3b829c69..c9514ae9 100644 --- a/ch09.asciidoc +++ b/ch09.asciidoc @@ -131,7 +131,7 @@ One of the first alt-coins, released in 2011, Litecoin is the second most succes Dogecoin was released in December of 2013, based on a fork of Litecoin. Dogecoin is notable because it has a monetary policy of rapid issuance and a very high currency cap, to encourage spending and tipping. Dogecoin is also notable because it was started as a joke but became quite popular, with a large and active community, before declining rapidly in 2014. * Block generation time: 60 seconds -* Total currency: 100,000,000,000 (100 trillion) Doge by 2015 +* Total currency: 100,000,000,000 (100 billion) Doge by 2015 * Consensus algorithm: scrypt Proof-of-Work * Market capitalization: $12 million USD in Summer 2014 From 7ce978a224eb19e277a6cb459d295f00974d19e8 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Sun, 24 Aug 2014 10:17:07 +0800 Subject: [PATCH 047/102] Explaining satoshi denomination differently I think it's really difficult to know that 100 millionth is 8 decimal places --- ch05.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch05.asciidoc b/ch05.asciidoc index 1274fcd0..2130a64e 100644 --- a/ch05.asciidoc +++ b/ch05.asciidoc @@ -70,7 +70,7 @@ The fundamental building block of a bitcoin transaction is an _unspent transacti There are no accounts or balances in bitcoin, there are only _unspent transaction outputs_ (UTXO) scattered in the blockchain. ==== -Unlike cash, which exists in specific denominations (one dollar, five dollars, ten dollars), a UTXO can have any arbitrary value denominated as a multiple of satoshis (the smallest bitcoin unit equal to 100 millionth of a bitcoin). While UTXO can be any arbitrary value, once created it is indivisible just like a coin that cannot be cut in half. If a UTXO is larger than the desired value of a transaction, it must still be consumed in its entirety and change must be generated in the transaction. In other words, if you have a 20 bitcoin UTXO and want to pay 1 bitcoin, your transaction must consume the entire 20 bitcoin UTXO and produce two outputs: one paying 1 bitcoin to your desired recipient and another paying 19 bitcoin in change back to your wallet. As a result, most bitcoin transactions will generate change. +A UTXO can have an arbitrary value denominated as a multiple of satoshis. Just like dollars can be divided down to two decimal places as cents, bitcoins can be divided down to eight decimal places as satoshis. While UTXO can be any arbitrary value, once created it is indivisible just like a coin that cannot be cut in half. If a UTXO is larger than the desired value of a transaction, it must still be consumed in its entirety and change must be generated in the transaction. In other words, if you have a 20 bitcoin UTXO and want to pay 1 bitcoin, your transaction must consume the entire 20 bitcoin UTXO and produce two outputs: one paying 1 bitcoin to your desired recipient and another paying 19 bitcoin in change back to your wallet. As a result, most bitcoin transactions will generate change. In simple terms, transactions consume the sender's available UTXO and create new UTXO locked to the recipient's bitcoin address. Imagine a shopper buying a $1.50 beverage, reaching into their wallet and trying to find a combination of coins and bank notes to cover the $1.50 cost. The shopper will choose exact change if available (a dollar bill and two quarters), or a combination of smaller denominations (six quarters), or if necessary, a larger unit such as a five dollar bank note. If they hand too much money, say $5, to the shop owner they will expect $3.50 change, which they will return to their wallet and have available for future transactions. Similarly, a bitcoin transaction must be created from a user's UTXO in whatever denominations that user has available. They cannot cut a UTXO in half any more than they can cut a dollar bill in half and use it as currency. The user's wallet application will typically select from the user's available UTXO various units to compose an amount greater than or equal to the desired transaction amount. As with real life, the bitcoin application can use several strategies to satisfy the purchase amount: combining several smaller units, finding exact change, or using a single unit larger than the transaction value and making change. From 9cd1c1a2d73e9298578f31dd0c25a7306c1880a4 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Sun, 24 Aug 2014 10:41:34 +0800 Subject: [PATCH 048/102] blockchain size is 20+Gigs --- ch06.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch06.asciidoc b/ch06.asciidoc index f8f2421e..04511a9a 100644 --- a/ch06.asciidoc +++ b/ch06.asciidoc @@ -129,7 +129,7 @@ Full nodes are nodes that maintain a full blockchain with all transactions. More Full blockchain nodes maintain a complete and up-to-date copy of the bitcoin blockchain with all the transactions, which they independently build and verify, starting with the very first block (genesis block) and building up to the latest known block in the network. A full blockchain node can independently and authoritatively verify any transaction without recourse or reliance on any other node or source of information. The full blockchain node relies on the network to receive updates about new blocks of transactions, which it then verifies and incorporates into its local copy of the blockchain. -Running a full blockchain node gives you the pure bitcoin experience: independent verification of all transactions without the need to rely on, or trust, any other systems. It's easy to tell if you're running a full node because it requires several gigabytes of persistent storage (disk space) to store the full blockchain. If you need a lot of disk and it takes 2-3 days to "sync" to the network, you are running a full node. That is the price of complete independence and freedom from central authority. +Running a full blockchain node gives you the pure bitcoin experience: independent verification of all transactions without the need to rely on, or trust, any other systems. It's easy to tell if you're running a full node because it requires 20 plus gigabytes of persistent storage (disk space) to store the full blockchain. If you need a lot of disk and it takes 2-3 days to "sync" to the network, you are running a full node. That is the price of complete independence and freedom from central authority. There are a few alternative implementations of full-blockchain bitcoin clients, built using different programming languages and software architectures. However, the most common implementation is the reference client Bitcoin Core, also known as the Satoshi Client. More than 90% of the nodes on the bitcoin network run various versions of Bitcoin Core. It is identified as "Satoshi" in the sub-version string sent in the +version+ message and shown by the command +getpeerinfo+ as we saw above, for example +/Satoshi:0.8.6/+. From bf732ce72d895d047286b6c5873ba00728bf20cf Mon Sep 17 00:00:00 2001 From: Lornestar Date: Sun, 24 Aug 2014 20:27:22 +0800 Subject: [PATCH 049/102] Clearer explanation of merkle tree value --- ch07.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch07.asciidoc b/ch07.asciidoc index 470ef968..56563e10 100644 --- a/ch07.asciidoc +++ b/ch07.asciidoc @@ -145,7 +145,7 @@ Each block in the bitcoin blockchain contains a summary of all the transactions A _Merkle Tree_, also known as a _Binary Hash Tree_ is a data structure used for efficiently summarizing and verifying the integrity of large sets of data. Merkle Trees are binary trees containing cryptographic hashes. The term "tree" is used in computer science to describe a branching data structure, but these trees are usually displayed upside down with the "root" at the top and the "leaves" at the bottom of a diagram, as you will see in the examples that follow. -Merkle trees are used in bitcoin to summarize all the transactions in a block, producing an overall digital fingerprint of the entire set of transactions, which can be used to prove that a transaction is included in the set. A merkle tree is constructed by recursively hashing pairs of nodes until there is only one hash, called the _root_, or _merkle root_. The cryptographic hash algorithm used in bitcoin's merkle trees is SHA256 applied twice, also known as double-SHA256. +Merkle trees are used in bitcoin to summarize all the transactions in a block, producing an overall digital fingerprint of the entire set of transactions, providing a very efficient process to verify if a transaction is included in a block. A merkle tree is constructed by recursively hashing pairs of nodes until there is only one hash, called the _root_, or _merkle root_. The cryptographic hash algorithm used in bitcoin's merkle trees is SHA256 applied twice, also known as double-SHA256. When N data elements are hashed and summarized in a Merkle Tree, you can check to see if any one data element is included in the tree with at most +2*log~2~(N)+ calculations, making this a very efficient data structure. From cc9ba043b1668be4c4d3fbec2b2755b7119e0457 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Mon, 25 Aug 2014 01:48:47 +0800 Subject: [PATCH 050/102] Quick summary of miners role --- ch08.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch08.asciidoc b/ch08.asciidoc index 6f686ee6..3e0e1e66 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -4,7 +4,7 @@ [[mining]] === Introduction - Mining and Consensus -Mining is the process by which new bitcoin is added to the money supply. Mining also serves to secure the bitcoin system against fraudulent transactions or transactions spending the same amount of bitcoin more than once, known as a double-spend. Miners act as a decentralized clearinghouse, validating new transactions and recording them on the global ledger. A new block, containing transactions that occurred since the last block, is "mined" every 10 minutes, thereby adding those transactions to the blockchain. Transactions that become part of a block and added to the blockchain are considered "confirmed", which allows the new owners of bitcoin to spend the bitcoin they received in those transactions. Miners receive two types of reward for mining: new coins created with each new block and transaction fees from all the transactions included in the block. To earn this reward, the miners compete to solve a difficult mathematical problem based on a cryptographic hash algorithm. The solution to the problem, called the Proof-of-Work, is included in the new block and acts as proof that the miner expended significant computing effort. The competition to solve the Proof-of-Work algorithm to earn reward and the right to record transactions on the blockchain is the basis for bitcoin's security model. +Mining is the process by which new bitcoin is added to the money supply. Mining also serves to secure the bitcoin system against fraudulent transactions or transactions spending the same amount of bitcoin more than once, known as a double-spend. Miners provide processing power to the bitcoin network in exchange for the opportunity to be rewarded bitcoin. Miners act as a decentralized clearinghouse, validating new transactions and recording them on the global ledger. A new block, containing transactions that occurred since the last block, is "mined" every 10 minutes, thereby adding those transactions to the blockchain. Transactions that become part of a block and added to the blockchain are considered "confirmed", which allows the new owners of bitcoin to spend the bitcoin they received in those transactions. Miners receive two types of reward for mining: new coins created with each new block and transaction fees from all the transactions included in the block. To earn this reward, the miners compete to solve a difficult mathematical problem based on a cryptographic hash algorithm. The solution to the problem, called the Proof-of-Work, is included in the new block and acts as proof that the miner expended significant computing effort. The competition to solve the Proof-of-Work algorithm to earn reward and the right to record transactions on the blockchain is the basis for bitcoin's security model. The process of new coin generation is called mining, because the reward is designed to simulate diminishing returns, just like mining for precious metals. Bitcoin's money supply is created through mining, similar to how a central bank issues new money by printing bank notes. The amount of newly created bitcoin a miner can add to a block decreases approximately every four years (or precisely every 210,000 blocks). It started at 50 bitcoin per block in January of 2009 and halved to 25 bitcoin per block in November of 2012. It will halve again to 12.5 bitcoin per block sometime in 2016. Based on this formula, bitcoin mining rewards decrease exponentially until approximately the year 2140 when all bitcoin (20.99999998 million) will have been issued. After 2140, no new bitcoins are issued. From 9322a60b831c927479b3ef8758f7a888964c4f08 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Mon, 25 Aug 2014 01:50:03 +0800 Subject: [PATCH 051/102] Most won't know what a clearing house is --- ch08.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch08.asciidoc b/ch08.asciidoc index 3e0e1e66..0f81d186 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -4,7 +4,7 @@ [[mining]] === Introduction - Mining and Consensus -Mining is the process by which new bitcoin is added to the money supply. Mining also serves to secure the bitcoin system against fraudulent transactions or transactions spending the same amount of bitcoin more than once, known as a double-spend. Miners provide processing power to the bitcoin network in exchange for the opportunity to be rewarded bitcoin. Miners act as a decentralized clearinghouse, validating new transactions and recording them on the global ledger. A new block, containing transactions that occurred since the last block, is "mined" every 10 minutes, thereby adding those transactions to the blockchain. Transactions that become part of a block and added to the blockchain are considered "confirmed", which allows the new owners of bitcoin to spend the bitcoin they received in those transactions. Miners receive two types of reward for mining: new coins created with each new block and transaction fees from all the transactions included in the block. To earn this reward, the miners compete to solve a difficult mathematical problem based on a cryptographic hash algorithm. The solution to the problem, called the Proof-of-Work, is included in the new block and acts as proof that the miner expended significant computing effort. The competition to solve the Proof-of-Work algorithm to earn reward and the right to record transactions on the blockchain is the basis for bitcoin's security model. +Mining is the process by which new bitcoin is added to the money supply. Mining also serves to secure the bitcoin system against fraudulent transactions or transactions spending the same amount of bitcoin more than once, known as a double-spend. Miners provide processing power to the bitcoin network in exchange for the opportunity to be rewarded bitcoin. Miners validate new transactions and recording them on the global ledger. A new block, containing transactions that occurred since the last block, is "mined" every 10 minutes, thereby adding those transactions to the blockchain. Transactions that become part of a block and added to the blockchain are considered "confirmed", which allows the new owners of bitcoin to spend the bitcoin they received in those transactions. Miners receive two types of reward for mining: new coins created with each new block and transaction fees from all the transactions included in the block. To earn this reward, the miners compete to solve a difficult mathematical problem based on a cryptographic hash algorithm. The solution to the problem, called the Proof-of-Work, is included in the new block and acts as proof that the miner expended significant computing effort. The competition to solve the Proof-of-Work algorithm to earn reward and the right to record transactions on the blockchain is the basis for bitcoin's security model. The process of new coin generation is called mining, because the reward is designed to simulate diminishing returns, just like mining for precious metals. Bitcoin's money supply is created through mining, similar to how a central bank issues new money by printing bank notes. The amount of newly created bitcoin a miner can add to a block decreases approximately every four years (or precisely every 210,000 blocks). It started at 50 bitcoin per block in January of 2009 and halved to 25 bitcoin per block in November of 2012. It will halve again to 12.5 bitcoin per block sometime in 2016. Based on this formula, bitcoin mining rewards decrease exponentially until approximately the year 2140 when all bitcoin (20.99999998 million) will have been issued. After 2140, no new bitcoins are issued. From 06155bcb20b748729a18bcc2b7f6523dc52f7788 Mon Sep 17 00:00:00 2001 From: Lornestar Date: Mon, 25 Aug 2014 01:52:05 +0800 Subject: [PATCH 052/102] Never heard that ex nihilo before, no need --- ch08.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch08.asciidoc b/ch08.asciidoc index 0f81d186..89b2cd0e 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -16,7 +16,7 @@ In this chapter, we will first examine mining as a monetary supply mechanism and ==== Bitcoin Economics and Currency Creation -Bitcoins are "minted" during the creation of each block at a fixed and diminishing rate. Each block, generated on average every 10 minutes, contains entirely new bitcoins, created ex nihilo (from nothing). Every 210,000 blocks or approximately every four years the currency issuance rate is decreased by 50%. For the first four years of operation of the network, each block contained 50 new bitcoin. In November of 2012, the new bitcoin issuance rate was decreased to 25 bitcoin per block and it will decrease again to 12.5 bitcoin at block 420,000, which will be mined sometime in 2016. The rate of new coins decreases like this exponentially over 64 "halvings", until block 13,230,000 (mined approximately in year 2137) when it reaches the minimum currency unit of 1 satoshi. Finally, after 13.44 million blocks, in approximately 2140, all 2,099,999,997,690,000 satoshis, or almost 21 million bitcoin will be issued. Thereafter, blocks will contain no new bitcoin, and miners will be rewarded solely through the transaction fees. +Bitcoins are "minted" during the creation of each block at a fixed and diminishing rate. Each block, generated on average every 10 minutes, contains entirely new bitcoins, created from nothing. Every 210,000 blocks or approximately every four years the currency issuance rate is decreased by 50%. For the first four years of operation of the network, each block contained 50 new bitcoin. In November of 2012, the new bitcoin issuance rate was decreased to 25 bitcoin per block and it will decrease again to 12.5 bitcoin at block 420,000, which will be mined sometime in 2016. The rate of new coins decreases like this exponentially over 64 "halvings", until block 13,230,000 (mined approximately in year 2137) when it reaches the minimum currency unit of 1 satoshi. Finally, after 13.44 million blocks, in approximately 2140, all 2,099,999,997,690,000 satoshis, or almost 21 million bitcoin will be issued. Thereafter, blocks will contain no new bitcoin, and miners will be rewarded solely through the transaction fees. [[bitcoin_money_supply]] .Supply of bitcoin currency over time based on a geometrically decreasing issuance rate From 6383f127f9ae077c28c53905ca4d0714b9ad887d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20J=C3=A4ckel?= Date: Sun, 24 Aug 2014 23:04:33 +0200 Subject: [PATCH 053/102] SPV stands for Simplified Payment Verification --- ch02.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch02.asciidoc b/ch02.asciidoc index 64c4193d..774ded91 100644 --- a/ch02.asciidoc +++ b/ch02.asciidoc @@ -241,7 +241,7 @@ image::images/Blockchain_height_and_depth.png["Alice's transaction included in a === Spending the transaction -Now that Alice's transaction has been embedded in the blockchain as part of a block, it is part of the distributed ledger of bitcoin and visible to all bitcoin applications. Each bitcoin client can independently verify the transaction as valid and spendable. Full-index clients can track the source of the funds from the moment the bitcoins were first generated in a block, incrementally from transaction to transaction, until they reach Bob's address. Lightweight clients can do a Simple Payment Verification (See SPV:<>) by confirming that the transaction is in the blockchain and has several blocks mined after it, thus providing assurance that the network accepts it as valid. +Now that Alice's transaction has been embedded in the blockchain as part of a block, it is part of the distributed ledger of bitcoin and visible to all bitcoin applications. Each bitcoin client can independently verify the transaction as valid and spendable. Full-index clients can track the source of the funds from the moment the bitcoins were first generated in a block, incrementally from transaction to transaction, until they reach Bob's address. Lightweight clients can do a Simplified Payment Verification (See SPV:<>) by confirming that the transaction is in the blockchain and has several blocks mined after it, thus providing assurance that the network accepts it as valid. Bob can now spend the output from this and other transactions, by creating his own transactions that reference these outputs as their inputs and assign them new ownership. For example, Bob can pay a contractor or supplier by transferring value from Alice's coffee cup payment to these new owners. Most likely, Bob's bitcoin software will aggregate many small payments into a larger payment, perhaps concentrating all the day's bitcoin revenue into a single transaction. This would move the various payments into a single address, utilized as the store's general "checking" account. For a diagram of an aggregating transaction, see <>. From 21a09c26a2b54654cfe2c8751c51c5b6d4bfa13e Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Sun, 24 Aug 2014 14:40:02 -0700 Subject: [PATCH 054/102] Changing 'Simple Payment Verification' to 'Simplified Payment Verification' in all other chapters to per issue #124. --- ch06.asciidoc | 8 ++++---- ch07.asciidoc | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ch06.asciidoc b/ch06.asciidoc index f8f2421e..3cabf0f6 100644 --- a/ch06.asciidoc +++ b/ch06.asciidoc @@ -21,7 +21,7 @@ image::images/FullNodeReferenceClient_Small.png["FullNodeReferenceClient_Small"] All nodes include the routing function to participate in the network and may include other functionality. All nodes validate and propagate transactions and blocks, and discover and maintain connections to peers. In the full node example above, the routing function is indicated by an orange circle named "Network Routing Node". -Some nodes, called full nodes, also maintain a complete and up-to-date copy of the blockchain. Full nodes can autonomously and authoritatively verify any transaction without external reference. Some nodes maintain only a subset of the blockchain and verify transactions using a method called _Simple Payment Verification_ or SPV. These nodes are known as SPV or Lightweight nodes. In the full node example above, the full node blockchain database function is indicated by a blue circle named "Full Blockchain". SPV nodes are drawn without the blue circle, showing that they do not have a full copy of the blockchain. +Some nodes, called full nodes, also maintain a complete and up-to-date copy of the blockchain. Full nodes can autonomously and authoritatively verify any transaction without external reference. Some nodes maintain only a subset of the blockchain and verify transactions using a method called _Simplified Payment Verification_ or SPV. These nodes are known as SPV or Lightweight nodes. In the full node example above, the full node blockchain database function is indicated by a blue circle named "Full Blockchain". SPV nodes are drawn without the blue circle, showing that they do not have a full copy of the blockchain. Mining nodes compete to create new blocks by running specialized hardware to solve the proof-of-work algorithm. Some mining nodes are also full nodes, maintaining a full copy of the blockchain while others are lightweight nodes participating in pool mining and depending on a pool server to maintain a full node. The mining function is shown in the full node above as a black circle named "Miner". @@ -149,15 +149,15 @@ This process of comparing the local blockchain with the peers and retrieving any .Node synchronizing the blockchain by retrieving blocks from a peer image::images/InventorySynchronization.png["InventorySynchronization"] -=== Simple Payment Verification (SPV) Nodes +=== Simplified Payment Verification (SPV) Nodes -Not all nodes have the ability to store the full blockchain. Many bitcoin clients are designed to run on space- and power-constrained devices, such as smartphones, tablets or embedded systems. For such devices, a _simple payment verification_ (SPV) method is used to allow them to operate without storing the full blockchain. These types of clients are called SPV clients or lightweight clients. As bitcoin adoption surges, the SPV node is becoming the most common form of bitcoin node, especially for bitcoin wallets. +Not all nodes have the ability to store the full blockchain. Many bitcoin clients are designed to run on space- and power-constrained devices, such as smartphones, tablets or embedded systems. For such devices, a _simplified payment verification_ (SPV) method is used to allow them to operate without storing the full blockchain. These types of clients are called SPV clients or lightweight clients. As bitcoin adoption surges, the SPV node is becoming the most common form of bitcoin node, especially for bitcoin wallets. SPV nodes download only the block headers and do not download the transactions included in each block. The resulting chain of blocks, without transactions, is 1,000 times smaller than the full blockchain. SPV nodes cannot construct a full picture of all the UTXOs that are available for spending, as they do not know about all the transactions on the network. SPV nodes verify transactions using a slightly different methodology that relies on peers to provide partial views of relevant parts of the blockchain on-demand. As an analogy, a full node is like a tourist in a strange city, equipped with a detailed map of every street and every address. By comparison, an SPV node is like a tourist in a strange city asking random strangers for turn-by-turn directions while knowing only one main avenue. While both tourists can verify the existence of a street by visiting it, the tourist without a map doesn't know what lies down any of the side streets and doesn't know what other streets exist. Positioned in front of 23 Church Street, the tourist without a map cannot know if there are a dozen other "23 Church Street" addresses in the city and whether this is the right one. The map-less tourist's best chance is to ask enough people and hope some of them are not trying to mug the tourist. -Simple Payment Verification verifies transactions by reference to their _depth_ in the blockchain instead of their _height_. Whereas a full-blockchain node will construct a fully verified chain of thousands of blocks and transactions reaching down the blockchain (back in time) all the way to the genesis block, an SPV node will verify the chain of all blocks and link that chain to the transaction of interest. +Simplified Payment Verification verifies transactions by reference to their _depth_ in the blockchain instead of their _height_. Whereas a full-blockchain node will construct a fully verified chain of thousands of blocks and transactions reaching down the blockchain (back in time) all the way to the genesis block, an SPV node will verify the chain of all blocks and link that chain to the transaction of interest. For example, when examining a transaction in block 300,000, a full node links all 300,000 blocks down to the genesis block and builds a full database of UTXO, establishing the validity of the transaction by confirming that the UTXO remains unspent. An SPV node cannot validate whether the UTXO is unspent. Instead, the SPV node will establish a link between the transaction and the block that contains it, using a Merkle Path (see <>). Then, the SPV node waits until it sees the six blocks 300,001 through 300,006 piled on top of the block containing the transaction and verifies it by establishing its depth under blocks 300,006 to 300,001. The fact that other nodes on the network accepted block 300,000 and then did the necessary work to produce 6 more blocks on top of it is proof, by proxy, that the transaction was not a double-spend. diff --git a/ch07.asciidoc b/ch07.asciidoc index 470ef968..997fcaf3 100644 --- a/ch07.asciidoc +++ b/ch07.asciidoc @@ -194,11 +194,11 @@ The efficiency of merkle trees becomes obvious as the scale increases. For examp | 65,535 transactions | 16 megabytes | 16 hashes | 512 bytes |======= -As you can see from the table above, while the block size increases rapidly, from 4KB with 16 transactions to a block size of 16 MB to fit 65,535 transactions, the merkle path required to prove the inclusion of a transaction increases much more slowly, from 128 bytes to only 512 bytes. With merkle trees, a node can download just the block headers (80 bytes per block) and still be able to identify a transaction's inclusion in a block by retrieving a small merkle path from a full node, without storing or transmitting the vast majority of the blockchain which may be several gigabytes in size. Nodes which do not maintain a full blockchain, called Simple Payment Verification or SPV nodes use merkle paths to verify transactions without downloading full blocks. +As you can see from the table above, while the block size increases rapidly, from 4KB with 16 transactions to a block size of 16 MB to fit 65,535 transactions, the merkle path required to prove the inclusion of a transaction increases much more slowly, from 128 bytes to only 512 bytes. With merkle trees, a node can download just the block headers (80 bytes per block) and still be able to identify a transaction's inclusion in a block by retrieving a small merkle path from a full node, without storing or transmitting the vast majority of the blockchain which may be several gigabytes in size. Nodes which do not maintain a full blockchain, called Simplified Payment Verification or SPV nodes use merkle paths to verify transactions without downloading full blocks. -=== Merkle Trees and Simple Payment Verification (SPV) +=== Merkle Trees and Simplified Payment Verification (SPV) -Merkle trees are used extensively by Simple Payment Verification nodes. SPV nodes don't have all transactions and do not download full blocks, just block headers. In order to verify that a transaction is included in a block, without having to download all the transactions in the block, they use an _authentication path_, or merkle path. +Merkle trees are used extensively by Simplified Payment Verification nodes. SPV nodes don't have all transactions and do not download full blocks, just block headers. In order to verify that a transaction is included in a block, without having to download all the transactions in the block, they use an _authentication path_, or merkle path. Consider for example an SPV node that is interested in incoming payments to an address contained in its wallet. The SPV node will establish a bloom filter on its connections to peers to limit the transactions received to only those containing addresses of interest. When a peer sees a transaction that matches the bloom filter, it will send that block using a +merkleblock+ message. The +merkleblock+ message contains the block header as well as a merkle path that links the transaction of interest to the merkle root in the block. The SPV node can use this merkle path to connect the transaction to the block and verify that the transaction is included in the block. The SPV node also uses the block header to link the block to the rest of the blockchain. The combination of these two links, between the transaction and block, and between the block and blockchain, proves that the transaction is recorded in the blockchain. All in all, the SPV node will have received less than a kilobyte of data for the block header and merkle path, an amount of data that is more than a thousand times less than a full block (about 1 megabyte currently). From 2d50ed1acacb473de86b2d4c0e03d42754374d75 Mon Sep 17 00:00:00 2001 From: "amacdonald@oreilly.com" Date: Mon, 25 Aug 2014 07:34:40 -0700 Subject: [PATCH 055/102] Updated book.asciidoc --- book.asciidoc | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/book.asciidoc b/book.asciidoc index 9b2b82e2..642b8b53 100644 --- a/book.asciidoc +++ b/book.asciidoc @@ -2,6 +2,24 @@ = Mastering Bitcoin +include::preface.asciidoc[] + +include::ch01.asciidoc[] + +include::ch02.asciidoc[] + +include::ch03.asciidoc[] + +include::ch04.asciidoc[] + +include::ch05.asciidoc[] + +include::ch06.asciidoc[] + +include::ch07.asciidoc[] + include::ch08.asciidoc[] -include::ch09.asciidoc[] \ No newline at end of file +include::ch09.asciidoc[] + +include::appdx01.asciidoc[] \ No newline at end of file From 770115bab2c4382c394df4b99e88ad8cbd16fcfd Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Mon, 25 Aug 2014 10:53:48 -0400 Subject: [PATCH 056/102] removed section describing the economic benefits of bitcoin. Do not want to add political and economic statements that are not easily substantiated and seem off-topic. --- ch01.asciidoc | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index 0cd53e7e..a819686c 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -45,16 +45,6 @@ The bitcoin network started in 2009, based on a reference implementation publish Satoshi Nakamoto withdrew from the public in April of 2011, leaving the responsibility of developing the code and network to a thriving group of volunteers. The name Satoshi Nakamoto is an alias and the identity of the person or people behind this invention is currently unknown. However, neither Satoshi Nakamoto nor anyone else exerts control over the bitcoin system, which operates based on fully transparent mathematical principles. The invention itself is groundbreaking and has already spawned new science in the fields of distributed computing, economics and econometrics. -Bitcoin has the potential to fix many financial and economic problems that exist today due to flawed centralized systems. Some examples are: -* Hyperinflation that has severly hurt the economies of countries like Argentinian and Zimbabwe. -* 2.5 Billion unbanked around the world who do not benefit from the financial services most do in the developed world. -* Merchants getting charged 2-4% per transaction when accepting credit cards. -* Bank accounts getting frozen, or funds seized from accounts for various reasons. -* People sending money back home and getting charged remittance fees that can range from 2-20%. -* Lack of transparency when performing a wire transfer. -* World travelers getting charged exchange rate fees when using credit cards in foreign countries. -* Citizens of Cyprus having bank accounts frozen for two weeks to secure a Eurozone bailout. - .A Solution To a Distributed Computing Problem **** From e0cd0073e5ccc114c2f4b1e9829f2756368f67e5 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Mon, 25 Aug 2014 11:23:46 -0400 Subject: [PATCH 057/102] Gavin Andresen's comments and corrections. --- ch05.asciidoc | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/ch05.asciidoc b/ch05.asciidoc index 2130a64e..9b42220c 100644 --- a/ch05.asciidoc +++ b/ch05.asciidoc @@ -201,7 +201,11 @@ A locking script is an encumbrance placed on an output, and it specifies the con An unlocking script is a script that "solves", or satisfies, the conditions placed on an output by a locking script and allows the output to be spent. Unlocking scripts are part of every transaction input and most of the time they contain a digital signature produced by the user's wallet from their private key. Historically, the unlocking script is called _scriptSig_, because it usually contained a digital signature. In this book we refer to it as an "unlocking script" to acknowledge the much broader range of locking script requirements, as not all unlocking scripts must contain signatures. As mentioned above, in most bitcoin applications the source code will refer to the unlocking script as "scriptSig". -Every bitcoin client will validate transactions by executing the locking and unlocking scripts together. For each input in the transaction, the validation software will first retrieve the UTXO referenced by the input. That UTXO contains a locking script defining the conditions required to spend it. The validation software will then take the unlocking script contained in the input that is attempting to spend this UTXO and concatenate them. The locking script is added to the end of the unlocking script and then the entire combined script is executed using the script execution engine. If the result of executing the combined script is "TRUE", the unlocking script has succeeded in resolving the conditions imposed by the locking script and therefore the input is a valid authorization to spend the UTXO. If any result other than "TRUE" remains after execution of the combined script, the input is invalid as it has failed to satisfy the spending conditions placed on the UTXO. Note that the UTXO is permanently recorded in the blockchain, and therefore is invariable and is unaffected by failed attempts to spend it by reference in a new transaction. Only a valid transaction that correctly satisfies the conditions of the UTXO results in the UTXO being marked as "spent" and removed from the set of available (unspent) UTXO. +Every bitcoin client will validate transactions by executing the locking and unlocking scripts together. For each input in the transaction, the validation software will first retrieve the UTXO referenced by the input. That UTXO contains a locking script defining the conditions required to spend it. The validation software will then take the unlocking script contained in the input that is attempting to spend this UTXO and execute the two scripts. + +In the original bitcoin client, the unlocking and locking scripts were concatenated and executed in sequence. For security reasons, this was changed in 2010, because of a vulnerability that allowed a malformed unlocking script to push data onto the stack and corrupt the locking script. In the current implementation the scripts are executed separately with the stack transferred between the two executions, as described below. + +First, the unlocking script is executed, using the stack execution engine. If the unlocking script executed without errors (e.g it has no "dangling" operators leftover), the main stack (not the alternate stack) is copied and the locking script is executed. If the result of executing the locking script with the stack data copied from the unlocking script is "TRUE", the unlocking script has succeeded in resolving the conditions imposed by the locking script and therefore the input is a valid authorization to spend the UTXO. If any result other than "TRUE" remains after execution of the combined script, the input is invalid as it has failed to satisfy the spending conditions placed on the UTXO. Note that the UTXO is permanently recorded in the blockchain, and therefore is invariable and is unaffected by failed attempts to spend it by reference in a new transaction. Only a valid transaction that correctly satisfies the conditions of the UTXO results in the UTXO being marked as "spent" and removed from the set of available (unspent) UTXO. Below is an example of the unlocking and locking scripts for the most common type of bitcoin transaction (a payment to a public key hash), showing the combined script resulting from the concatenation of the unlocking and locking scripts prior to script validation: @@ -315,7 +319,7 @@ image::images/Tx_Script_P2PubKeyHash_2.png["Tx_Script_P2PubKeyHash_2"] [[p2pk]] ==== Pay-to-Public-Key -Pay-to-Public-Key is a simpler form of a bitcoin payment than Pay-to-Public-Key-Hash. With this script form, the public key itself is stored in the locking script, rather than a public-key-hash as with P2PKH above, which is much shorter. The disadvantage of this form of locking script is that it consumes more space in the blockchain to store these types of payments, because a public key is 264 or 520 bits long (depending on whether it is compressed), whereas a public key hash is only 160 bits long. For legacy compatibility, Pay-to-Public-Key is used in all coinbase generation transactions, the transactions that pay the reward to the miners. +Pay-to-Public-Key is a simpler form of a bitcoin payment than Pay-to-Public-Key-Hash. With this script form, the public key itself is stored in the locking script, rather than a public-key-hash as with P2PKH above, which is much shorter. Pay-to-Public-Key-Hash was invented by Satoshi to make bitcoin addresses shorter, for ease of use. Pay-to-Public-Key is now most often seen in coinbase transactions, generated by older mining software that has not been updated to use P2PKH. A Pay-to-Public-Key locking script looks like this: ---- @@ -385,7 +389,7 @@ where the data portion is limited to 40 bytes and most often represents a hash, Keep in mind that there is no "unlocking script" that corresponds to OP_RETURN that could possibly be used to "spend" an OP_RETURN output. The whole point of OP_RETURN is that you can't spend the money locked in that output and therefore it does not need to be held in the UTXO set as potentially spendable - OP_RETURN is _provably un-spendable_. OP_RETURN is usually an output with a zero bitcoin amount, since any bitcoin assigned to such an output is effectively lost forever. If an OP_RETURN is encountered by the script validation software, it results immediately in halting the execution of the validation script and marking the transaction as invalid. Thus, if you accidentally reference an OP_RETURN output as an input in a transaction, that transaction is invalid. -A valid transaction can have only one OP_RETURN output. However, a single OP_RETURN output can be combined in a transaction with outputs of any other type. +A standard transaction (one that conforms to the +isStandard()+ checks) can have only one OP_RETURN output. However, a single OP_RETURN output can be combined in a transaction with outputs of any other type. [[p2sh]] ==== Pay to Script Hash (P2SH) @@ -404,7 +408,7 @@ While multi-signature scripts are a powerful feature, they are cumbersome to use Pay-to-Script-Hash (P2SH) was developed to resolve these practical difficulties and to make the use of complex scripts as easy as a payment to a bitcoin address. With P2SH payments, the complex locking script is replaced with its digital fingerprint, a cryptographic hash. When a transaction attempting to spend the UTXO is presented later, it must contain the script that matches the hash, in addition to the unlocking script. In simple terms, P2SH means "pay to a script matching this hash, a script which will be presented later when this output is spent". -In P2SH transactions, the locking script that is replaced by a hash is referred to as the _redeemScript_ because it is presented to the system at redemption time rather than as a locking script. +In P2SH transactions, the locking script that is replaced by a hash is referred to as the _redeem script_ because it is presented to the system at redemption time rather than as a locking script. [[without_p2sh]] .Complex Script without P2SH @@ -417,11 +421,11 @@ In P2SH transactions, the locking script that is replaced by a hash is referred .Complex Script as P2SH |======= | Redeem Script | 2 PubKey1 PubKey2 PubKey3 PubKey4 PubKey5 5 OP_CHECKMULTISIG -| Locking Script | OP_HASH160 <20-byte hash of redeemScript> OP_EQUAL -| Unlocking Script | Sig1 Sig2 redeemScript +| Locking Script | OP_HASH160 <20-byte hash of redeem script> OP_EQUAL +| Unlocking Script | Sig1 Sig2 redeem script |======= -As you can see from the tables above, with P2SH the complex script that details the conditions for spending the output (redeemScript) is not presented in the locking script. Instead, only a hash of it is in the locking script and the redeemScript itself is presented later, as part of the unlocking script when the output is spent. This shifts the burden in fees and complexity from the sender to the recipient (spender) of the transaction. +As you can see from the tables above, with P2SH the complex script that details the conditions for spending the output (redeem script) is not presented in the locking script. Instead, only a hash of it is in the locking script and the redeem script itself is presented later, as part of the unlocking script when the output is spent. This shifts the burden in fees and complexity from the sender to the recipient (spender) of the transaction. Let's look at Mohammed's company, their complex multi-signature script and the resulting P2SH scripts. @@ -451,17 +455,17 @@ A P2SH transaction locks the output to this hash instead of the longer script, u ---- OP_HASH160 54c557e07dde5bb6cb791c7a540e0a4796f5e97e OP_EQUAL ---- -which, as you can see is much shorter. Instead of "pay to this 5-key multi-signature script", the P2SH equivalent transaction is "pay to a script with this hash". A customer making a payment to Mohammed's company need only include this much shorter locking script in their payment. When Mohammed wants to spend this UTXO, they must present the original redeemScript (the one whose hash locked the UTXO) and the signatures necessary to unlock it, like this: +which, as you can see is much shorter. Instead of "pay to this 5-key multi-signature script", the P2SH equivalent transaction is "pay to a script with this hash". A customer making a payment to Mohammed's company need only include this much shorter locking script in their payment. When Mohammed wants to spend this UTXO, they must present the original redeem script (the one whose hash locked the UTXO) and the signatures necessary to unlock it, like this: ---- <2 PK1 PK2 PK3 PK4 PK5 5 OP_CHECKMULTISIG> ---- -The two scripts are combined in two stages. First, the redeemScript is checked against the locking script to make sure the hash matches: +The two scripts are combined in two stages. First, the redeem script is checked against the locking script to make sure the hash matches: ---- -<2 PK1 PK2 PK3 PK4 PK5 5 OP_CHECKMULTISIG> OP_HASH160 OP_EQUAL +<2 PK1 PK2 PK3 PK4 PK5 5 OP_CHECKMULTISIG> OP_HASH160 OP_EQUAL ---- -If the redeemScript hash matches, then the unlocking script is executed on its own, to unlock the redeemScript: +If the redeem script hash matches, then the unlocking script is executed on its own, to unlock the redeem script: ---- 2 PK1 PK2 PK3 PK4 PK5 5 OP_CHECKMULTISIG ---- @@ -481,19 +485,21 @@ The Pay-to-Script-Hash feature offers the following benefits compared to the dir * P2SH shifts the burden of constructing the script to the recipient not the sender * P2SH shifts the burden in data storage for the long script from the output (which is in the UTXO set and therefore impacts memory) to the input (only stored on the blockchain) * P2SH shifts the burden in data storage for the long script from the present time (payment) to a future time (when it is spent) -* P2SH shifts the transaction fee cost of a long script from the sender to the recipient who has to include the long redeemScript to spend it +* P2SH shifts the transaction fee cost of a long script from the sender to the recipient who has to include the long redeem script to spend it ===== Redeem Script and isStandard Validation -Pay-to-Script-Hash is currently limited to the standard types of bitcoin transaction scripts, by the +isStandard()+ function. That means that the redeemScript presented in the spending transaction must be one of the standard types: P2PK, P2PKH or Multi-Sig, excluding OP_RETURN and P2SH itself. You cannot reference a P2SH script inside a redeemScript and you can't use an OP_RETURN inside a P2SH redeemScript. +Prior to version 0.9.2 of the Bitcoin Core client, Pay-to-Script-Hash was limited to the standard types of bitcoin transaction scripts, by the +isStandard()+ function. That means that the redeem script presented in the spending transaction could only be one of the standard types: P2PK, P2PKH or Multi-Sig, excluding OP_RETURN and P2SH itself. -This limitation of redeemScript to only standard transaction scripts is temporary and will likely be removed in future versions of the bitcoin reference implementation, allowing the use of any valid script inside a P2SH redeemScript. You will still not be able to put a P2SH inside a P2SH redeemScript, because the P2SH specification is not recursive. You will still not be able to use OP_RETURN in a redeemScript because OP_RETURN cannot be redeemed by definition. But you will be able someday to use all the other operators to create a vast range of complex and novel scripts that can be used as redeemScripts and referenced as P2SH payment to their hash. +As of version 0.9.2 of the Bitcoin Core client, P2SH transactions can contain any valid script, making the P2SH standard much more flexible and allowing for experimentation with many novel and complex types of transactions. -Note that since the redeemScript is not presented to the network until you attempt to spend a P2SH output, if you lock an output with the hash of a non-standard transaction it will be processed as valid. However, you will not be able to spend it as the spending transaction which includes the redeemScript will not be accepted, as it is non-standard. This creates a risk, as you can lock bitcoin in a P2SH which cannot be later spent. The network will accept the P2SH encumbrance even if it corresponds to a non-standard or invalid redeemScript, because the script hash gives no indication of the script it represents. +Note that you are not able to put a P2SH inside a P2SH redeem script, because the P2SH specification is not recursive. You are also still not be able to use OP_RETURN in a redeem script because OP_RETURN cannot be redeemed by definition. + +Note that since the redeem script is not presented to the network until you attempt to spend a P2SH output, if you lock an output with the hash of an invalid transaction it will be processed regardless. However, you will not be able to spend it as the spending transaction which includes the redeem script will not be accepted, as it is an invalid script. This creates a risk, because you can lock bitcoin in a P2SH which cannot be later spent. The network will accept the P2SH encumbrance even if it corresponds to an invalid redeem script, because the script hash gives no indication of the script it represents. [WARNING] ==== -P2SH locking scripts contain the hash of a redeemScript which gives no clues as to the content of the redeemScript itself. The P2SH transaction will be considered valid and accepted even if the redeemScript is invalid or non-standard. You may accidentally lock bitcoin in such a way that it cannot later be spent. +P2SH locking scripts contain the hash of a redeem script which gives no clues as to the content of the redeem script itself. The P2SH transaction will be considered valid and accepted even if the redeem script is invalid. You may accidentally lock bitcoin in such a way that it cannot later be spent. ==== [[tx_script_ops]] From 209e6a808ce3aa903dd3f5f079d8b9a28b312197 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Mon, 25 Aug 2014 11:36:44 -0400 Subject: [PATCH 058/102] Amir Taaki's comments and corrections --- ch02.asciidoc | 2 +- ch04.asciidoc | 6 +++--- ch05.asciidoc | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ch02.asciidoc b/ch02.asciidoc index 9d9d7a6a..fe16d750 100644 --- a/ch02.asciidoc +++ b/ch02.asciidoc @@ -233,7 +233,7 @@ https://blockchain.info/block-height/277316 A few minutes later, a new block, #277317 is mined by another miner. As this new block is based on the previous block (#277316) that contained Alice's transaction, it added even more computation on top of that block, thereby strengthening the trust in those transactions. One block mined on top of the one containing the transaction is called "one confirmation" for that transaction. As the blocks pile on top of each other, it becomes exponentially harder to reverse the transaction, thereby making it more and more trusted by the network. -In the diagram below we can see block #277316, which contains Alice's transaction. Below it are 277,315 blocks, linked to each other in a chain of blocks (blockchain) all the way back to block #0, the genesis block. Over time, as the "height" in blocks increases, so does the computation difficulty for each block and the chain as a whole. The blocks mined after the one that contains Alice's transaction act as further assurance, as they pile on more computation in a longer and longer chain. The blocks above count as "confirmations". By convention, any block with more than 6 confirmations is considered irrevocable, as it would require an immense amount of computation to invalidate and re-calculate six blocks. We will examine the process of mining and the way it builds trust in more detail in <>. +In the diagram below we can see block #277316, which contains Alice's transaction. Below it are 277,316 blocks (including block #0), linked to each other in a chain of blocks (blockchain) all the way back to block #0, the genesis block. Over time, as the "height" in blocks increases, so does the computation difficulty for each block and the chain as a whole. The blocks mined after the one that contains Alice's transaction act as further assurance, as they pile on more computation in a longer and longer chain. The blocks above count as "confirmations". By convention, any block with more than 6 confirmations is considered irrevocable, as it would require an immense amount of computation to invalidate and re-calculate six blocks. We will examine the process of mining and the way it builds trust in more detail in <>. [[block-alice]] .Alice's transaction included in block #277,316 diff --git a/ch04.asciidoc b/ch04.asciidoc index 82b7d80e..d167b03b 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -469,13 +469,13 @@ image::images/non-deterministic_wallet.png["non-deterministic wallet"] Deterministic, or "seeded" wallets are wallets that contain private keys which are all derived from a common seed, through the use of a one-way hash function. The seed is a randomly generated number which is combined with other data, such as an index number or "chain code" (see <>) to derive the private keys. In a deterministic wallet, the seed is sufficient to recover all the derived keys and therefore a single backup at creation time is sufficient. The seed is also sufficient for a wallet export or import, allowing for easy migration of all the user's keys between different wallet implementations. -==== Mnemonic Code Words (BIP0039) +==== Mnemonic Code Words (DRAFT:BIP0039) Mnemonic codes are English word sequences that are generated from a random sequence and used to produce a seed for use in deterministic wallets. The sequence of words is sufficient to re-create the seed and from there re-create the wallet and all the derived keys. A wallet application that implements deterministic wallets with mnemonic code will show the user a sequence of 12-24 words when first creating a wallet. That sequence of words is the wallet backup and can be used to recover and re-create all the keys in the same or any compatible wallet application. -The common standard for mnemonic codes is defined in Bitcoin Improvement Proposal 39 (see <>), currently in Draft status. +Mnemonic codes are defined in Bitcoin Improvement Proposal 39 (see <>), currently in Draft status. Note that BIP0039 is a draft proposal and not a standard. Specifically, there is a different standard, with a different set of words used by the Electrum wallet and _predating_ BIP0039. BIP0039 is used by the Trezor wallet and a few other wallets but is incompatible with Electrum's implementation. -The standard defines the creation of a mnemonic code and seed as a follows: +BIP0039 defines the creation of a mnemonic code and seed as a follows: 1. Create a random sequence (entropy) of 128 to 256 bits 2. Create a checksum of the random sequence by taking the first few bits of its SHA256 hash diff --git a/ch05.asciidoc b/ch05.asciidoc index 9b42220c..e8d12bae 100644 --- a/ch05.asciidoc +++ b/ch05.asciidoc @@ -259,7 +259,7 @@ As we saw in the step-by-step example above, when this script is executed the re [TIP] ==== -Transactions are valid if the top result on the stack is TRUE (1), any other non-zero value or if the stack is empty after script execution. Transactions are invalid if the top value on the stack is FALSE (0) or if script execution is halted explicitly by an operator, such as OP_VERIFY, OP_RETURN or a conditional terminator such as OP_ENDIF. See <> for details. +Transactions are valid if the top result on the stack is TRUE (noted as +{0x01}+), any other non-zero value or if the stack is empty after script execution. Transactions are invalid if the top value on the stack is FALSE (a zero-length empty value, noted as +{}+) or if script execution is halted explicitly by an operator, such as OP_VERIFY, OP_RETURN or a conditional terminator such as OP_ENDIF. See <> for details. ==== ==== Turing Incompleteness From 7622f0c77f456d92ee41da473d38325ae701a383 Mon Sep 17 00:00:00 2001 From: Bryan Gmyrek Date: Mon, 25 Aug 2014 18:32:24 -0700 Subject: [PATCH 059/102] grammar fix --- ch08.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch08.asciidoc b/ch08.asciidoc index 89b2cd0e..0b9253b2 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -4,7 +4,7 @@ [[mining]] === Introduction - Mining and Consensus -Mining is the process by which new bitcoin is added to the money supply. Mining also serves to secure the bitcoin system against fraudulent transactions or transactions spending the same amount of bitcoin more than once, known as a double-spend. Miners provide processing power to the bitcoin network in exchange for the opportunity to be rewarded bitcoin. Miners validate new transactions and recording them on the global ledger. A new block, containing transactions that occurred since the last block, is "mined" every 10 minutes, thereby adding those transactions to the blockchain. Transactions that become part of a block and added to the blockchain are considered "confirmed", which allows the new owners of bitcoin to spend the bitcoin they received in those transactions. Miners receive two types of reward for mining: new coins created with each new block and transaction fees from all the transactions included in the block. To earn this reward, the miners compete to solve a difficult mathematical problem based on a cryptographic hash algorithm. The solution to the problem, called the Proof-of-Work, is included in the new block and acts as proof that the miner expended significant computing effort. The competition to solve the Proof-of-Work algorithm to earn reward and the right to record transactions on the blockchain is the basis for bitcoin's security model. +Mining is the process by which new bitcoin is added to the money supply. Mining also serves to secure the bitcoin system against fraudulent transactions or transactions spending the same amount of bitcoin more than once, known as a double-spend. Miners provide processing power to the bitcoin network in exchange for the opportunity to be rewarded bitcoin. Miners validate new transactions and record them on the global ledger. A new block, containing transactions that occurred since the last block, is "mined" every 10 minutes, thereby adding those transactions to the blockchain. Transactions that become part of a block and added to the blockchain are considered "confirmed", which allows the new owners of bitcoin to spend the bitcoin they received in those transactions. Miners receive two types of reward for mining: new coins created with each new block and transaction fees from all the transactions included in the block. To earn this reward, the miners compete to solve a difficult mathematical problem based on a cryptographic hash algorithm. The solution to the problem, called the Proof-of-Work, is included in the new block and acts as proof that the miner expended significant computing effort. The competition to solve the Proof-of-Work algorithm to earn reward and the right to record transactions on the blockchain is the basis for bitcoin's security model. The process of new coin generation is called mining, because the reward is designed to simulate diminishing returns, just like mining for precious metals. Bitcoin's money supply is created through mining, similar to how a central bank issues new money by printing bank notes. The amount of newly created bitcoin a miner can add to a block decreases approximately every four years (or precisely every 210,000 blocks). It started at 50 bitcoin per block in January of 2009 and halved to 25 bitcoin per block in November of 2012. It will halve again to 12.5 bitcoin per block sometime in 2016. Based on this formula, bitcoin mining rewards decrease exponentially until approximately the year 2140 when all bitcoin (20.99999998 million) will have been issued. After 2140, no new bitcoins are issued. From fb85f8a14d76c29ccd07fac4f93e9751f0c26f75 Mon Sep 17 00:00:00 2001 From: Bryan Gmyrek Date: Mon, 25 Aug 2014 19:24:24 -0700 Subject: [PATCH 060/102] more grammar fixes --- ch08.asciidoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ch08.asciidoc b/ch08.asciidoc index 0b9253b2..c606cd07 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -6,7 +6,7 @@ Mining is the process by which new bitcoin is added to the money supply. Mining also serves to secure the bitcoin system against fraudulent transactions or transactions spending the same amount of bitcoin more than once, known as a double-spend. Miners provide processing power to the bitcoin network in exchange for the opportunity to be rewarded bitcoin. Miners validate new transactions and record them on the global ledger. A new block, containing transactions that occurred since the last block, is "mined" every 10 minutes, thereby adding those transactions to the blockchain. Transactions that become part of a block and added to the blockchain are considered "confirmed", which allows the new owners of bitcoin to spend the bitcoin they received in those transactions. Miners receive two types of reward for mining: new coins created with each new block and transaction fees from all the transactions included in the block. To earn this reward, the miners compete to solve a difficult mathematical problem based on a cryptographic hash algorithm. The solution to the problem, called the Proof-of-Work, is included in the new block and acts as proof that the miner expended significant computing effort. The competition to solve the Proof-of-Work algorithm to earn reward and the right to record transactions on the blockchain is the basis for bitcoin's security model. -The process of new coin generation is called mining, because the reward is designed to simulate diminishing returns, just like mining for precious metals. Bitcoin's money supply is created through mining, similar to how a central bank issues new money by printing bank notes. The amount of newly created bitcoin a miner can add to a block decreases approximately every four years (or precisely every 210,000 blocks). It started at 50 bitcoin per block in January of 2009 and halved to 25 bitcoin per block in November of 2012. It will halve again to 12.5 bitcoin per block sometime in 2016. Based on this formula, bitcoin mining rewards decrease exponentially until approximately the year 2140 when all bitcoin (20.99999998 million) will have been issued. After 2140, no new bitcoins are issued. +The process of new coin generation is called mining, because the reward is designed to simulate diminishing returns, just like mining for precious metals. Bitcoin's money supply is created through mining, similar to how a central bank issues new money by printing bank notes. The amount of newly created bitcoin a miner can add to a block decreases approximately every four years (or precisely every 210,000 blocks). It started at 50 bitcoin per block in January of 2009 and halved to 25 bitcoin per block in November of 2012. It will halve again to 12.5 bitcoin per block sometime in 2016. Based on this formula, bitcoin mining rewards decrease exponentially until approximately the year 2140 when all bitcoin (20.99999998 million) will have been issued. After 2140, no new bitcoins will be issued. Bitcoin miners also earn fees from transactions. Every transaction may include a transaction fee, in the form of a surplus of bitcoin between the transaction's inputs and outputs. The winning bitcoin miner gets to "keep the change" on the transactions included in the winning block. Today the fees represent 0.5% or less of a bitcoin miner's income, the vast majority coming from the newly minted bitcoins. However, as the reward decreases over time and the number of transactions per block increases, a greater proportion of bitcoin mining earnings will come from fees. After 2140 all bitcoin miner earnings will be in the form of transaction fees. @@ -68,10 +68,10 @@ Each node verifies every transaction against a long checklist of criteria: * nLockTime is less than or equal to INT_MAX * The transaction size in bytes is greater than or equal to 100 * The number of signature operations contained in the transaction is less than the signature operation limit -* Unlocking script (scriptSig) only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions) +* The unlocking script (scriptSig) can only push numbers on the stack, and the locking script (scriptPubkey) must match isStandard forms (this rejects "nonstandard" transactions) * A matching transaction in the pool, or in a block in the main branch, must exist * For each input, if the referenced output exists in any other transaction in the pool, reject this transaction -* For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions, if a matching transaction is not already in the pool +* For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions pool, if a matching transaction is not already in the pool * For each input, if the referenced output transaction is a coinbase output, it must have at least COINBASE_MATURITY (100) confirmations * For each input, the referenced output must exist and cannot already be spent * Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in the allowed range of values (less than 21m coins, more than 0) From e970ea97eef33fbb9ad4e0c404a3098c4daf4e21 Mon Sep 17 00:00:00 2001 From: Cody Scott Date: Wed, 27 Aug 2014 16:08:43 -0400 Subject: [PATCH 061/102] Fixing long lines that are cut off in PDF --- code/key-to-address-ecc-example.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/code/key-to-address-ecc-example.py b/code/key-to-address-ecc-example.py index 29698579..96b6cdb3 100644 --- a/code/key-to-address-ecc-example.py +++ b/code/key-to-address-ecc-example.py @@ -5,7 +5,8 @@ valid_private_key = False while not valid_private_key: private_key = bitcoin.random_key() decoded_private_key = bitcoin.decode_privkey(private_key, 'hex') - valid_private_key = 0 < decoded_private_key < bitcoin.N + valid_private_key = 0 < decoded_private_key < bitcoin.N + print "Private Key (hex) is: ", private_key print "Private Key (decimal) is: ", decoded_private_key @@ -18,7 +19,8 @@ compressed_private_key = private_key + '01' print "Private Key Compressed (hex) is: ", compressed_private_key # Generate a WIF format from the compressed private key (WIF-compressed) -wif_compressed_private_key = bitcoin.encode_privkey(bitcoin.decode_privkey(compressed_private_key, 'hex'), 'wif') +wif_compressed_private_key = bitcoin.encode_privkey( + bitcoin.decode_privkey(compressed_private_key, 'hex'), 'wif') print "Private Key (WIF-Compressed) is: ", wif_compressed_private_key # Multiply the EC generator point G with the private key to get a public key point @@ -42,11 +44,6 @@ print "Compressed Public Key (hex) is:", hex_compressed_public_key print "Bitcoin Address (b58check) is:", bitcoin.pubkey_to_address(public_key) # Generate compressed bitcoin address from compressed public key -print "Compressed Bitcoin Address (b58check) is:", bitcoin.pubkey_to_address(hex_compressed_public_key) - - - - - - +print "Compressed Bitcoin Address (b58check) is:", \ + bitcoin.pubkey_to_address(hex_compressed_public_key) From 90ea370a78332c7823e6c3a02ec0b77cc328bb35 Mon Sep 17 00:00:00 2001 From: drstrangeM Date: Thu, 28 Aug 2014 15:49:51 +0400 Subject: [PATCH 062/102] Bytecoin BCN release date --- ch09.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch09.asciidoc b/ch09.asciidoc index 46c5c38f..3a5ac0de 100644 --- a/ch09.asciidoc +++ b/ch09.asciidoc @@ -241,7 +241,7 @@ CryptoNote is a reference implementation alt-coin that provides the basis for an *Bytecoin* -Bytecoin was the first implementation spawned from CryptoNote, offering a viable anonymous currency based on the CryptoNote technology. Bytecoin was launched in March of 2014. Note that there was a previous alt-coin named Bytecoin with currency symbol BTE, whereas the CryptoNote-derived Bytecoin has currency symbol BCN. Bytecoin uses the Cryptonight Proof-of-Work algorithm which requires access to at least 2 MB of RAM per instance, making it unsuitable for GPU or ASIC mining. Bytecoin inherits ring-signatures, unlinkable transactions and blockchain-analysis resistant anonymity from CryptoNote. +Bytecoin was the first implementation spawned from CryptoNote, offering a viable anonymous currency based on the CryptoNote technology. Bytecoin was launched in July of 2012. Note that there was a previous alt-coin named Bytecoin with currency symbol BTE, whereas the CryptoNote-derived Bytecoin has currency symbol BCN. Bytecoin uses the Cryptonight Proof-of-Work algorithm which requires access to at least 2 MB of RAM per instance, making it unsuitable for GPU or ASIC mining. Bytecoin inherits ring-signatures, unlinkable transactions and blockchain-analysis resistant anonymity from CryptoNote. * Block generation: 2 minutes * Total currency: 184 billion BCN From 8828882153c83e769502f46f60bbb71d528b321b Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Fri, 29 Aug 2014 10:51:02 -0400 Subject: [PATCH 063/102] added max_money.py code example --- ch08.asciidoc | 23 +++++++++++++++++++++++ code/max_money.py | 16 ++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 code/max_money.py diff --git a/ch08.asciidoc b/ch08.asciidoc index 89b2cd0e..5d4ddf08 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -18,6 +18,29 @@ In this chapter, we will first examine mining as a monetary supply mechanism and Bitcoins are "minted" during the creation of each block at a fixed and diminishing rate. Each block, generated on average every 10 minutes, contains entirely new bitcoins, created from nothing. Every 210,000 blocks or approximately every four years the currency issuance rate is decreased by 50%. For the first four years of operation of the network, each block contained 50 new bitcoin. In November of 2012, the new bitcoin issuance rate was decreased to 25 bitcoin per block and it will decrease again to 12.5 bitcoin at block 420,000, which will be mined sometime in 2016. The rate of new coins decreases like this exponentially over 64 "halvings", until block 13,230,000 (mined approximately in year 2137) when it reaches the minimum currency unit of 1 satoshi. Finally, after 13.44 million blocks, in approximately 2140, all 2,099,999,997,690,000 satoshis, or almost 21 million bitcoin will be issued. Thereafter, blocks will contain no new bitcoin, and miners will be rewarded solely through the transaction fees. +In the example code below, we calculate the total amount of bitcoin that will be issued: + +[[max_money]] +.A script for calculating how much total bitcoin will be issued +==== +[source, python] +---- +include::code/max_money.py[] +---- +==== + +Running the script: + +[[max_money_run]] +.Running the max_money.py script +==== +[source,bash] +---- +$ python max_money.py +Total BTC to ever be created: 2099999997690000 Satoshis +---- +==== + [[bitcoin_money_supply]] .Supply of bitcoin currency over time based on a geometrically decreasing issuance rate image::images/BitcoinMoneySupply.png["BitcoinMoneySupply"] diff --git a/code/max_money.py b/code/max_money.py new file mode 100644 index 00000000..a54238b4 --- /dev/null +++ b/code/max_money.py @@ -0,0 +1,16 @@ +# Original block reward for miners was 50 BTC +start_block_reward = 50 +# 210000 is around every 4 years with a 10 minute block interval +reward_interval = 210000 + +def max_money(): + # 50 BTC = 50 0000 0000 Satoshis + current_reward = 50 * 10**8 + total = 0 + while current_reward > 0: + total += reward_interval * current_reward + current_reward /= 2 + return total + +print "Total BTC to ever be created:", max_money(), "Satoshis" + From a450708b4a0586f4995decdb53fa10d739691b44 Mon Sep 17 00:00:00 2001 From: hizzvizz Date: Fri, 29 Aug 2014 11:33:53 -0400 Subject: [PATCH 064/102] Update ch08.asciidoc Minor grammar fixes. --- ch08.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch08.asciidoc b/ch08.asciidoc index c606cd07..e364b038 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -8,7 +8,7 @@ Mining is the process by which new bitcoin is added to the money supply. Mining The process of new coin generation is called mining, because the reward is designed to simulate diminishing returns, just like mining for precious metals. Bitcoin's money supply is created through mining, similar to how a central bank issues new money by printing bank notes. The amount of newly created bitcoin a miner can add to a block decreases approximately every four years (or precisely every 210,000 blocks). It started at 50 bitcoin per block in January of 2009 and halved to 25 bitcoin per block in November of 2012. It will halve again to 12.5 bitcoin per block sometime in 2016. Based on this formula, bitcoin mining rewards decrease exponentially until approximately the year 2140 when all bitcoin (20.99999998 million) will have been issued. After 2140, no new bitcoins will be issued. -Bitcoin miners also earn fees from transactions. Every transaction may include a transaction fee, in the form of a surplus of bitcoin between the transaction's inputs and outputs. The winning bitcoin miner gets to "keep the change" on the transactions included in the winning block. Today the fees represent 0.5% or less of a bitcoin miner's income, the vast majority coming from the newly minted bitcoins. However, as the reward decreases over time and the number of transactions per block increases, a greater proportion of bitcoin mining earnings will come from fees. After 2140 all bitcoin miner earnings will be in the form of transaction fees. +Bitcoin miners also earn fees from transactions. Every transaction may include a transaction fee, in the form of a surplus of bitcoin between the transaction's inputs and outputs. The winning bitcoin miner gets to "keep the change" on the transactions included in the winning block. Today, the fees represent 0.5% or less of a bitcoin miner's income, the vast majority coming from the newly minted bitcoins. However, as the reward decreases over time and the number of transactions per block increases, a greater proportion of bitcoin mining earnings will come from fees. After 2140, all bitcoin miner earnings will be in the form of transaction fees. The word "mining" is somewhat misleading. By evoking the extraction of precious metals, it focuses our attention on the reward for mining, the new bitcoins in each block. While mining is incentivized by this reward, the primary purpose of mining is not the reward or the generation of new coins. If you view mining only as the process by which coins are created you are mistaking the means (incentives) as a goal of the process. Mining is the main process of the de-centralized clearinghouse, by which transactions are validated and cleared. Mining secures the bitcoin system and enables the emergence of network-wide consensus without a central authority. Mining is the invention that makes bitcoin special, a de-centralized security mechanism that is the basis for peer-to-peer digital cash. The reward of newly minted coins and transaction fees is an incentive scheme that aligns the actions of miners with the security of the network, while simultaneously implementing the monetary supply. From 47a79e36e0a233d0a8bd283222f7f8774b6e1a16 Mon Sep 17 00:00:00 2001 From: Sam Ritchie Date: Fri, 29 Aug 2014 09:49:20 -0600 Subject: [PATCH 065/102] Small typo re: x axis reflection Following the previous example, reflecting -4G should give us 4G, not G. --- ch04.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch04.asciidoc b/ch04.asciidoc index d167b03b..c0bf4e39 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -212,7 +212,7 @@ y = 07CF33DA18...505BDB To visualize multiplication of a point with an integer, we will use the simpler elliptic curve over the real numbers -- remember, the math is the same. Our goal is to find the multiple kG of the generator point G. That is the same as adding G to itself, k times in a row. In elliptic curves, adding a point to itself is the equivalent of drawing a tangent line on the point and finding where it intersects the curve again, then reflecting that point on the x-axis. -Starting with the generator point G, we take the tangent of the curve at G until it crosses the curve again at another point. This new point is -2G. Reflecting that point across the x-axis gives us 2G. If we take the tangent at 2G, it crosses the curve at -4G, which again we reflect on the x-axis to find G. Continuing this process, we can bounce around the curve finding the multiples of G, 2G, 4G, 8G, etc. As you can see, a randomly selected large number k, when multiplied against the generator point G is like bouncing around the curve k times, until we land on the point kG which is the public key. This process is irreversible, meaning that it is infeasible to find the factor k (the secret k) in any way other than trying all multiples of G (1G, 2G, 4G, etc) in a brute-force search for k. Since k can be an enormous number, that brute-force search would take an infeasible amount of computation and time. +Starting with the generator point G, we take the tangent of the curve at G until it crosses the curve again at another point. This new point is -2G. Reflecting that point across the x-axis gives us 2G. If we take the tangent at 2G, it crosses the curve at -4G, which again we reflect on the x-axis to find 4G. Continuing this process, we can bounce around the curve finding the multiples of G, 2G, 4G, 8G, etc. As you can see, a randomly selected large number k, when multiplied against the generator point G is like bouncing around the curve k times, until we land on the point kG which is the public key. This process is irreversible, meaning that it is infeasible to find the factor k (the secret k) in any way other than trying all multiples of G (1G, 2G, 4G, etc) in a brute-force search for k. Since k can be an enormous number, that brute-force search would take an infeasible amount of computation and time. From 08055ea1638d4513c3196225aa2bc6aca8b58fb8 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Fri, 29 Aug 2014 12:35:42 -0400 Subject: [PATCH 066/102] get_utxo and select_utxo --- ch05.asciidoc | 57 +++++++++++++++++++++++++++++++++++-- code/get-utxo.py | 28 +++++++++++++++++++ code/select-utxo.py | 68 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 150 insertions(+), 3 deletions(-) create mode 100644 code/get-utxo.py create mode 100644 code/select-utxo.py diff --git a/ch05.asciidoc b/ch05.asciidoc index e8d12bae..03fdb853 100644 --- a/ch05.asciidoc +++ b/ch05.asciidoc @@ -78,7 +78,6 @@ The UTXO consumed by a transaction are called transaction inputs, while the UTXO The exception to the output and input chain is a special type of transaction called the _coinbase_ transaction, which is the first transaction in each block. This transaction is placed there by the "winning" miner and creates brand-new bitcoin payable to that miner as a reward for mining. This is how bitcoin's money supply is created during the mining process as we will see in <>. - [TIP] ==== What comes first? Inputs or outputs, the chicken or the egg? Strictly speaking, outputs come first because coinbase transactions, which generate new bitcoin, have no inputs and create outputs from nothing. @@ -108,6 +107,32 @@ The transaction scripting language, used in the locking script mentioned above, | Variable | Locking-Script | A script defining the conditions needed to spend the output |======= +In the example below, we use the blockchain.info API to find the unspent outputs (UTXO) of a specific address: +[[get_utxo]] +.A script that calls the blockchain.info API to find the UTXO related to an address +==== +[source, python] +---- +include::code/get-utxo.py[] +---- +==== + +Running the script, we see a list of transaction IDs, a colon, the index number of the specific unspent transaction output (UTXO), and the value of that UTXO in Satoshis. The locking script is not shown in this output: + +[[get_utxo_run]] +.Running the get-utxo.py script +==== +[source,bash] +---- +$ python get-utxo.py +ebadfaa92f1fd29e2fe296eda702c48bd11ffd52313e986e99ddad9084062167:1 - 8000000 Satoshis +6596fd070679de96e405d52b51b8e1d644029108ec4cbfe451454486796a1ecf:0 - 16050000 Satoshis +74d788804e2aae10891d72753d1520da1206e6f4f20481cc1555b7f2cb44aca0:0 - 5000000 Satoshis +b2affea89ff82557c60d635a2a3137b8f88f12ecec85082f7d0a1f82ee203ac4:0 - 10000000 Satoshis +... +---- +==== + ===== Spending Conditions (Encumbrances) Transaction outputs associate a specific amount (in satoshis) to a specific _encumbrance_ or locking-script that defines the condition that must be met to spend that amount. In most cases the locking script will lock the output to a specific bitcoin address, thereby transferring ownership of that amount to the new owner. When Alice paid Bob's Cafe for a cup of coffee, her transaction created a 0.015 bitcoin output _encumbered_ or locked to the Cafe's bitcoin address. That 0.015 bitcoin output was recorded on the blockchain and became part of the Unspent Transaction Output set, meaning it showed in Bob's wallet as part of the available balance. When Bob chooses to spend that amount, his transaction will release the encumbrance, unlocking the output by providing an unlocking script containing a signature from Bob's private key. @@ -117,7 +142,33 @@ Transaction outputs associate a specific amount (in satoshis) to a specific _enc In simple terms, transaction inputs are pointers to UTXO. They point to a specific UTXO by reference to the transaction hash and sequence number where the UTXO is recorded in the blockchain. To spend UTXO, a transaction input also includes unlocking-scripts that satisfy the spending conditions set by the UTXO. The unlocking script is usually a signature proving ownership of the bitcoin address that is in the locking script. -When a user makes a payment, their wallet constructs a transaction by selecting from the available UTXO. For example, to make a 0.015 bitcoin payment, the wallet app may select a 0.01 UTXO and a 0.005 UTXO, using them both to add up to the desired payment amount. The wallet then produces unlocking scripts containing signatures for each of the UTXO, thereby making them spendable by satisfying their locking script conditions. The wallet adds these UTXO references and unlocking scripts as inputs to the transaction. +When a user makes a payment, their wallet constructs a transaction by selecting from the available UTXO. For example, to make a 0.015 bitcoin payment, the wallet app may select a 0.01 UTXO and a 0.005 UTXO, using them both to add up to the desired payment amount. + +In the example below, we show the use of a "greedy" algorithm to select from available UTXO in order to make a specific payment amount. In the example, the available UTXO are provided as a constant array, but in reality, the available UTXO would be retrieved with an RPC call to Bitcoin Core, or to a third-party API as shown in <>. + +[[select_utxo]] +.A script for calculating how much total bitcoin will be issued +==== +[source, python] +---- +include::code/select-utxo.py[] +---- +==== + +If we run the select-utxo.py script without a parameter it will attempt to construct a set of UTXO (and change) for a payment of 55000000 Satoshis (0.55 bitcoin). If you provide a target payment amount as a parameter, the script will select UTXO to make that target payment amount. Below, we run the script trying to make a payment of 0.5 bitcoin or 50000000 Satoshis: + +[[select_utxo_run]] +.Running the select-utxo.py script +==== +[source,bash] +---- +$ python select-utxo.py 50000000 +For transaction amount 50000000 Satoshis (0.500000 bitcoin) use: +([<7dbc497969c7475e45d952c4a872e213fb15d45e5cd3473c386a71a1b0c136a1:0 with 25000000 Satoshis>, <7f42eda67921ee92eae5f79bd37c68c9cb859b899ce70dba68c48338857b7818:0 with 16100000 Satoshis>, <6596fd070679de96e405d52b51b8e1d644029108ec4cbfe451454486796a1ecf:0 with 16050000 Satoshis>], 'Change: 7150000 Satoshis') +---- +==== + +The wallet then produces unlocking scripts containing signatures for each of the UTXO, thereby making them spendable by satisfying their locking script conditions. The wallet adds these UTXO references and unlocking scripts as inputs to the transaction. [[tx_in_structure]] .The structure of a transaction input @@ -131,7 +182,7 @@ When a user makes a payment, their wallet constructs a transaction by selecting | 4 bytes | Sequence Number | Currently-disabled Tx-replacement feature, set to 0xFFFFFFFF |======= -Note: The sequence number is used to override a transaction prior to the expiration of the transaction locktime, which is a feature that is currently disabled in bitcoin. Most transactions set this value to the maximum integer value (0xFFFFFFFF) and it is ignored by the bitcoin network. If the transaction has a non-zero locktime, at least one of its inputs must have a sequence number below 0xFFFFFFFF in order to enable locktime. +Note: The sequence number is used to override a transaction prior to the expiration of the transaction locktime, which is a feature that is currently disabled in bitcoin. Most transactions set this value to the maximum integer value (0xFFFFFFFF) and it is ignored by the bitcoin network. If the transaction has a non-zero locktime, at least one of its inputs must have a sequence number below 0xFFFFFFFF in order to enable locktime. [[tx_fees]] ==== Transaction Fees diff --git a/code/get-utxo.py b/code/get-utxo.py new file mode 100644 index 00000000..285aba4c --- /dev/null +++ b/code/get-utxo.py @@ -0,0 +1,28 @@ +# get unspent outputs from blockchain API + +import json +import requests + +# example address +address = '1Dorian4RoXcnBv9hnQ4Y2C1an6NJ4UrjX' + +# The API URL is https://blockchain.info/unspent?active=
+# It returns a JSON object with a list "unspent_outputs", containing UTXO, like this: +#{ "unspent_outputs":[ +# { +# "tx_hash":"ebadfaa92f1fd29e2fe296eda702c48bd11ffd52313e986e99ddad9084062167", +# "tx_index":51919767, +# "tx_output_n": 1, +# "script":"76a9148c7e252f8d64b0b6e313985915110fcfefcf4a2d88ac", +# "value": 8000000, +# "value_hex": "7a1200", +# "confirmations":28691 +# }, +# ... +#]} + +resp = requests.get('https://blockchain.info/unspent?active=%s' % address) +utxo_set = json.loads(resp.text)["unspent_outputs"] + +for utxo in utxo_set: + print "%s:%d - %ld Satoshis" % (utxo['tx_hash'], utxo['tx_output_n'], utxo['value']) diff --git a/code/select-utxo.py b/code/select-utxo.py new file mode 100644 index 00000000..a8557f69 --- /dev/null +++ b/code/select-utxo.py @@ -0,0 +1,68 @@ +# Selects outputs from a UTXO list using a greedy algorithm. + +from sys import argv + +class OutputInfo: + + def __init__(self, tx_hash, tx_index, value): + self.tx_hash = tx_hash + self.tx_index = tx_index + self.value = value + + def __repr__(self): + return "<%s:%s with %s Satoshis>" % (self.tx_hash, self.tx_index, + self.value) + +# Select optimal outputs for a send from unspent outputs list. +# Returns output list and remaining change to be sent to +# a change address. +def select_outputs_greedy(unspent, min_value): + # Fail if empty. + if not unspent: + return None + # Partition into 2 lists. + lessers = [utxo for utxo in unspent if utxo.value < min_value] + greaters = [utxo for utxo in unspent if utxo.value >= min_value] + key_func = lambda utxo: utxo.value + if greaters: + # Not-empty. Find the smallest greater. + min_greater = min(greaters) + change = min_greater.value - min_value + return [min_greater], change + # Not found in greaters. Try several lessers instead. + # Rearrange them from biggest to smallest. We want to use the least + # amount of inputs as possible. + lessers.sort(key=key_func, reverse=True) + result = [] + accum = 0 + for utxo in lessers: + result.append(utxo) + accum += utxo.value + if accum >= min_value: + change = accum - min_value + return result, "Change: %d Satoshis" % change + # No results found. + return None, 0 + +def main(): + unspent = [ + OutputInfo("ebadfaa92f1fd29e2fe296eda702c48bd11ffd52313e986e99ddad9084062167", 1, 8000000), + OutputInfo("6596fd070679de96e405d52b51b8e1d644029108ec4cbfe451454486796a1ecf", 0, 16050000), + OutputInfo("b2affea89ff82557c60d635a2a3137b8f88f12ecec85082f7d0a1f82ee203ac4", 0, 10000000), + OutputInfo("7dbc497969c7475e45d952c4a872e213fb15d45e5cd3473c386a71a1b0c136a1", 0, 25000000), + OutputInfo("55ea01bd7e9afd3d3ab9790199e777d62a0709cf0725e80a7350fdb22d7b8ec6", 17, 5470541), + OutputInfo("12b6a7934c1df821945ee9ee3b3326d07ca7a65fd6416ea44ce8c3db0c078c64", 0, 10000000), + OutputInfo("7f42eda67921ee92eae5f79bd37c68c9cb859b899ce70dba68c48338857b7818", 0, 16100000), + ] + + if len(argv) > 1: + target = long(argv[1]) + else: + target = 55000000 + + print "For transaction amount %d Satoshis (%f bitcoin) use: " % (target, target/10.0**8) + print select_outputs_greedy(unspent, target) + +if __name__ == "__main__": + main() + From 117ddc4006e5ac2cc3f7b5af62a6dacfb9e1ede8 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Fri, 29 Aug 2014 12:36:26 -0400 Subject: [PATCH 067/102] example transition --- ch05.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch05.asciidoc b/ch05.asciidoc index 03fdb853..bf479d81 100644 --- a/ch05.asciidoc +++ b/ch05.asciidoc @@ -168,7 +168,7 @@ For transaction amount 50000000 Satoshis (0.500000 bitcoin) use: ---- ==== -The wallet then produces unlocking scripts containing signatures for each of the UTXO, thereby making them spendable by satisfying their locking script conditions. The wallet adds these UTXO references and unlocking scripts as inputs to the transaction. +One the UTXO is selected, the wallet then produces unlocking scripts containing signatures for each of the UTXO, thereby making them spendable by satisfying their locking script conditions. The wallet adds these UTXO references and unlocking scripts as inputs to the transaction. [[tx_in_structure]] .The structure of a transaction input From f6265bbd09dcbc014514b15408f076dc7a397c5f Mon Sep 17 00:00:00 2001 From: Ed Eykholt Date: Sat, 30 Aug 2014 17:35:07 -0700 Subject: [PATCH 068/102] Minor grammar fixes Ch9 --- ch09.asciidoc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ch09.asciidoc b/ch09.asciidoc index 3a5ac0de..56ef13cf 100644 --- a/ch09.asciidoc +++ b/ch09.asciidoc @@ -1,7 +1,7 @@ [[ch9]] -== Alternative chains, currencies, and applications +== Alternative Chains, Currencies, and Applications -Bitcoin was neither the beginning nor the end of the digital currency evolution. It came from twenty years of research in distributed systems and currencies and brought a revolutionary new technology into the space: the de-centralized consensus mechanism based on Proof-of-Work. The invention at the heart of bitcoin has ushered a wave of innovation in currencies, financial services, economics, distributed systems, voting systems, corporate governance, and contracts. +Bitcoin was neither the beginning nor the end of the digital currency evolution. It came from twenty years of research in distributed systems and currencies and brought a revolutionary new technology into the space: the de-centralized consensus mechanism based on Proof-of-Work. This invention at the heart of bitcoin has ushered a wave of innovation in currencies, financial services, economics, distributed systems, voting systems, corporate governance, and contracts. In this chapter we'll examine the many offshoots of the bitcoin and blockchain inventions, the alternative chains, currencies, and applications built since the introduction of this technology in 2009. @@ -11,7 +11,7 @@ With new coins introduced every day, it would be impossible not to miss some imp === A taxonomy of alternative currencies and chains -Bitcoin is an open source project and its code has been used as the basis for many other software projects. The most common form of software spawned from bitcoin's source code are alternative de-centralized currencies, or _alt-coins_, which use the same basic building blocks to implement digital currencies. +Bitcoin is an open source project, and its code has been used as the basis for many other software projects. The most common form of software spawned from bitcoin's source code are alternative de-centralized currencies, or _alt-coins_, which use the same basic building blocks to implement digital currencies. There are a number of protocol layers implemented on top of bitcoin's blockchain. These _meta-coins_, _meta-chains_, or _blockchain apps_ use the blockchain as an application platform or extend the bitcoin protocol by adding protocol layers. Examples include Colored Coins, Mastercoin, and Counterparty. @@ -25,7 +25,7 @@ Finally, there are a number of bitcoin contenders that offer digital currency or === Meta-Coin Platforms -Meta-coins and meta-chains are software layers implemented on top of bitcoin, either implementing a currency-inside-a-currency, or a platform/protocol overlay inside the bitcoin system. These function layers extend the core bitcoin protocol and add features and capabilities by encoding additional data inside bitcoin transactions and bitcoin addresses. The first implementations of meta-coins used various "hacks" to add meta-data to the bitcoin blockchain, such as using bitcoin addresses to encode data or using unused transaction fields (e.g. the transaction sequence field) to encode meta-data about the added protocol layer. Since the introduction of the OP_RETURN transaction scripting opcode, the meta-coins have been able to record meta-data more directly in the blockchain and most are migrating to using that instead. +Meta-coins and meta-chains are software layers implemented on top of bitcoin, either implementing a currency-inside-a-currency, or a platform/protocol overlay inside the bitcoin system. These function layers extend the core bitcoin protocol and add features and capabilities by encoding additional data inside bitcoin transactions and bitcoin addresses. The first implementations of meta-coins used various "hacks" to add meta-data to the bitcoin blockchain, such as using bitcoin addresses to encode data or using unused transaction fields (e.g. the transaction sequence field) to encode meta-data about the added protocol layer. Since the introduction of the OP_RETURN transaction scripting opcode, the meta-coins have been able to record meta-data more directly in the blockchain, and most are migrating to using that instead. ==== Colored Coins @@ -229,7 +229,7 @@ Gridcoin was introduced in October 2013. It supplements scrypt-based Proof-of-Wo ==== Anonymity-Focused Alt-Coins: CryptoNote, Bytecoin, Monero, Zerocash/Zerocoin, Darkcoin -Bitcoin is often mistakenly characterized as "anonymous" currency. In fact, it is relatively easy to connect identities to bitcoin addresses and, using big-data analytics, connect addresses to each other to form a comprehensive picture of someone's bitcoin spending habits. Several alt-coins aim to address this directly by focusing on strong anonymity. The first such attempt is most likely _Zerocoin_, a meta-coin protocol for preserving anonymity on top of bitcoin, introduced with a paper in the 2013 IEEE Symposium on Security and Privacy. Zerocoin will be implemented as a completely separate alt-coin called Zerocash, currently in development. An alternative approach to anonymity was launched with _CryptoNote_ in a paper published in October 2013. CryptoNote is a foundational technology that is implemented by a number of alt-coin forks discussed below. In addition to Zerocash and Cryptonotes, there are several other independent anonymous coins, such as Darkcoin that use stealth addresses or transaction re-mixing to deliver anonymity. +Bitcoin is often mistakenly characterized as "anonymous" currency. In fact, it is relatively easy to connect identities to bitcoin addresses and, using big-data analytics, connect addresses to each other to form a comprehensive picture of someone's bitcoin spending habits. Several alt-coins aim to address this issue directly by focusing on strong anonymity. The first such attempt is most likely _Zerocoin_, a meta-coin protocol for preserving anonymity on top of bitcoin, introduced with a paper in the 2013 IEEE Symposium on Security and Privacy. Zerocoin will be implemented as a completely separate alt-coin called Zerocash, currently in development. An alternative approach to anonymity was launched with _CryptoNote_ in a paper published in October 2013. CryptoNote is a foundational technology that is implemented by a number of alt-coin forks discussed below. In addition to Zerocash and Cryptonotes, there are several other independent anonymous coins, such as Darkcoin that use stealth addresses or transaction re-mixing to deliver anonymity. *Zerocoin/Zerocash* From e2f7349fe2175f1a9364109db26198b8d921d942 Mon Sep 17 00:00:00 2001 From: "bitcoins.SG" Date: Thu, 4 Sep 2014 14:20:45 +0545 Subject: [PATCH 069/102] Update ch01.asciidoc, What is bitcoin 3rd para Made a few implied points more explicit and changed "transaction" to "address" in a few occasions where it was more appropriate for e.g. "Users of bitcoin own keys which allow them to prove ownership of transactions in the bitcoin network, unlocking the value to spend it and transfer it to a new recipient. " to "Users of bitcoin own keys which allow them to prove ownership of addresses in the bitcoin network. Unlocking these addresses, unlocks any value associated to it and grants the user the ability to spend and thus transfer value from it." Do key holders really own transactions? when someone transfers bitcoin to a user's address, is that transaction really theirs rather than the spender's? Isn't it more appropriate to say that the bitcoins associated to their address is theirs. "Unlocking value to spend it and transfer it to a new recipient" here unlocking value implies the "value to spend" instead of "spend the value", also, isn't spend and transfer the same thing? and a user could transfer bitcoins to an old recipient instead of a new one. --- ch01.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index a819686c..86e6c478 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -7,7 +7,7 @@ Bitcoin is a collection of concepts and technologies that form the basis of a di Users can transfer bitcoin over the network to do just about anything that can be done with conventional currencies, such as buy and sell goods, send money to people or organizations, or extend credit. Bitcoin technology includes features that are based on encryption and digital signatures to ensure the security of the bitcoin network. Bitcoins can be purchased, sold and exchanged for other currencies at specialized currency exchanges. Bitcoin in a sense is the perfect form of money for the Internet because it is fast, secure, and borderless. -Unlike traditional currencies, bitcoins are entirely virtual. There are no physical coins or even digital coins per se. The coins are implied in transactions which transfer value from sender to recipient. Users of bitcoin own keys which allow them to prove ownership of transactions in the bitcoin network, unlocking the value to spend it and transfer it to a new recipient. Those keys are often stored in a digital wallet on each user’s computer. Possession of the key that unlocks a transaction is the only prerequisite to spending bitcoins, putting the control entirely in the hands of each user. +Unlike traditional currencies, bitcoins are entirely virtual. There are no physical coins or even digital coins per se. The coins are implied in transactions which transfer a quantitative value from sender to recipient. Users of bitcoin own keys which allow them to prove ownership of addresses in the bitcoin network. Unlocking these addresses, unlocks any value associated to it and grants the user the ability to spend and thus transfer value from it. Keys can be stored in a variety of mediums, including a piece of paper, but are most oftenly stored on the user's computer. Possession of a key that unlocks an address is the only prerequisite to spending bitcoins transferred to it; putting the control entirely in the hands of the user. Bitcoin is a fully-distributed, peer-to-peer system. As such there is no "central" server or point of control. Bitcoins are created through a process called "mining", which involves looking for a solution to a difficult problem. Any participant in the bitcoin network (i.e., any device running the full bitcoin protocol stack) may operate as a miner, using their computer's processing power to attempt to find solutions to this problem. Every 10 minutes on average, a new solution is found by someone who then is able to validate the transactions of the past 10 minutes and is rewarded with brand new bitcoins. Essentially, bitcoin mining de-centralizes the currency-issuance and clearing functions of a central bank and replaces the need for any central bank with this global competition. From 85654d736705853564516d856b3e36e459f73b0e Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Thu, 4 Sep 2014 21:52:20 -0700 Subject: [PATCH 070/102] Revert some change from pull request #132. You don't 'unlock' an address. No need to mention paper walllets; keeping it simple --- ch01.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index 86e6c478..b2331035 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -7,7 +7,7 @@ Bitcoin is a collection of concepts and technologies that form the basis of a di Users can transfer bitcoin over the network to do just about anything that can be done with conventional currencies, such as buy and sell goods, send money to people or organizations, or extend credit. Bitcoin technology includes features that are based on encryption and digital signatures to ensure the security of the bitcoin network. Bitcoins can be purchased, sold and exchanged for other currencies at specialized currency exchanges. Bitcoin in a sense is the perfect form of money for the Internet because it is fast, secure, and borderless. -Unlike traditional currencies, bitcoins are entirely virtual. There are no physical coins or even digital coins per se. The coins are implied in transactions which transfer a quantitative value from sender to recipient. Users of bitcoin own keys which allow them to prove ownership of addresses in the bitcoin network. Unlocking these addresses, unlocks any value associated to it and grants the user the ability to spend and thus transfer value from it. Keys can be stored in a variety of mediums, including a piece of paper, but are most oftenly stored on the user's computer. Possession of a key that unlocks an address is the only prerequisite to spending bitcoins transferred to it; putting the control entirely in the hands of the user. +Unlike traditional currencies, bitcoins are entirely virtual. There are no physical coins or even digital coins per se. The coins are implied in transactions which transfer a quantitative value from sender to recipient. Users of bitcoin own keys which allow them to prove ownership of addresses in the bitcoin network, allowing them to unlock the value associated with them and transfer the value to a new recipient. Those keys are often stored in a digital wallet on the user’s computer. Possession of a key associated with an address is the only prerequisite to spending bitcoins transferred to it, putting the control entirely in the hands of the user. Bitcoin is a fully-distributed, peer-to-peer system. As such there is no "central" server or point of control. Bitcoins are created through a process called "mining", which involves looking for a solution to a difficult problem. Any participant in the bitcoin network (i.e., any device running the full bitcoin protocol stack) may operate as a miner, using their computer's processing power to attempt to find solutions to this problem. Every 10 minutes on average, a new solution is found by someone who then is able to validate the transactions of the past 10 minutes and is rewarded with brand new bitcoins. Essentially, bitcoin mining de-centralizes the currency-issuance and clearing functions of a central bank and replaces the need for any central bank with this global competition. From 23b83c354ffc67f0d77bd8b8cd36a1c39ba72159 Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Fri, 5 Sep 2014 06:55:35 -0700 Subject: [PATCH 071/102] Reverting 3rd paragraph back to its original for issue #132. We'll change this later. --- ch01.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index b2331035..a819686c 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -7,7 +7,7 @@ Bitcoin is a collection of concepts and technologies that form the basis of a di Users can transfer bitcoin over the network to do just about anything that can be done with conventional currencies, such as buy and sell goods, send money to people or organizations, or extend credit. Bitcoin technology includes features that are based on encryption and digital signatures to ensure the security of the bitcoin network. Bitcoins can be purchased, sold and exchanged for other currencies at specialized currency exchanges. Bitcoin in a sense is the perfect form of money for the Internet because it is fast, secure, and borderless. -Unlike traditional currencies, bitcoins are entirely virtual. There are no physical coins or even digital coins per se. The coins are implied in transactions which transfer a quantitative value from sender to recipient. Users of bitcoin own keys which allow them to prove ownership of addresses in the bitcoin network, allowing them to unlock the value associated with them and transfer the value to a new recipient. Those keys are often stored in a digital wallet on the user’s computer. Possession of a key associated with an address is the only prerequisite to spending bitcoins transferred to it, putting the control entirely in the hands of the user. +Unlike traditional currencies, bitcoins are entirely virtual. There are no physical coins or even digital coins per se. The coins are implied in transactions which transfer value from sender to recipient. Users of bitcoin own keys which allow them to prove ownership of transactions in the bitcoin network, unlocking the value to spend it and transfer it to a new recipient. Those keys are often stored in a digital wallet on each user’s computer. Possession of the key that unlocks a transaction is the only prerequisite to spending bitcoins, putting the control entirely in the hands of each user. Bitcoin is a fully-distributed, peer-to-peer system. As such there is no "central" server or point of control. Bitcoins are created through a process called "mining", which involves looking for a solution to a difficult problem. Any participant in the bitcoin network (i.e., any device running the full bitcoin protocol stack) may operate as a miner, using their computer's processing power to attempt to find solutions to this problem. Every 10 minutes on average, a new solution is found by someone who then is able to validate the transactions of the past 10 minutes and is rewarded with brand new bitcoins. Essentially, bitcoin mining de-centralizes the currency-issuance and clearing functions of a central bank and replaces the need for any central bank with this global competition. From c822f19e09e70216d28b38cabe8fdad7d03b5713 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Sat, 6 Sep 2014 16:06:48 -0400 Subject: [PATCH 072/102] preface/intro --- preface.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/preface.asciidoc b/preface.asciidoc index 324fdc22..7c2ddf65 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -5,7 +5,7 @@ I first stumbled upon bitcoin in mid-2011. My immediate reaction was more or less "Pfft! Nerd money!" and I ignored it for another 6 months, failing to grasp its importance. This is a reaction which I have seen repeated among many of the smartest people I know, which gives me some consolation. The second time I came across bitcoin in a mailing list discussion, I decided to read the white paper written by Satoshi Nakamoto, to study the authoritative source and see what it was all about. I still remember the moment I finished reading those 9 pages, when I realized that bitcoin was not simply a digital currency, but a network of trust that could also provide the basis for so much more than just currencies. That realization: "This isn't money, it's a de-centralized trust network," started me on a four month journey to devour every scrap of information about bitcoin I could find. I became obsessed and enthralled, spending twelve or more hours each day glued to a screen, reading, writing, coding and learning as much as I could. I emerged from this state of fugue, more than 20 lbs lighter from lack of consistent meals, determined to dedicate myself to working on bitcoin. -Two years later, after creating a number of small startups to explore various bitcoin-related services and products, I decided that it was time to write my first book. Bitcoin was the topic that had driven me into a frenzy of creativity, consumed my thoughts and is the most exciting technology I have encountered since the Internet. It was now time to share my discovery of this amazing technology and my passion with a broader audience. This is the bitcoin book. +Two years later, after creating a number of small startups to explore various bitcoin-related services and products, I decided that it was time to write my first book. Bitcoin was the topic that had driven me into a frenzy of creativity, consumed my thoughts and was the most exciting technology I had encountered since the Internet. It was now time to share my passion about this amazing technology with a broader audience. This is the bitcoin book. === Intended Audience From aee105fc542d08ad2c2b6bf3f2b8480227dfec88 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Sat, 6 Sep 2014 16:07:14 -0400 Subject: [PATCH 073/102] github update, removed early release info --- preface.asciidoc | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/preface.asciidoc b/preface.asciidoc index 7c2ddf65..4f9402d6 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -11,17 +11,13 @@ Two years later, after creating a number of small startups to explore various bi This book is mostly intended for coders. If you can use a programming language, this book will teach you how cryptographic currencies work, how to use them and how to develop software that works with them. The first few chapters are also suitable as an in-depth introduction to bitcoin for non-coders - those trying to understand the inner workings of bitcoin and cryptocurrencies. The examples are illustrated in Python and on the command-line of a Unix-like operating system such as Linux. -=== Early-Release Note +=== Github Source Code -The early release version of the book is a *raw and rough draft* and will change regularly. New chapters will be added as they are drafted and there will be plenty of changes to the content, examples and diagrams. There will be factual and technical errors in the early release and some of the examples may not work or refer to obsolete versions of the code. Nevertheless, I hope you will enjoy the content and find it useful. I also hope that you will take the opportunity to "fork" the source code of the book and provide feedback by creating a pull request or submitting a patch. I present this work in the spirit of Cunningham's Law, named after the inventor of the wiki, Ward Cunningham: +This book is available on Github, as a repository that contains the text, images and code: -_The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer_ +https://github.com/aantonop/bitcoinbook -I hope you can help me find and publish the "right answer" by the time this book is ready to print. - -The early-release source code is published on Github: https://github.com/aantonop/bitcoinbook - -File an "Issue", or fork, modify and create a "Pull Request" with your changes. +Fork the book code, try the code examples, or submit corrections via Github. === Why Are There Bugs On The Cover? From 5b887594a4aefaad71e848f6aeb4ddb6094cd038 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Sun, 7 Sep 2014 11:52:11 -0400 Subject: [PATCH 074/102] preface and ch1 fixes --- ch01.asciidoc | 12 ++++++------ preface.asciidoc | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index a819686c..e6a02237 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -11,7 +11,7 @@ Unlike traditional currencies, bitcoins are entirely virtual. There are no physi Bitcoin is a fully-distributed, peer-to-peer system. As such there is no "central" server or point of control. Bitcoins are created through a process called "mining", which involves looking for a solution to a difficult problem. Any participant in the bitcoin network (i.e., any device running the full bitcoin protocol stack) may operate as a miner, using their computer's processing power to attempt to find solutions to this problem. Every 10 minutes on average, a new solution is found by someone who then is able to validate the transactions of the past 10 minutes and is rewarded with brand new bitcoins. Essentially, bitcoin mining de-centralizes the currency-issuance and clearing functions of a central bank and replaces the need for any central bank with this global competition. -The bitcoin protocol includes built-in algorithms that regulate the mining function across the network. The difficulty of the problem that miners must solve is adjusted dynamically so that, on average, someone finds a correct answer every 10 minutes regardless of how many miners (and CPUs) are working on the problem at any moment. The protocol also halves the rate at which new bitcoins are created every 4 years, and limits the total number of bitcoins that will be created to a fixed total of 21 million coins. The result is that the number of bitcoins in circulation closely follows an easily predictable curve that reaches 21 million by the year 2140. As a result, the bitcoin currency is deflationary and cannot be inflated by "printing" new money above and beyond the expected issuance rate. +The bitcoin protocol includes built-in algorithms that regulate the mining function across the network. The difficulty of the problem that miners must solve is adjusted dynamically so that, on average, someone finds a correct answer every 10 minutes regardless of how many miners (and CPUs) are working on the problem at any moment. The protocol also halves the rate at which new bitcoins are created every 4 years, and limits the total number of bitcoins that will be created to a fixed total of 21 million coins. The result is that the number of bitcoins in circulation closely follows an easily predictable curve that reaches 21 million by the year 2140. Due to bitcoin's diminishing rate of issuance, over the long term, the bitcoin currency is deflationary. Furthermore, bitcoin cannot be inflated by "printing" new money above and beyond the expected issuance rate. Behind the scenes, bitcoin is also the name of the protocol, a network and a distributed computing innovation. The bitcoin currency is really only the first application of this invention. As a developer, I see bitcoin as akin to the Internet of money, a network for propagating value and securing the ownership of digital assets via distributed computation. There's a lot more to bitcoin than first meets the eye. @@ -28,7 +28,7 @@ Issuers of paper money are constantly battling the counterfeiting problem by usi When cryptography started becoming more broadly available and understood in the late 1980s, many researchers began trying to use cryptography to build digital currencies. These early digital currency projects issued digital money, usually backed by a national currency or precious metal such as gold. -While these earlier digital currencies worked, they were centralized and as a result they were easy to attack by governments and hackers. Early digital currencies used a central clearinghouse to settle all transactions at regular intervals, just like a traditional banking system. Unfortunately, in most cases these nascent digital currencies were targeted by worried governments and eventually litigated out of existence. Some failed in spectacular crashes when the parent company liquidated abruptly. To be robust against intervention by antagonists, whether they are legitimate governments or criminal elements, a new digital currency was needed to avoid the use of a central currency issuer or transaction clearing authority that could be a single point of attack. Bitcoin is such a system, completely de-centralized by design, and free of any central authority or point of control that can be attacked or corrupted. +While these earlier digital currencies worked, they were centralized and as a result they were easy to attack by governments and hackers. Early digital currencies used a central clearinghouse to settle all transactions at regular intervals, just like a traditional banking system. Unfortunately, in most cases these nascent digital currencies were targeted by worried governments and eventually litigated out of existence. Some failed in spectacular crashes when the parent company liquidated abruptly. To be robust against intervention by antagonists, whether legitimate governments or criminal elements, a de-centralized digital currency was needed to avoid a single point of attack. Bitcoin is such a system, completely de-centralized by design, and free of any central authority or point of control that can be attacked or corrupted. Bitcoin represents the culmination of decades of research in cryptography and distributed systems and includes four key innovations brought together in a unique and powerful combination. Bitcoin consists of: @@ -39,9 +39,9 @@ Bitcoin represents the culmination of decades of research in cryptography and di === History of Bitcoin -Bitcoin was invented in 2008 by Satoshi Nakamoto with the publication of a paper titled "Bitcoin: A Peer-to-Peer Electronic Cash System". Satoshi Nakamoto combined several prior inventions such as b-money and HashCash to create a completely de-centralized electronic cash system that does not rely on a central authority for currency issuance or settlement and validation of transactions. The key innovation was to use a Proof-Of-Work algorithm to conduct a global "election" every 10 minutes, allowing the de-centralized network to arrive at _consensus_ about the state of transactions. This elegantly solves the issue of double-spend where a single currency unit can be spent twice. Previously, the double-spend problem was a weakness of digital currency and was addressed by clearing all transactions through a central clearinghouse. +Bitcoin was invented in 2008 by Satoshi Nakamoto with the publication of a paper titled "Bitcoin: A Peer-to-Peer Electronic Cash System". Satoshi Nakamoto combined several prior inventions such as b-money and HashCash to create a completely de-centralized electronic cash system that does not rely on a central authority for currency issuance or settlement and validation of transactions. The key innovation was to use a distributed computation system (called a "Proof-Of-Work" algorithm) to conduct a global "election" every 10 minutes, allowing the de-centralized network to arrive at _consensus_ about the state of transactions. This elegantly solves the issue of double-spend where a single currency unit can be spent twice. Previously, the double-spend problem was a weakness of digital currency and was addressed by clearing all transactions through a central clearinghouse. -The bitcoin network started in 2009, based on a reference implementation published by Nakamoto and since revised by many other programmers. During the first four years of operation, the network has grown to include an enormous amount of Proof-Of-Work computation, thereby increasing its security and resilience. In 2013, the total market value of bitcoin's primary monetary supply measure (M0) is estimated at more than 10 billion US dollars. The largest transaction processed by the network was $150 million US dollars, transmitted instantly and processed without any fees. +The bitcoin network started in 2009, based on a reference implementation published by Nakamoto and since revised by many other programmers. The distributed computation that provides security and resilience for bitcoin has increased exponentially and now exceeds that combined processing capacity of the world's top super-computers. Bitcoin's total market value is estimated at between 5 and 10 billion US dollars, depending on the dollar/bitcoin exchange rate. The largest transaction processed so far by the network was $150 million US dollars, transmitted instantly and processed without any fees. Satoshi Nakamoto withdrew from the public in April of 2011, leaving the responsibility of developing the code and network to a thriving group of volunteers. The name Satoshi Nakamoto is an alias and the identity of the person or people behind this invention is currently unknown. However, neither Satoshi Nakamoto nor anyone else exerts control over the bitcoin system, which operates based on fully transparent mathematical principles. The invention itself is groundbreaking and has already spawned new science in the fields of distributed computing, economics and econometrics. @@ -58,7 +58,7 @@ Satoshi Nakamoto's invention is also a practical solution to a previously unsolv Bitcoin is a technology, but it expresses money which is fundamentally a language for exchanging value between people. Let's look at the people who are using bitcoin and some of the most common uses of the currency and protocol through their stories. We will re-use these stories throughout the book to illustrate the real-life uses of digital money and how they are made possible by the various technologies that are part of bitcoin. North American Retail:: -Alice lives in Northern California's Bay Area. She has heard about bitcoin from her techie friends and wants to start using it. We will follow her story as she learns about bitcoin, acquires some and then spends some of her bitcoin to buy a cup of coffee at Bob's Cafe in Palo Alto. This story will introduce us to the software, the exchanges and basic transactions from the perspective of a retail consumer. +Alice lives in Northern California's Bay Area. She has heard about bitcoin from her techie friends and wants to start using it. We will follow her story as she learns about bitcoin, acquires some and then spends some of her bitcoin to buy a cup of coffee at Bob's Cafe in Palo Alto. This story will introduce us to the software and basic transactions from the perspective of a retail consumer. Offshore Contract Services:: Bob, the cafe owner in Palo Alto is building a new website. He has contracted with an Indian web developer, Gopesh, who lives in Bangalore, India. Gopesh has agreed to be paid in bitcoin. This story will examine the use of bitcoin for outsourcing, contract services and international wire transfers. @@ -86,7 +86,7 @@ To join the bitcoin network and start using the currency, all a user has to do i The three primary forms of bitcoin clients are: -Full Client:: A full client, or "full node" is a client that stores the entire history of bitcoin transactions, manages the user's wallets and can initiate transactions directly on the bitcoin network. This is similar to a standalone email server, in that it handles all aspects of the protocol without relying on any other servers or third party services. +Full Client:: A full client, or "full node" is a client that stores the entire history of bitcoin transactions (every transaction by every user, ever), manages the user's wallets and can initiate transactions directly on the bitcoin network. This is similar to a standalone email server, in that it handles all aspects of the protocol without relying on any other servers or third party services. Light Client:: A lightweight client stores the user's wallet but relies on third-party owned servers for access to the bitcoin transactions and network. The light client does not store a full copy of all transactions and therefore must trust the third party servers for transaction validation. This is similar to a standalone email client that connects to a mail server for access to a mailbox, in that it relies on a third party for interactions with the network. diff --git a/preface.asciidoc b/preface.asciidoc index 4f9402d6..9d03a4e0 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -111,7 +111,7 @@ address (aka public key):: ((("bitcoin address"))) ((("address", see="bitcoin address"))) ((("public key", see="bitcoin address"))) - A bitcoin address looks like +1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV+, they always start with a one. Just like you ask others to send an email to your email address, you would ask others to send you bitcoin to your bitcoin address. + A bitcoin address looks like +1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV+ - they consist of a string of letters and numbers starting with a "1" (number one). Just like you ask others to send an email to your email address, you would ask others to send you bitcoin to your bitcoin address. bip:: ((("bip"))) From 14aeecaba99b9c7aeaea4113b36977f9f83ce88c Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Sun, 7 Sep 2014 12:52:06 -0400 Subject: [PATCH 075/102] ch1 and ch2 fixes and diagram improvements --- ch01.asciidoc | 2 +- ch02.asciidoc | 22 +++++++++++----------- images/Transaction_Chain.png | Bin 88598 -> 68808 bytes 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index e6a02237..f840802d 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -154,7 +154,7 @@ Alice was introduced to bitcoin by a friend and so she has an easy way of gettin ==== Sending and receiving bitcoins -Alice has created her bitcoin web-wallet and she is now ready to receive funds. Her web-wallet application randomly generated a bitcoin address together with its corresponding key (an elliptic curve private key, described in more detail in <>). At this point, her bitcoin address is not known to the bitcoin network or "registered" with any part of the bitcoin system. Her bitcoin address is simply a number that corresponds to a key that she can use to control access to the funds. There is no account or association between that address and an account. Until the moment this address is referenced as the recipient of value in a transaction posted on the bitcoin ledger (the blockchain), it is simply part of the vast number of possible addresses that are "valid" in bitcoin. Once it has been associated with a transaction, it becomes part of the known addresses in the network and anyone can check its balance on the public ledger. +Alice has created her bitcoin web-wallet and she is now ready to receive funds. Her web-wallet application randomly generated a bitcoin address together with its corresponding key (an elliptic curve private key, described in more detail in <>). At this point, her bitcoin address is not known to the bitcoin network or "registered" with any part of the bitcoin system. Her bitcoin address is simply a number that corresponds to a key that she can use to control access to the funds. There is no account or association between that address and an account. Until the moment this address is referenced as the recipient of value in a transaction posted on the bitcoin ledger (the blockchain), it is simply part of the vast number of possible addresses that are "valid" in bitcoin. Once it has been associated with a transaction, it becomes part of the known addresses in the network and Alice can check its balance on the public ledger. Alice meets her friend Joe who introduced her to bitcoin at a local restaurant so they can exchange some US dollars and put some bitcoins into her account. She has brought a print out of her address and the QR code as shown on the home page of her web-wallet. There is nothing sensitive from a security perspective about the bitcoin address. It can be posted anywhere without risking the security of her account and it can be changed by creating a new address at any time. Alice wants to convert just $10 US dollars into bitcoin, so as not to risk too much money on this new technology. She gives Joe a $10 bill and the printout of her address so that Joe can send her the equivalent amount of bitcoin. diff --git a/ch02.asciidoc b/ch02.asciidoc index fe16d750..5fbaa0e5 100644 --- a/ch02.asciidoc +++ b/ch02.asciidoc @@ -83,7 +83,7 @@ Transactions are like lines in a double-entry bookkeeping ledger. In simple term .Transaction as Double-Entry Bookkeeping image::images/Transaction_Double_Entry.png["Transaction Double-Entry"] -The transaction also contains proof of ownership for each amount of bitcoin (inputs) whose value is transferred, in the form of a digital signature from the owner, which can be independently validated by anyone. In bitcoin terms, "spending" is signing the value of a previous transaction for which you have the keys over to a new owner identified by a bitcoin address. +The transaction also contains proof of ownership for each amount of bitcoin (inputs) whose value is transferred, in the form of a digital signature from the owner, which can be independently validated by anyone. In bitcoin terms, "spending" is signing a transaction which transfers value from a previous transaction over to a new owner identified by a bitcoin address. [TIP] @@ -93,7 +93,7 @@ _Transactions_ move value *from* _transaction inputs_ *to* _transaction outputs_ [[blockchain-mnemonic]] -.Transaction Chain +.A chain of transactions, where the output of one transaction is the input of the next transaction image::images/Transaction_Chain.png["Transaction chain"] Alice's payment to Bob's Cafe utilizes a previous transaction as its input. In the previous chapter Alice received bitcoin from her friend Joe in return for cash. That transaction has a number of bitcoins locked (encumbered) against Alice's key. Her new transaction to Bob's Cafe references the previous transaction as an input and creates new outputs to pay for the cup of coffee and receive change. The transactions form a chain, where the inputs from the latest transaction correspond to outputs from previous transactions. Alice's key provides the signature which unlocks those previous transaction outputs, thereby proving to the bitcoin network that she owns the funds. She attaches the payment for coffee to Bob's address, thereby "encumbering" that output with the requirement that Bob produces a signature in order to spend that amount. This represents a transfer of value between Alice and Bob. @@ -124,11 +124,11 @@ Alice's wallet application contains all the logic for selecting appropriate inpu ==== Getting the right inputs -Alice's wallet application will first have to find inputs that can pay for the amount she wants to send to Bob. Most wallet applications keep a small database of "unspent transaction outputs" that are locked (encumbered) with the wallet's own keys. Therefore, Alice's wallet would contain a copy of the transaction output from Joe's transaction which was created in exchange for cash (see <>). A bitcoin wallet application that runs as a full-index client actually contains a copy of *every unspent output* from every transaction in the blockchain. This allows a wallet to construct transaction inputs as well as to quickly verify incoming transactions as having correct inputs. +Alice's wallet application will first have to find inputs that can pay for the amount she wants to send to Bob. Most wallet applications keep a small database of "unspent transaction outputs" that are locked (encumbered) with the wallet's own keys. Therefore, Alice's wallet would contain a copy of the transaction output from Joe's transaction which was created in exchange for cash (see <>). A bitcoin wallet application that runs as a full-index client actually contains a copy of every unspent output from every transaction in the blockchain. This allows a wallet to construct transaction inputs as well as to quickly verify incoming transactions as having correct inputs. However, since a full-index client takes up a lot of disk space, most user wallets run "lightweight" clients that track only the user's own unspent outputs. If the wallet application does not maintain a copy of unspent transaction outputs, it can query the bitcoin network to retrieve this information, using a variety of APIs available by different providers, or by asking a full-index node using the bitcoin JSON RPC API. Below we see an example of a RESTful API request, constructed as an HTTP GET command to a specific URL. This URL will return all the unspent transaction outputs for an address, giving any application the information it needs to construct transaction inputs for spending. We use the simple command-line HTTP client _cURL_ to retrieve the response: -.Look up all the unspent outputs for Alice's address 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK +.Look up all the unspent outputs for Alice's bitcoin address ---- $ curl https://blockchain.info/unspent?active=1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK @@ -154,7 +154,7 @@ The response above shows that the bitcoin network knows of one unspent output (o [TIP] ==== -Look up the transaction from Joe to Alice to see the information referenced above as it is stored in the bitcoin blockchain. Using the blockchain explorer web application, follow the URL below: +Use the following link to look up the transaction from Joe to Alice: https://blockchain.info/tx/7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 ==== @@ -176,13 +176,13 @@ The resulting transaction can be seen using a blockchain explorer web applicatio .Alice's transaction to Bob's Cafe image::images/AliceCoffeeTransaction.png["Alice Coffee Transaction"] -Use the following link to see the transaction on the bitcoin blockchain: - [[transaction-alice-url]] -.Link to Alice's transaction on the bitcoin blockchain ----- +[TIP] +==== +Use the following link to look up the transaction from Alice to Bob's Cafe: + https://blockchain.info/tx/0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2 ----- +==== ==== Adding the transaction to the ledger @@ -214,7 +214,7 @@ The bitcoin system of trust is based on computation. Transactions are bundled in * Mining creates new bitcoins in each block, almost like a central bank printing new money. The amount of bitcoin created per block is fixed and diminishes with time. * Mining creates trust by ensuring that transactions are only confirmed if enough computational power was devoted to the block that contains them. More blocks mean more computation which means more trust. -A good way to describe mining is like a giant competitive game of sudoku that resets every time someone finds a solution and whose difficulty automatically adjusts so that it takes approximately 10 minutes to find a solution. Imagine a giant sudoku puzzle, several thousand rows and columns in size. If I show you a completed puzzle you can verify it quite quickly. If it is empty, however, it takes a lot of work to solve! The difficulty of the sudoku can be adjusted by changing its size (more or fewer rows and columns), but it can still be verified quite easily even if it is very large. The "puzzle" used in bitcoin is based on a cryptographic hash and exhibits similar characteristics: it is asymmetrically hard to solve but easy to verify, and its difficulty can be adjusted. +A good way to describe mining is like a giant competitive game of sudoku that resets every time someone finds a solution and whose difficulty automatically adjusts so that it takes approximately 10 minutes to find a solution. Imagine a giant sudoku puzzle, several thousand rows and columns in size. If I show you a completed puzzle you can verify it quite quickly. However, if the puzzle has a few squares filled and the rest is empty, it takes a lot of work to solve! The difficulty of the sudoku can be adjusted by changing its size (more or fewer rows and columns), but it can still be verified quite easily even if it is very large. The "puzzle" used in bitcoin is based on a cryptographic hash and exhibits similar characteristics: it is asymmetrically hard to solve but easy to verify, and its difficulty can be adjusted. In <> we introduced Jing, a computer engineering student in Shanghai. Jing is participating in the bitcoin network as a miner. Every 10 minutes or so, Jing joins thousands of other miners in a global race to find a solution to a block of transactions. Finding such a solution, the so-called "Proof-of-Work", requires quadrillions of hashing operations per second across the entire bitcoin network. The algorithm for "Proof-of-Work" involves repeatedly hashing the header of the block and a random number with the SHA256 cryptographic algorithm until a solution matching a pre-determined pattern emerges. The first miner to find such a solution wins the round of competition and publishes that block into the blockchain. diff --git a/images/Transaction_Chain.png b/images/Transaction_Chain.png index c638e37d5a6ab0ec8db0d321f2312639359b4b31..00c0097b0f01eed76a77bf0e657894d7d0ecd74f 100644 GIT binary patch literal 68808 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�nwwFO}|CxO=?<_`*76zwym!d$$Pm%NDS) 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 literal 88598 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%0AmzA@R?g2R?-<3~9(b#P)QGK)w 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 Date: Sun, 7 Sep 2014 13:22:17 -0400 Subject: [PATCH 076/102] cleaned up ECC math, fixed to ch4 --- ch04.asciidoc | 122 ++++++++++++++++++++++++++------------------------ 1 file changed, 63 insertions(+), 59 deletions(-) diff --git a/ch04.asciidoc b/ch04.asciidoc index c0bf4e39..a4efa281 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -11,55 +11,6 @@ In the payment portion of a bitcoin transaction, the recipient's public key is r In this chapter we will introduce wallets, which contain cryptographic keys. We will look at how keys are generated, stored and managed. We will review the various encoding formats used to represent private and public keys, addresses and script addresses. Finally we will look at special uses of keys: to sign messages, to prove ownership and to create vanity addresses and paper wallets. - -=== ECDSA Arithmetic - -Just as RSA uses integer arithmetic operators over a prime modulus to provide cryptographic functions, ECDSA defines an arithmetic that has some features in common with traditional arithmetic. - -Wikipedia has a good article that explains the details of how arithmetic operations work on an elliptic curve. See http://en.wikipedia.org/wiki/Elliptic_curve_cryptography for more information. - -Glossing over details, here are the fundamental facts: - -An elliptic curve field is a set of points (x, y) each of which satisfies the equation - -y^2^ = x^3^ + ax + b (mod P) - -for some constants a, b and P (where P is prime). Bitcoin uses a curve known as secp256k1, where a=0, b=7, and P = 2^256^ - 2^32^ - 2^9^ - 2^8^ - 2^7^ - 2^6^ - 2^4^ - 1. - -So for example, (55066263022277343669578718895168534326250603453777594175500187360389116729240, 32670510020758816978083085130507043184471273380659243275938904335757337482424) is a point on the secp256k1 curve. You can check this yourself using Python. - ----- -Python 3.4.0 (default, Mar 30 2014, 19:23:13) -[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.38)] on darwin -Type "help", "copyright", "credits" or "license" for more information. ->>> p = 115792089237316195423570985008687907853269984665640564039457584007908834671663 ->>> x = 55066263022277343669578718895168534326250603453777594175500187360389116729240 ->>> y = 32670510020758816978083085130507043184471273380659243275938904335757337482424 ->>> (x ** 3 + 7 - y**2) % p -0 ----- - -In addition, there is also a "point at infinity", which roughly corresponds to the role of 0 in addition. On computers, it's sometimes represented by x = y = 0 (which doesn't satisfy the elliptic curve equation -- but it's an easy separate case that can be checked). - -There is also an operator "+", called "addition" which has some properties similar to the traditional addition of real numbers that grade school children learn. Given two points P~1~ and P~2~ on the elliptic curve, there is a third point P~3~ = P~1~ + P~2~, also on the elliptic curve. - -Geometrically, this third point P~3~ is calculated by drawing a line between P~1~ and P~2~. This line will intersect the elliptic curve in exactly one additional place. Call this point P~3~' = (x, y). Then reflect in the X axis to get P~3~ = (x, -y). - -There are a couple of special cases which explain the need for the "point at infinity". - -If P~1~ and P~2~ are the same point, the line "between" P~1~ and P~2~ should extend to be the tangent on the curve at this point P~1~. This tangent will intersect the curve in exactly one new point. You can use techniques from calculus to determine the slope of the tangent line. These techniques curiously work even though we are restricting our interest to points on the curve with two integer coordinates! - -In some cases (i.e., if P~1~ and P~2~ have the same x values but different y values), the tangent line will be exactly vertical, in which case P3 = "point at infinity". - -If one of P~1~ is the "point at infinity", then the sum P~1~ + P~2~ = P~2~. Similary, if P~2~ is the point at infinity, then P~1~ + P~2~ = P~1~. This shows how the point at infinity plays the roll of 0. - -It turns out that + is associative, which means that `(A+B)+C = A+(B+C)`. That means we can write A+B+C without parentheses without any ambiguity. - -Now that we have defined addition, we can define multiplication in the standard way that extends addition. For a point P on the elliptic curve, if k is a whole number, then kP = P + P + P + ... + P (k times). Note that k is sometimes confusingly called an "exponent" in this case. (It would make a lot more sense to call it this if we used an operator that looked like multiplication rather than "+".) - - -=== Keys - ==== Public key cryptography and crypto-currency ((("public key"))) Public key cryptography was invented in the 1970s and is a mathematical foundation for computer and information security. @@ -85,7 +36,6 @@ A bitcoin wallet contains a collection of key pairs, each consisting of a privat .Private Key, Public Key and Bitcoin Address image::images/privk_to_pubK_to_addressA.png["privk_to_pubK_to_addressA"] - ==== Private Keys A +private key+ is simply a number, picked at random. Ownership and control over the private key is the root of user control over all funds associated with the corresponding bitcoin address. The private key is used to create signatures that are required to spend bitcoins by proving ownership of funds used in a transaction. The private key must remain secret at all times, as revealing it to a third party is equivalent to giving them control over the bitcoins secured by that key. The private key must also be backed up and protected from accidental loss, since if lost it cannot be recovered and the funds secured by it are forever lost too. @@ -103,7 +53,7 @@ More accurately, the private key can be any number between +1+ and +n - 1+, wher [TIP] ==== -Do not try and design your own pseudo random number generator (PRNG). Use a cryptographically-secure pseudo-random number generator (CSPRNG) with a seed from a source of sufficient entropy, the choice of which depends on the operating-system. Correct implementation of the CSPRNG is critical to the security of the keys. DIY is highly discouraged unless you are a professional cryptographer. +Do not write your own code to create a random number or use a "simple" random number generator offered by your programming language. Use a cryptographically-secure pseudo-random number generator (CSPRNG) with a seed from a source of sufficient entropy. Study the documentation of the random number generator library you choose to make sure it is cryptographically secure. Correct implementation of the CSPRNG is critical to the security of the keys. ==== Below is a randomly generated private key shown in hexadecimal format (256 binary digits shown as 64 hexadecimal digits, each 4 bits): @@ -143,6 +93,7 @@ $ sx newkey The public key is calculated from the private key using elliptic curve multiplication, which is irreversible: latexmath:[\(K = k * G\)]+ where +k+ is the private key, +G+ is a constant point called the _Generator Point_ and +K+ is the resulting public key. The reverse operation, known as "finding the discrete logarithm" -- calculating +k+ if you know +K+ -- is as difficult as trying all possible values of +k+, i.e., a brute-force search. Before we demonstrate how to generate a public key from a private key, let's look at Elliptic Curve Cryptography in a bit more detail. + [[elliptic_curve]] ==== Elliptic Curve Cryptography Explained ((("elliptic curve cryptography", "ECC"))) @@ -180,6 +131,43 @@ Because this curve is defined over a finite field of prime order instead of over .Elliptic Curve Cryptography: Visualizing an elliptic curve over F(p), with p=17 image::images/ecc-over-F17-math.png["ecc-over-F17-math"] +So for example, below is a point P with coordinates (x,y) that is a point on the secp256k1 curve. You can check this yourself using Python: +---- +P = (55066263022277343669578718895168534326250603453777594175500187360389116729240, 32670510020758816978083085130507043184471273380659243275938904335757337482424) +---- + +==== +[source, pycon] +---- +Python 3.4.0 (default, Mar 30 2014, 19:23:13) +[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.38)] on darwin +Type "help", "copyright", "credits" or "license" for more information. +>>> p = 115792089237316195423570985008687907853269984665640564039457584007908834671663 +>>> x = 55066263022277343669578718895168534326250603453777594175500187360389116729240 +>>> y = 32670510020758816978083085130507043184471273380659243275938904335757337482424 +>>> (x ** 3 + 7 - y**2) % p +0 +---- +==== + +In elliptic curve math, there is a point called the "point at infinity", which roughly corresponds to the role of 0 in addition. On computers, it's sometimes represented by x = y = 0 (which doesn't satisfy the elliptic curve equation -- but it's an easy separate case that can be checked). + +There is also an operator "+", called "addition" which has some properties similar to the traditional addition of real numbers that grade school children learn. Given two points P~1~ and P~2~ on the elliptic curve, there is a third point P~3~ = P~1~ + P~2~, also on the elliptic curve. + +Geometrically, this third point P~3~ is calculated by drawing a line between P~1~ and P~2~. This line will intersect the elliptic curve in exactly one additional place. Call this point P~3~' = (x, y). Then reflect in the X axis to get P~3~ = (x, -y). + +There are a couple of special cases which explain the need for the "point at infinity". + +If P~1~ and P~2~ are the same point, the line "between" P~1~ and P~2~ should extend to be the tangent on the curve at this point P~1~. This tangent will intersect the curve in exactly one new point. You can use techniques from calculus to determine the slope of the tangent line. These techniques curiously work even though we are restricting our interest to points on the curve with two integer coordinates! + +In some cases (i.e., if P~1~ and P~2~ have the same x values but different y values), the tangent line will be exactly vertical, in which case P3 = "point at infinity". + +If P~1~ is the "point at infinity", then the sum P~1~ + P~2~ = P~2~. Similary, if P~2~ is the point at infinity, then P~1~ + P~2~ = P~1~. This shows how the point at infinity plays the roll of 0. + +It turns out that + is associative, which means that `(A+B)+C = A+(B+C)`. That means we can write A+B+C without parentheses without any ambiguity. + +Now that we have defined addition, we can define multiplication in the standard way that extends addition. For a point P on the elliptic curve, if k is a whole number, then kP = P + P + P + ... + P (k times). Note that k is sometimes confusingly called an "exponent" in this case. + [[public_key_derivation]] ==== Generating a public key @@ -192,7 +180,12 @@ Starting with a private key in the form of a randomly generated number +k+, we m \end{equation} ++++ -where +k+ is the private key, +G+ is a fixed point on the curve called the _generator point_, ((("generator point"))) and +K+ is the resulting public key, another point on the curve. Since the generator point is always the same, a private key k multiplied with G will always produce the same public key K. +where +k+ is the private key, +G+ is the generator point, ((("generator point"))) and +K+ is the resulting public key, a point on the curve. Since the generator point is always the same for all bitcoin users, a private key k multiplied with G will always result in the same public key K. The relationship between k and K is fixed, but can only be calculated in one direction, from k to K. That's why a bitcoin address (derived from K) can be shared with anyone and does not reveal the user's private key (k). + +[TIP] +==== +A private key can be converted into a public key, but a public key cannot be converted back into a private key because the math only works one way. +==== Implementing the elliptic curve multiplication above, we take the private key generated previously and multiply it by G: @@ -212,9 +205,7 @@ y = 07CF33DA18...505BDB To visualize multiplication of a point with an integer, we will use the simpler elliptic curve over the real numbers -- remember, the math is the same. Our goal is to find the multiple kG of the generator point G. That is the same as adding G to itself, k times in a row. In elliptic curves, adding a point to itself is the equivalent of drawing a tangent line on the point and finding where it intersects the curve again, then reflecting that point on the x-axis. -Starting with the generator point G, we take the tangent of the curve at G until it crosses the curve again at another point. This new point is -2G. Reflecting that point across the x-axis gives us 2G. If we take the tangent at 2G, it crosses the curve at -4G, which again we reflect on the x-axis to find 4G. Continuing this process, we can bounce around the curve finding the multiples of G, 2G, 4G, 8G, etc. As you can see, a randomly selected large number k, when multiplied against the generator point G is like bouncing around the curve k times, until we land on the point kG which is the public key. This process is irreversible, meaning that it is infeasible to find the factor k (the secret k) in any way other than trying all multiples of G (1G, 2G, 4G, etc) in a brute-force search for k. Since k can be an enormous number, that brute-force search would take an infeasible amount of computation and time. - - +The diagram below shows the process for deriving G, 2G, 4G, as a geometric operation on the curve. [[ecc_illustrated]] .Elliptic Curve Cryptography: Visualizing the multiplication of a point G by an integer k on an elliptic curve @@ -222,14 +213,21 @@ image::images/ecc_illustrated.png["ecc_illustrated"] [TIP] ==== -A private key can be converted into a public key, but a public key cannot be converted back into a private key because the math only works one way. +Most bitcoin implementations use the OpenSSL cryptographic library to do the elliptic curve math. For example, to derive the public key, the function +EC_POINT_mul()+ is used. See http://wiki.openssl.org/index.php/Elliptic_Curve_Cryptography ==== === Bitcoin Addresses -An address is a string of digits and characters that can be shared with anyone who wants to send you money. In bitcoin, addresses produced from public keys begin with the digit "1". The bitcoin address is what appears most commonly in a transaction as the "recipient" of the funds. If we were to compare a bitcoin transaction to a paper cheque, the bitcoin address is the beneficiary, which is what we write on the line after "Pay to the order of". On a paper cheque, that beneficiary can sometimes be the name of a bank account holder, but can also include corporations, institutions or even cash. Because paper cheques do not need to specify an account, but rather use an abstract name as the recipient of funds, that makes paper cheques very flexible as payment instruments. Bitcoin transactions use a similar abstraction, the bitcoin address, to make them very flexible. A bitcoin address can represent the owner of a private/public key pair, or it can represent something else, such as a payment script, as we will see in <>. For now, let's examine the simple case, a bitcoin address that represents, and is derived from, a public key. - -A bitcoin address derived from a public key is a string of numbers and letters that begins with the number one, such as +1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy+. The bitcoin address is derived from the public key through the use of one-way cryptographic hashing; a "hashing algorithm" or simply "hash algorithm" is a one-way function that produces a fingerprint or "hash" of an arbitrary sized input. Cryptographic hash functions are used extensively in bitcoin: in bitcoin addresses, in script addresses and in the mining "Proof-of-Work" algorithm. The algorithms used to make a bitcoin address from a public key are the Secure Hash Algorithm (SHA) and the RACE Integrity Primitives Evaluation Message Digest (RIPEMD), specifically SHA256 and RIPEMD160. +A bitcoin address is a string of digits and characters that can be shared with anyone who wants to send you money. Addresses produced from public keys consist of a string of numbers and letters, beginning with the digit "1". Here's an example of a bitcoin address: + +---- +1thMirt546nngXqyPEz532S8fLwbozud8 +---- + + +The bitcoin address is what appears most commonly in a transaction as the "recipient" of the funds. If we were to compare a bitcoin transaction to a paper cheque, the bitcoin address is the beneficiary, which is what we write on the line after "Pay to the order of". On a paper cheque, that beneficiary can sometimes be the name of a bank account holder, but can also include corporations, institutions or even cash. Because paper cheques do not need to specify an account, but rather use an abstract name as the recipient of funds, that makes paper cheques very flexible as payment instruments. Bitcoin transactions use a similar abstraction, the bitcoin address, to make them very flexible. A bitcoin address can represent the owner of a private/public key pair, or it can represent something else, such as a payment script, as we will see in <>. For now, let's examine the simple case, a bitcoin address that represents, and is derived from, a public key. + +The bitcoin address is derived from the public key through the use of one-way cryptographic hashing; a "hashing algorithm" or simply "hash algorithm" is a one-way function that produces a fingerprint or "hash" of an arbitrary sized input. Cryptographic hash functions are used extensively in bitcoin: in bitcoin addresses, in script addresses and in the mining "Proof-of-Work" algorithm. The algorithms used to make a bitcoin address from a public key are the Secure Hash Algorithm (SHA) and the RACE Integrity Primitives Evaluation Message Digest (RIPEMD), specifically SHA256 and RIPEMD160. Starting with the public key K, we compute the SHA256 hash and then compute the RIPEMD160 hash of the result, producing a 160 bit (20 byte) number: [latexmath] @@ -240,6 +238,12 @@ Starting with the public key K, we compute the SHA256 hash and then compute the ++++ where K is the public key and A is the resulting bitcoin address. + +[TIP] +==== +A bitcoin address is *not* the same as a public key. Bitcoin addresses are derived from a public key using a one-way function. +==== + Bitcoin addresses are almost always presented to users in an encoding called "Base58Check" (see <> below), which uses 58 characters (a base-58 number system) and a checksum to help human readability, avoid ambiguity and protect against errors in address transcription and entry. Base58Check is also used in many other ways in bitcoin, whenever there is a need for a user to read and correctly transcribe a number, such as a bitcoin address, a private key, an encrypted key, or a script hash. In the next section we will examine the mechanics of Base58Check encoding and decoding, and the resulting representations. [[pubkey_to_adddress]] From 23a6c8276cd022cb7121dfb4b66788bef3af435b Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Sun, 7 Sep 2014 13:39:44 -0400 Subject: [PATCH 077/102] ch4 and ch5 fixes, moved OP list to appendix --- appdx-scriptops.asciidoc | 163 +++++++++++++++++++++++++++++++++++++++ ch04.asciidoc | 11 +-- ch05.asciidoc | 4 +- 3 files changed, 171 insertions(+), 7 deletions(-) create mode 100644 appdx-scriptops.asciidoc diff --git a/appdx-scriptops.asciidoc b/appdx-scriptops.asciidoc new file mode 100644 index 00000000..fb6f50b0 --- /dev/null +++ b/appdx-scriptops.asciidoc @@ -0,0 +1,163 @@ + +[[tx_script_ops]] +=== Transaction Script Language Operators, Constants and Symbols + +[[tx_script_ops_table_pushdata]] +.Push Value onto Stack +[options="header"] +|======= +| Symbol | Value (hex) | Description +| OP_0 or OP_FALSE | 0x00 | An empty array is pushed on to the stack +| 1-75 | 0x01-0x4b | Push the next N bytes onto the stack, where N is 1 to 75 bytes +| OP_PUSHDATA1 | 0x4c | The next script byte contains N, push the following N bytes onto the stack +| OP_PUSHDATA2 | 0x4d | The next two script bytes contain N, push the following N bytes onto the stack +| OP_PUSHDATA4 | 0x4e | The next four script bytes contain N, push the following N bytes onto the stack +| OP_1NEGATE | 0x4f | Push the value "-1" onto the stack +| OP_RESERVED | 0x50 | Halt - Invalid transaction unless found in an unexecuted OP_IF clause +| OP_1 or OP_TRUE| 0x51 | Push the value "1" onto the stack +| OP_2 to OP_16 | 0x52 to 0x60 | For OP_N, push the value "N" onto the stack. E.g., OP_2 pushes "2" +|======= + +[[tx_script_ops_table_control]] +.Conditional Flow Control +[options="header"] +|======= +| Symbol | Value (hex) | Description +| OP_NOP | 0x61 | Do nothing +| OP_VER | 0x62 | Halt - Invalid transaction unless found in an unexecuted OP_IF clause +| OP_IF | 0x63 | Execute the statements following if top of stack is not 0 +| OP_NOTIF | 0x64 | Execute the statements following if top of stack is 0 +| OP_VERIF | 0x65 | Halt - Invalid transaction +| OP_VERNOTIF | 0x66 | Halt - Invalid transaction +| OP_ELSE | 0x67 | Execute only if the previous statements were not executed +| OP_ENDIF | 0x68 | Ends the OP_IF, OP_NOTIF, OP_ELSE block +| OP_VERIFY | 0x69 | Check the top of the stack, Halt and Invalidate transaction if not TRUE +| OP_RETURN | 0x6a | Halt and invalidate transaction +|======= + +[[tx_script_ops_table_stack]] +.Stack Operations +[options="header"] +|======= +| Symbol | Value (hex) | Description +| OP_TOALTSTACK | 0x6b | Pop top item from stack and push to alternative stack +| OP_FROMALTSTACK | 0x6c | Pop top item from alternative stack and push to stack +| OP_2DROP | 0x6d | Pop top two stack items +| OP_2DUP | 0x6e | Duplicate top two stack items +| OP_3DUP | 0x6f | Duplicate top three stack items +| OP_2OVER | 0x70 | Copies the third and fourth items in the stack to the top +| OP_2ROT | 0x71 | Moves the fifth and sixth items in the stack to the top +| OP_2SWAP | 0x72 | Swap the two top pairs of items in the stack +| OP_IFDUP | 0x73 | Duplicate the top item in the stack if it is not 0 +| OP_DEPTH | 0x74 | Count the items on the stack and push the resulting count +| OP_DROP | 0x75 | Pop the top item in the stack +| OP_DUP | 0x76 | Duplicate the top item in the stack +| OP_NIP | 0x77 | Pop the second item in the stack +| OP_OVER | 0x78 | Copy the second item in the stack and push it on to the top +| OP_PICK | 0x79 | Pop value N from top, then copy the Nth item to the top of the stack +| OP_ROLL | 0x7a | Pop value N from top, then move the Nth item to the top of the stack +| OP_ROT | 0x7b | Rotate the top three items in the stack +| OP_SWAP | 0x7c | Swap the top three items in the stack +| OP_TUCK | 0x7d | Copy the top item and insert it between the top and second item. +|======= + +[[tx_script_ops_table_splice]] +.String Splice Operations +[options="header"] +|======= +| Symbol | Value (hex) | Description +| _OP_CAT_ | 0x7e | Disabled (Concatenates top two items) +| _OP_SUBSTR_ | 0x7f | Disabled (Returns substring) +| _OP_LEFT_ | 0x80 | Disabled (Returns left substring) +| _OP_RIGHT_ | 0x81 | Disabled (Returns right substring) +| OP_SIZE | 0x82 | Calculate string length of top item and push the result +|======= + +[[tx_script_ops_table_binmath]] +.Binary Arithmetic and Conditionals +[options="header"] +|======= +| Symbol | Value (hex) | Description +| _OP_INVERT_ | 0x83 | Disabled (Flip the bits of the top item) +| _OP_AND_ | 0x84 | Disabled (Boolean AND of two top items) +| _OP_OR_ | 0x85 | Disabled (Boolean OR of two top items) +| _OP_XOR_ | 0x86 | Disabled (Boolean XOR of two top items) +| OP_EQUAL | 0x87 | Push TRUE (1) if top two items are exactly equal, push FALSE (0) otherwise +| OP_EQUALVERIFY | 0x88 | Same as OP_EQUAL, but run OP_VERIFY after to halt if not TRUE +| OP_RESERVED1 | 0x89 | Halt - Invalid transaction unless found in an unexecuted OP_IF clause +| OP_RESERVED2 | 0x8a | Halt - Invalid transaction unless found in an unexecuted OP_IF clause +|======= + +[[tx_script_ops_table_numbers]] +.Numeric Operators +[options="header"] +|======= +| Symbol | Value (hex) | Description +| OP_1ADD | 0x8b | Add 1 to the top item +| OP_1SUB | 0x8c | Subtract 1 from the top item +| _OP_2MUL_ | 0x8d | Disabled (Multiply top item by 2) +| _OP_2DIV_ | 0x8e | Disabled (Divide top item by 2) +| OP_NEGATE | 0x8f | Flip the sign of top item +| OP_ABS | 0x90 | Change the sign of the top item to positive +| OP_NOT | 0x91 | If top item is 0 or 1 boolean flip it, otherwise return 0 +| OP_0NOTEQUAL | 0x92 | If top item is 0 return 0, otherwise return 1 +| OP_ADD | 0x93 | Pop top two items, add them and push result +| OP_SUB | 0x94 | Pop top two items, subtract first form second, push result +| OP_MUL | 0x95 | Disabled (Multiply top two items) +| OP_DIV | 0x96 | Disabled (Divide second item by first item) +| OP_MOD | 0x97 | Disabled (Remainder divide second item by first item) +| OP_LSHIFT | 0x98 | Disabled (Shift second item left by first item number of bits) +| OP_RSHIFT | 0x99 | Disabled (Shift second item right by first item number of bits) +| OP_BOOLAND | 0x9a | Boolean AND of top two items +| OP_BOOLOR | 0x9b | Boolean OR of top two items +| OP_NUMEQUAL | 0x9c | Return TRUE if top two items are equal numbers +| OP_NUMEQUALVERIFY | 0x9d | Same as NUMEQUAL, then OP_VERIFY to halt if not TRUE +| OP_NUMNOTEQUAL | 0x9e | Return TRUE if top two items are not equal numbers +| OP_LESSTHAN | 0x9f | Return TRUE if second item is less than top item +| OP_GREATERTHAN | 0xa0 | Return TRUE if second item is greater than top item +| OP_LESSTHANOREQUAL | 0xa1 | Return TRUE if second item is less than or equal to top item +| OP_GREATERTHANOREQUAL | 0xa2 | Return TRUE if second item is great than or equal to top item +| OP_MIN | 0xa3 | Return the smaller of the two top items +| OP_MAX | 0xa4 | Return the larger of the two top items +| OP_WITHIN | 0xa5 | Return TRUE if the third item is between the second item (or equal) and first item +|======= + + +[[tx_script_ops_table_crypto]] +.Cryptographic and Hashing Operations +[options="header"] +|======= +| Symbol | Value (hex) | Description +| OP_RIPEMD160 | 0xa6 | Return RIPEMD160 hash of top item +| OP_SHA1 | 0xa7 | Return SHA1 hash of top item +| OP_SHA256 | 0xa8 | Return SHA256 hash of top item +| OP_HASH160 | 0xa9 | Return RIPEMD160(SHA256(x)) hash of top item +| OP_HASH256 | 0xaa | Return SHA256(SHA256(x)) hash of top item +| OP_CODESEPARATOR | 0xab | Mark the beginning of signature-checked data +| OP_CHECKSIG | 0xac | Pop a public key and signature and validate the signature for the transaction's hashed data, return TRUE if matching +| OP_CHECKSIGVERIFY | 0xad | Same as CHECKSIG, then OP_VEIRFY to halt if not TRUE +| OP_CHECKMULTISIG | 0xae | Run CHECKSIG for each pair of signature and public key provided. All must match. Bug in implementation pops an extra value, prefix with OP_NOP as workaround +| OP_CHECKMULTISIGVERIFY | 0xaf | Same as CHECKMULTISIG, then OP_VERIFY to halt if not TRUE +|======= + +[[tx_script_ops_table_nop]] +.Non-Operators +[options="header"] +|======= +| Symbol | Value (hex) | Description +| OP_NOP1-OP_NOP10 | 0xb0-0xb9 | Does nothing, ignored. +|======= + + +[[tx_script_ops_table_internal]] +.Reserved OP codes for internal use by the parser +[options="header"] +|======= +| Symbol | Value (hex) | Description +| OP_SMALLDATA | 0xf9 | Represents small data field +| OP_SMALLINTEGER | 0xfa | Represents small integer data field +| OP_PUBKEYS | 0xfb | Represents public key fields +| OP_PUBKEYHASH | 0xfd | Represents a public key hash field +| OP_PUBKEY | 0xfe | Represents a public key field +| OP_INVALIDOPCODE | 0xff | Represents any OP code not currently assigned +|======= diff --git a/ch04.asciidoc b/ch04.asciidoc index a4efa281..53ea1f81 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -322,10 +322,11 @@ The private key we generated earlier can be represented as: All of the above representations are different ways of showing the same number, the same private key. They look different, but any one format can easily be converted to any other format. - ===== Decode from Base58Check to Hex -The sx-tools package (See <>) makes Base58Check format decoding easy on the command line. We use the base58check-decode command: +The sx-tools package (See <>) makes it easy to write shell-scripts and command-line "pipes" that manipulate bitcoin keys, addresses, and transactions. You can use sx-tools to decode the Base58Check format on the command line: + +We use the base58check-decode command: ---- $ sx base58check-decode 5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn 1e99423a4ed27608a15a2616a2b0e9e52ced330ac530edcc32c8ffc6a526aedd 128 @@ -335,7 +336,7 @@ The result is the hexadecimal key, followed by the Wallet Import Format (WIF) ve ===== Encode from Hex to Base58Check -To encode into Base58Check, we provide the hex private key, followed by the Wallet Import Format (WIF) version prefix 128: +To encode into Base58Check (the opposite of the previous command), we provide the hex private key, followed by the Wallet Import Format (WIF) version prefix 128: ---- $ sx base58check-encode 1e99423a4ed27608a15a2616a2b0e9e52ced330ac530edcc32c8ffc6a526aedd 128 5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn @@ -463,7 +464,7 @@ Wallets contain keys, not coins. The coins are stored on the blockchain in the f ==== Non-Deterministic (Random) Wallets -In the first implementations of bitcoin clients, wallets were simply collections of randomly generated private keys. For example, the Bitcoin Core Client pre-generates 100 random private keys when first started and generates more keys as needed, trying to use each key only once. This type of wallet is nicknamed "Just a Bunch Of Keys", or JBOK, and such wallets are being replaced with deterministic wallets because they are cumbersome to manage, backup and import. The disadvantage of random keys is that if you generate many of them you must keep copies of all of them, meaning that the wallet must be backed-up frequently. Each key must be backed-up, or the funds it controls are irrevocably lost if the wallet becomes inaccessible. This conflicts directly with the principle of avoiding address re-use, by using each bitcoin address for only one transaction. Address re-use reduces privacy by associating multiple transactions and addresses with each other. A Type-0 wallet is a poor choice of wallet, especially if you want to avoid address re-use as that means managing many keys, which creates the need for very frequent backups. The Bitcoin Core Client includes a wallet that is implemented as a Type-0 wallet, but the use of this wallet is actively discouraged by the Bitcoin Core developers. +In the first implementations of bitcoin clients, wallets were simply collections of randomly generated private keys. The types of wallets are called _Type-0 Non-Deterministic Wallets_. For example, the Bitcoin Core Client pre-generates 100 random private keys when first started and generates more keys as needed, trying to use each key only once. This type of wallet is nicknamed "Just a Bunch Of Keys", or JBOK, and such wallets are being replaced with deterministic wallets because they are cumbersome to manage, backup and import. The disadvantage of random keys is that if you generate many of them you must keep copies of all of them, meaning that the wallet must be backed-up frequently. Each key must be backed-up, or the funds it controls are irrevocably lost if the wallet becomes inaccessible. This conflicts directly with the principle of avoiding address re-use, by using each bitcoin address for only one transaction. Address re-use reduces privacy by associating multiple transactions and addresses with each other. A Type-0 non-deterministic wallet is a poor choice of wallet, especially if you want to avoid address re-use as that means managing many keys, which creates the need for very frequent backups. The Bitcoin Core Client includes a wallet that is implemented as a Type-0 wallet, but the use of this wallet is actively discouraged by the Bitcoin Core developers. [[Type0_wallet]] .Type-0 Non-Deterministic (Random) Wallet: A Collection of Randomly Generated Keys @@ -475,7 +476,7 @@ Deterministic, or "seeded" wallets are wallets that contain private keys which a ==== Mnemonic Code Words (DRAFT:BIP0039) -Mnemonic codes are English word sequences that are generated from a random sequence and used to produce a seed for use in deterministic wallets. The sequence of words is sufficient to re-create the seed and from there re-create the wallet and all the derived keys. A wallet application that implements deterministic wallets with mnemonic code will show the user a sequence of 12-24 words when first creating a wallet. That sequence of words is the wallet backup and can be used to recover and re-create all the keys in the same or any compatible wallet application. +Mnemonic codes are English word sequences that represent (encode) a random number used as a seed to derive a deterministic wallet. The sequence of words is sufficient to re-create the seed and from there re-create the wallet and all the derived keys. A wallet application that implements deterministic wallets with mnemonic code will show the user a sequence of 12-24 words when first creating a wallet. That sequence of words is the wallet backup and can be used to recover and re-create all the keys in the same or any compatible wallet application. Mnemonic code words make it easier for users to back up wallets, as they are easy to read and correctly transcribe, as compared to a random sequence of numbers. Mnemonic codes are defined in Bitcoin Improvement Proposal 39 (see <>), currently in Draft status. Note that BIP0039 is a draft proposal and not a standard. Specifically, there is a different standard, with a different set of words used by the Electrum wallet and _predating_ BIP0039. BIP0039 is used by the Trezor wallet and a few other wallets but is incompatible with Electrum's implementation. diff --git a/ch05.asciidoc b/ch05.asciidoc index bf479d81..6627912b 100644 --- a/ch05.asciidoc +++ b/ch05.asciidoc @@ -58,7 +58,7 @@ A transaction contains a number of fields, as follows: | 4 bytes | Locktime | A unix timestamp or block number |======= -Note: Locktime defines the earliest time that a transaction can be added to the blockchain. It is set to zero in most transactions to indicate immediate execution. If locktime is non-zero and below 500 million, it is interpreted as a block height, meaning the transaction is not included in the blockchain prior to the specified block height. If it is above 500 million, it is interpreted as a Unix Epoch timestamp (seconds since Jan-1-1970) and the transaction is not included in the blockchain prior to the specified time. +Note: Locktime defines the earliest time that a transaction can be added to the blockchain. It is set to zero in most transactions to indicate immediate execution. If locktime is non-zero and below 500 million, it is interpreted as a block height, meaning the transaction is not included in the blockchain prior to the specified block height. If it is above 500 million, it is interpreted as a Unix Epoch timestamp (seconds since Jan-1-1970) and the transaction is not included in the blockchain prior to the specified time. The use of locktime is equivalent to post-dating a paper cheque. [[tx_inputs_outputs]] === Transaction Outputs and Inputs @@ -72,7 +72,7 @@ There are no accounts or balances in bitcoin, there are only _unspent transactio A UTXO can have an arbitrary value denominated as a multiple of satoshis. Just like dollars can be divided down to two decimal places as cents, bitcoins can be divided down to eight decimal places as satoshis. While UTXO can be any arbitrary value, once created it is indivisible just like a coin that cannot be cut in half. If a UTXO is larger than the desired value of a transaction, it must still be consumed in its entirety and change must be generated in the transaction. In other words, if you have a 20 bitcoin UTXO and want to pay 1 bitcoin, your transaction must consume the entire 20 bitcoin UTXO and produce two outputs: one paying 1 bitcoin to your desired recipient and another paying 19 bitcoin in change back to your wallet. As a result, most bitcoin transactions will generate change. -In simple terms, transactions consume the sender's available UTXO and create new UTXO locked to the recipient's bitcoin address. Imagine a shopper buying a $1.50 beverage, reaching into their wallet and trying to find a combination of coins and bank notes to cover the $1.50 cost. The shopper will choose exact change if available (a dollar bill and two quarters), or a combination of smaller denominations (six quarters), or if necessary, a larger unit such as a five dollar bank note. If they hand too much money, say $5, to the shop owner they will expect $3.50 change, which they will return to their wallet and have available for future transactions. Similarly, a bitcoin transaction must be created from a user's UTXO in whatever denominations that user has available. They cannot cut a UTXO in half any more than they can cut a dollar bill in half and use it as currency. The user's wallet application will typically select from the user's available UTXO various units to compose an amount greater than or equal to the desired transaction amount. As with real life, the bitcoin application can use several strategies to satisfy the purchase amount: combining several smaller units, finding exact change, or using a single unit larger than the transaction value and making change. +In simple terms, transactions consume the sender's available UTXO and create new UTXO locked to the recipient's bitcoin address. Imagine a shopper buying a $1.50 beverage, reaching into their wallet and trying to find a combination of coins and bank notes to cover the $1.50 cost. The shopper will choose exact change if available (a dollar bill and two quarters), or a combination of smaller denominations (six quarters), or if necessary, a larger unit such as a five dollar bank note. If they hand too much money, say $5, to the shop owner they will expect $3.50 change, which they will return to their wallet and have available for future transactions. Similarly, a bitcoin transaction must be created from a user's UTXO in whatever denominations that user has available. They cannot cut a UTXO in half any more than they can cut a dollar bill in half and use it as currency. The user's wallet application will typically select from the user's available UTXO various units to compose an amount greater than or equal to the desired transaction amount. As with real life, the bitcoin application can use several strategies to satisfy the purchase amount: combining several smaller units, finding exact change, or using a single unit larger than the transaction value and making change. All of this complex assembly of spendable UTXO is done by the user's wallet automatically and is invisible to users. It is only relevant if you are programmatically constructing raw transactions from UTXO. The UTXO consumed by a transaction are called transaction inputs, while the UTXO created by a transaction are called transaction outputs. This way, chunks of bitcoin value move forward from owner to owner in a chain of transactions consuming and creating UTXO. Transactions consume UTXO unlocking it with the signature of the current owner and create UTXO locking it to the bitcoin address of the new owner. From 46c2394a075e2550a785406c585006de3443713a Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Mon, 8 Sep 2014 11:49:56 -0400 Subject: [PATCH 078/102] move OP appendix --- appdx-scriptops.asciidoc | 2 +- ch05.asciidoc | 163 --------------------------------------- 2 files changed, 1 insertion(+), 164 deletions(-) diff --git a/appdx-scriptops.asciidoc b/appdx-scriptops.asciidoc index fb6f50b0..2ebe002d 100644 --- a/appdx-scriptops.asciidoc +++ b/appdx-scriptops.asciidoc @@ -1,6 +1,6 @@ [[tx_script_ops]] -=== Transaction Script Language Operators, Constants and Symbols +== Appendix: Transaction Script Language Operators, Constants and Symbols [[tx_script_ops_table_pushdata]] .Push Value onto Stack diff --git a/ch05.asciidoc b/ch05.asciidoc index 6627912b..2f97db25 100644 --- a/ch05.asciidoc +++ b/ch05.asciidoc @@ -552,166 +552,3 @@ Note that since the redeem script is not presented to the network until you atte ==== P2SH locking scripts contain the hash of a redeem script which gives no clues as to the content of the redeem script itself. The P2SH transaction will be considered valid and accepted even if the redeem script is invalid. You may accidentally lock bitcoin in such a way that it cannot later be spent. ==== - -[[tx_script_ops]] -=== Transaction Script Language Operators, Constants and Symbols - -[[tx_script_ops_table_pushdata]] -.Push Value onto Stack -[options="header"] -|======= -| Symbol | Value (hex) | Description -| OP_0 or OP_FALSE | 0x00 | An empty array is pushed on to the stack -| 1-75 | 0x01-0x4b | Push the next N bytes onto the stack, where N is 1 to 75 bytes -| OP_PUSHDATA1 | 0x4c | The next script byte contains N, push the following N bytes onto the stack -| OP_PUSHDATA2 | 0x4d | The next two script bytes contain N, push the following N bytes onto the stack -| OP_PUSHDATA4 | 0x4e | The next four script bytes contain N, push the following N bytes onto the stack -| OP_1NEGATE | 0x4f | Push the value "-1" onto the stack -| OP_RESERVED | 0x50 | Halt - Invalid transaction unless found in an unexecuted OP_IF clause -| OP_1 or OP_TRUE| 0x51 | Push the value "1" onto the stack -| OP_2 to OP_16 | 0x52 to 0x60 | For OP_N, push the value "N" onto the stack. E.g., OP_2 pushes "2" -|======= - -[[tx_script_ops_table_control]] -.Conditional Flow Control -[options="header"] -|======= -| Symbol | Value (hex) | Description -| OP_NOP | 0x61 | Do nothing -| OP_VER | 0x62 | Halt - Invalid transaction unless found in an unexecuted OP_IF clause -| OP_IF | 0x63 | Execute the statements following if top of stack is not 0 -| OP_NOTIF | 0x64 | Execute the statements following if top of stack is 0 -| OP_VERIF | 0x65 | Halt - Invalid transaction -| OP_VERNOTIF | 0x66 | Halt - Invalid transaction -| OP_ELSE | 0x67 | Execute only if the previous statements were not executed -| OP_ENDIF | 0x68 | Ends the OP_IF, OP_NOTIF, OP_ELSE block -| OP_VERIFY | 0x69 | Check the top of the stack, Halt and Invalidate transaction if not TRUE -| OP_RETURN | 0x6a | Halt and invalidate transaction -|======= - -[[tx_script_ops_table_stack]] -.Stack Operations -[options="header"] -|======= -| Symbol | Value (hex) | Description -| OP_TOALTSTACK | 0x6b | Pop top item from stack and push to alternative stack -| OP_FROMALTSTACK | 0x6c | Pop top item from alternative stack and push to stack -| OP_2DROP | 0x6d | Pop top two stack items -| OP_2DUP | 0x6e | Duplicate top two stack items -| OP_3DUP | 0x6f | Duplicate top three stack items -| OP_2OVER | 0x70 | Copies the third and fourth items in the stack to the top -| OP_2ROT | 0x71 | Moves the fifth and sixth items in the stack to the top -| OP_2SWAP | 0x72 | Swap the two top pairs of items in the stack -| OP_IFDUP | 0x73 | Duplicate the top item in the stack if it is not 0 -| OP_DEPTH | 0x74 | Count the items on the stack and push the resulting count -| OP_DROP | 0x75 | Pop the top item in the stack -| OP_DUP | 0x76 | Duplicate the top item in the stack -| OP_NIP | 0x77 | Pop the second item in the stack -| OP_OVER | 0x78 | Copy the second item in the stack and push it on to the top -| OP_PICK | 0x79 | Pop value N from top, then copy the Nth item to the top of the stack -| OP_ROLL | 0x7a | Pop value N from top, then move the Nth item to the top of the stack -| OP_ROT | 0x7b | Rotate the top three items in the stack -| OP_SWAP | 0x7c | Swap the top three items in the stack -| OP_TUCK | 0x7d | Copy the top item and insert it between the top and second item. -|======= - -[[tx_script_ops_table_splice]] -.String Splice Operations -[options="header"] -|======= -| Symbol | Value (hex) | Description -| _OP_CAT_ | 0x7e | Disabled (Concatenates top two items) -| _OP_SUBSTR_ | 0x7f | Disabled (Returns substring) -| _OP_LEFT_ | 0x80 | Disabled (Returns left substring) -| _OP_RIGHT_ | 0x81 | Disabled (Returns right substring) -| OP_SIZE | 0x82 | Calculate string length of top item and push the result -|======= - -[[tx_script_ops_table_binmath]] -.Binary Arithmetic and Conditionals -[options="header"] -|======= -| Symbol | Value (hex) | Description -| _OP_INVERT_ | 0x83 | Disabled (Flip the bits of the top item) -| _OP_AND_ | 0x84 | Disabled (Boolean AND of two top items) -| _OP_OR_ | 0x85 | Disabled (Boolean OR of two top items) -| _OP_XOR_ | 0x86 | Disabled (Boolean XOR of two top items) -| OP_EQUAL | 0x87 | Push TRUE (1) if top two items are exactly equal, push FALSE (0) otherwise -| OP_EQUALVERIFY | 0x88 | Same as OP_EQUAL, but run OP_VERIFY after to halt if not TRUE -| OP_RESERVED1 | 0x89 | Halt - Invalid transaction unless found in an unexecuted OP_IF clause -| OP_RESERVED2 | 0x8a | Halt - Invalid transaction unless found in an unexecuted OP_IF clause -|======= - -[[tx_script_ops_table_numbers]] -.Numeric Operators -[options="header"] -|======= -| Symbol | Value (hex) | Description -| OP_1ADD | 0x8b | Add 1 to the top item -| OP_1SUB | 0x8c | Subtract 1 from the top item -| _OP_2MUL_ | 0x8d | Disabled (Multiply top item by 2) -| _OP_2DIV_ | 0x8e | Disabled (Divide top item by 2) -| OP_NEGATE | 0x8f | Flip the sign of top item -| OP_ABS | 0x90 | Change the sign of the top item to positive -| OP_NOT | 0x91 | If top item is 0 or 1 boolean flip it, otherwise return 0 -| OP_0NOTEQUAL | 0x92 | If top item is 0 return 0, otherwise return 1 -| OP_ADD | 0x93 | Pop top two items, add them and push result -| OP_SUB | 0x94 | Pop top two items, subtract first form second, push result -| OP_MUL | 0x95 | Disabled (Multiply top two items) -| OP_DIV | 0x96 | Disabled (Divide second item by first item) -| OP_MOD | 0x97 | Disabled (Remainder divide second item by first item) -| OP_LSHIFT | 0x98 | Disabled (Shift second item left by first item number of bits) -| OP_RSHIFT | 0x99 | Disabled (Shift second item right by first item number of bits) -| OP_BOOLAND | 0x9a | Boolean AND of top two items -| OP_BOOLOR | 0x9b | Boolean OR of top two items -| OP_NUMEQUAL | 0x9c | Return TRUE if top two items are equal numbers -| OP_NUMEQUALVERIFY | 0x9d | Same as NUMEQUAL, then OP_VERIFY to halt if not TRUE -| OP_NUMNOTEQUAL | 0x9e | Return TRUE if top two items are not equal numbers -| OP_LESSTHAN | 0x9f | Return TRUE if second item is less than top item -| OP_GREATERTHAN | 0xa0 | Return TRUE if second item is greater than top item -| OP_LESSTHANOREQUAL | 0xa1 | Return TRUE if second item is less than or equal to top item -| OP_GREATERTHANOREQUAL | 0xa2 | Return TRUE if second item is great than or equal to top item -| OP_MIN | 0xa3 | Return the smaller of the two top items -| OP_MAX | 0xa4 | Return the larger of the two top items -| OP_WITHIN | 0xa5 | Return TRUE if the third item is between the second item (or equal) and first item -|======= - - -[[tx_script_ops_table_crypto]] -.Cryptographic and Hashing Operations -[options="header"] -|======= -| Symbol | Value (hex) | Description -| OP_RIPEMD160 | 0xa6 | Return RIPEMD160 hash of top item -| OP_SHA1 | 0xa7 | Return SHA1 hash of top item -| OP_SHA256 | 0xa8 | Return SHA256 hash of top item -| OP_HASH160 | 0xa9 | Return RIPEMD160(SHA256(x)) hash of top item -| OP_HASH256 | 0xaa | Return SHA256(SHA256(x)) hash of top item -| OP_CODESEPARATOR | 0xab | Mark the beginning of signature-checked data -| OP_CHECKSIG | 0xac | Pop a public key and signature and validate the signature for the transaction's hashed data, return TRUE if matching -| OP_CHECKSIGVERIFY | 0xad | Same as CHECKSIG, then OP_VEIRFY to halt if not TRUE -| OP_CHECKMULTISIG | 0xae | Run CHECKSIG for each pair of signature and public key provided. All must match. Bug in implementation pops an extra value, prefix with OP_NOP as workaround -| OP_CHECKMULTISIGVERIFY | 0xaf | Same as CHECKMULTISIG, then OP_VERIFY to halt if not TRUE -|======= - -[[tx_script_ops_table_nop]] -.Non-Operators -[options="header"] -|======= -| Symbol | Value (hex) | Description -| OP_NOP1-OP_NOP10 | 0xb0-0xb9 | Does nothing, ignored. -|======= - - -[[tx_script_ops_table_internal]] -.Reserved OP codes for internal use by the parser -[options="header"] -|======= -| Symbol | Value (hex) | Description -| OP_SMALLDATA | 0xf9 | Represents small data field -| OP_SMALLINTEGER | 0xfa | Represents small integer data field -| OP_PUBKEYS | 0xfb | Represents public key fields -| OP_PUBKEYHASH | 0xfd | Represents a public key hash field -| OP_PUBKEY | 0xfe | Represents a public key field -| OP_INVALIDOPCODE | 0xff | Represents any OP code not currently assigned -|======= From 4148091d82a3708f09da64bdb3bab3b857a5ba3b Mon Sep 17 00:00:00 2001 From: "andreas@antonopoulos.com" Date: Mon, 8 Sep 2014 09:13:22 -0700 Subject: [PATCH 079/102] Updated book.asciidoc --- book.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book.asciidoc b/book.asciidoc index 642b8b53..7ca0d98b 100644 --- a/book.asciidoc +++ b/book.asciidoc @@ -22,4 +22,4 @@ include::ch08.asciidoc[] include::ch09.asciidoc[] -include::appdx01.asciidoc[] \ No newline at end of file +include::appdx-scriptops.asciidoc[] \ No newline at end of file From d9b774c7a7dba4eb93c76c192ec1ce87fa2cdd99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Wahlstr=C3=B6m?= Date: Tue, 9 Sep 2014 07:42:59 +0200 Subject: [PATCH 080/102] Update ch05.asciidoc Minor typo --- ch05.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch05.asciidoc b/ch05.asciidoc index 2f97db25..6b41fb96 100644 --- a/ch05.asciidoc +++ b/ch05.asciidoc @@ -168,7 +168,7 @@ For transaction amount 50000000 Satoshis (0.500000 bitcoin) use: ---- ==== -One the UTXO is selected, the wallet then produces unlocking scripts containing signatures for each of the UTXO, thereby making them spendable by satisfying their locking script conditions. The wallet adds these UTXO references and unlocking scripts as inputs to the transaction. +Once the UTXO is selected, the wallet then produces unlocking scripts containing signatures for each of the UTXO, thereby making them spendable by satisfying their locking script conditions. The wallet adds these UTXO references and unlocking scripts as inputs to the transaction. [[tx_in_structure]] .The structure of a transaction input From a42063616d46753eb677735bbe3b306f599f1274 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Wed, 10 Sep 2014 12:51:04 -0400 Subject: [PATCH 081/102] It takes a 51% attack to cause a double-spend. --- ch01.asciidoc | 13 +++++-------- ch08.asciidoc | 6 ++++++ images/paper_wallet_bpw.png | Bin 291318 -> 276680 bytes 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index f840802d..e5c3b1ad 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -57,8 +57,11 @@ Satoshi Nakamoto's invention is also a practical solution to a previously unsolv Bitcoin is a technology, but it expresses money which is fundamentally a language for exchanging value between people. Let's look at the people who are using bitcoin and some of the most common uses of the currency and protocol through their stories. We will re-use these stories throughout the book to illustrate the real-life uses of digital money and how they are made possible by the various technologies that are part of bitcoin. -North American Retail:: -Alice lives in Northern California's Bay Area. She has heard about bitcoin from her techie friends and wants to start using it. We will follow her story as she learns about bitcoin, acquires some and then spends some of her bitcoin to buy a cup of coffee at Bob's Cafe in Palo Alto. This story will introduce us to the software and basic transactions from the perspective of a retail consumer. +North American Low Value Retail:: +Alice lives in Northern California's Bay Area. She has heard about bitcoin from her techie friends and wants to start using it. We will follow her story as she learns about bitcoin, acquires some and then spends some of her bitcoin to buy a cup of coffee at Bob's Cafe in Palo Alto. This story will introduce us to the software, the exchanges and basic transactions from the perspective of a retail consumer. + +North American High Value Retail:: +Carol is an art gallery owner in San Francisco. She sells expensive paintings for bitcoin. This story will introduce the risks of a "51%" consensus attack for retailers of high-value items. Offshore Contract Services:: Bob, the cafe owner in Palo Alto is building a new website. He has contracted with an Indian web developer, Gopesh, who lives in Bangalore, India. Gopesh has agreed to be paid in bitcoin. This story will examine the use of bitcoin for outsourcing, contract services and international wire transfers. @@ -66,18 +69,12 @@ Bob, the cafe owner in Palo Alto is building a new website. He has contracted wi Charitable Donations:: Eugenia is the director of a children's charity in the Philippines. Recently she has discovered bitcoin and wants to use it to reach a whole new group of foreign and domestic donors to fundraise for her charity. She's also investigating ways to use bitcoin to distribute funds quickly to areas of need. This story will show the use of bitcoin for global fundraising across currencies and borders and the use of an open ledger for transparency in charitable organizations. -Remittances and Reverse Remittances:: -Gopesh, the Indian web developer, is supporting his daughter Radhika who is a student in Essex, England. Gopesh is now considering sending Radhika bitcoin, eliminating the fees he used to pay for remittances. This story will demonstrate the use of local exchange and peer-to-peer exchanges for international remittances with bitcoin. - Import/Export:: Mohammed is an electronics importer in Dubai. He's trying to use bitcoin to buy electronics from the USA and China for import into the U.A.E. to accelerate the process of payments for imports. This story will show how bitcoin can be used for large business-to-business international payments tied to physical goods. Mining for Bitcoin:: Jing is a computer engineering student in Shanghai. He has built a "mining" rig to mine for bitcoins, using his engineering skills to supplement his income. This story will examine the "industrial" base of bitcoin, the specialized equipment used to secure the bitcoin network and issue new currency. -Peer Lending:: -Zenab is a shopkeeper in Kisumu, Kenya and needs a loan to buy new inventory for her shop. With the assistance of a micro-lending organization, she is financing a micro-loan in bitcoin from individual lenders all across the world. This story will demonstrate the potential for bitcoin to offer peer-to-peer micro-lending by aggregating small investments, matching them with borrowers in developing nations. - Each of the stories above is based on real people and real industries that are currently using bitcoin to create new markets, new industries and innovative solutions to global economic issues. === Getting Started diff --git a/ch08.asciidoc b/ch08.asciidoc index c52d3479..1f64a080 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -796,6 +796,12 @@ It is important to note that consensus attacks can only affect future consensus, One attack scenario against the consensus mechanism is called the "51% attack". In this scenario a group of miners, controlling a majority (51%) of the total network's hashing power, collude to attack bitcoin. With the ability to mine the majority of the blocks, the attacking miners can cause deliberate "forks" in the blockchain and double-spend transactions or execute denial-of-service attacks against specific transactions or addresses. A fork/double-spend attack is one where the attacker causes previously confirmed blocks to be invalidated by forking below them and re-converging on an alternate chain. With sufficient power, an attacker can invalidate six or more blocks in a row, causing transactions that were considered immutable (6 confirmations) to be invalidated. Note that a double-spend can only be done on the attacker's own transactions, for which the attacker can produce a valid signature. Double-spending one's own transactions is profitable if by invalidating a transaction the attacker can get a non-reversible exchange payment or product without paying for it. +Let's examine a practical example of a 51% attack. In the first chapter we looked at a transaction between Alice and Bob for a cup of coffee. Bob, the cafe owner, is willing to accept payment for cups of coffee without waiting for confirmation (mining in a block), because the risk of a double-spend on a cup of coffee is low in comparison to the convenience of rapid customer service. This is similar to the practice of coffee shops that accept credit card payments without a signature for amounts below $25, as the risk of a credit-card chargeback is low while the cost of delaying the transaction to obtain a signature is comparatively larger. In contrast, selling a more expensive item for bitcoin runs the risk of a double-spend attack, where the buyer broadcasts a competing transaction that spends the same inputs (UTXO) and cancels the payment to the merchant. A double-spend attack can happen in two ways: either before a transaction is confirmed, or if the attacker takes advantage of a blockchain fork to undo several blocks. A 51% attack allows an attacker to double-spend their own transactions in the new chain, thus undoing the corresponding transaction in the old chain. + +In our example, malicious attacker Mallory goes to Carol's gallery and purchases a beautiful triptych painting depicting Satoshi Nakamoto as Prometheus. Carol sells "The Great Fire" paintings for $250,000 in bitcoin, to Mallory. Instead of waiting for six or more confirmations on the transaction, Carol wraps and hands the paintings to Mallory after only one confirmation. Mallory works with an accomplice, Paul, who operates a large mining pool and the accomplice launches a 51% attack as soon as Mallory's transaction is included in a block. Paul directs the mining pool to re-mine the same block height as the block containing Mallory's transaction replacing Mallory's payment to Carol with a transaction that double-spends the same input as Mallory's payment. The double-spend transaction consumes the same UTXO and pays it back to Mallory's wallet, instead of paying it to Carol, essentially allowing Mallory to keep the bitcoin. Paul then directs the mining pool to mine an additional block, so as to make the chain containing the double-spend transaction longer than the original chain (causing a fork below the block containing Mallory's transaction). When the blockchain fork resolves in favor of the new (longer) chain, the double-spent transaction replaces the original payment to Carol. Carol is now missing the three paintings and also has no bitcoin payment. Throughout all this activity, Paul's mining pool participants may remain blissfully unaware of the double-spend attempt, as they mine with automated miners and cannot monitor every transaction or block. + +To protect against this kind of attack, a merchant selling large-value items must wait at least six confirmations before giving the product to the buyer. Alternatively, the merchant should use an escrow multi-signature account, again waiting for several confirmations after the escrow account is funded. The more confirmations elapse, the harder it becomes to invalidate a transaction with a 51% attack. For large-value items, payment by bitcoin will still be convenient and efficient even if the buyer has to wait 24 hrs for delivery, which would ensure 144 confirmations. + In addition to a double-spend attack, the other scenario for a consensus attack is to deny service to specific bitcoin participants (specific bitcoin addresses). An attacker with a majority of the mining power can simply ignore specific transactions. If they are included in a block mined by another miner the attacker can deliberately fork and re-mine that block, again excluding the specific transactions. This type of attack can result in a sustained denial of service against a specific address or set of addresses for as long as the attacker controls the majority of the mining power. Despite its name, the 51% attack scenario doesn't actually require 51% of the hashing power. In fact, such an attack can be attempted with a smaller percentage of the hashing power. The 51% threshold is simply the level at which such an attack is almost guaranteed to succeed. A consensus attack is essentially a tug-of-war for the next block and the "stronger" group is more likely to win. With less hashing power, the probability of success is reduced, as other miners control the generation of some blocks with their "honest" mining power. One way to look at it is that the more hashing power an attacker has, the longer the fork they can deliberately create, the more blocks in the recent past they can invalidate, or the more blocks in the future they can control. Security research groups have used statistical modeling to claim that various types of consensus attacks are possible with as little as 30% of the hashing power. diff --git a/images/paper_wallet_bpw.png b/images/paper_wallet_bpw.png index 5fcd6623e1a7d2360d16ebf7ae602dd767c83dd2..ab3bde344cd9f7bcf37887adcbfeb8c1a6226c4b 100644 GIT binary patch literal 276680 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℘N@oUxmQG0QKJXuWb1v(4&gXBqBLz)H{7o; z8cz8fqhd62OMTLl$Vr)gLs>kWn_HkiX;Z#;lOZZh(L=gWtQzXfpq=;f-Jdz?+~KzXOHzu4G% zgZuhMTbq{qN6mhp$gMK_G#R{%O&QHB;+Gj@q`NII+xgC6jRf*O$R2pHzsS+x@~(5m z=H*}hpW9-RoqTd499SmybaZrB>zD*tK|a~qV{PKJ#!enOYZH(#aiFy_x$qTVfeI!n zpZpaV;HvwrGT;Xm)~%KRY$msa$KE;?6R5R+a?QWLbtY6eEk+D321#PtQmG&I_I$ax zwAcm`_`r*i4|K_RTwLKxm0UuN?8D&bgu)0~BY&Qjyj1eCHEBzg7?C6yJ_&B&rQQW- zxqKF?<4B@mNcRlzB0L4R0IM#r7shKcuUuC3dWp_KFbLF0!}yjAlEmm--s=3N zRLK^d;vtv0{#-TEDL%T*OrMaKUq(6?6YYWDA<^4}%fLIrO{&f*=E%=Xyciu*CBH>3 z<3y{Tcs(EHvQTx_nOfM4y`dzI%K&GtxMv9(jV58g_8J2?h$-B&S|R;R{B_g4Sb(&= z(}lB4$aK;{Qy(=F`!uZ>!p!u{)%0X8cb-=WISg@OQ2${Rb}b`XS;~)ldI}oUPY?qSWM+zuuWhR2#R$!z~<3@=Km(5u#g>2-_LsFv% zR~y_8B~wT|wJpr(hNr6_HU$+%a?O#DnxGSW7V{!Idh(P;ND5~h-(hAeg=aCjZG?`S z+^vu^c%^8pidc}1awwChAoI9kAgcR7n!!vNJp)FH6qW7F(Q*tXGcw2o#c8G zzZT;J*^~n7WfV3%vAs}ga2hEbAB`-2^!;R6L`CVMD|x=-U3{Xi9LKNhIPbZgM-Y=nhf;`a3EgUMqT zvi&KM!s11X_^&PA_%#0d_PI|zpuI5rw?-1go z_w=OCkH8=2qdjn2l=Ia`%cU#8b1tnn(#cE?V59^f1@>qH#|2)Zh09_19War3S4bo_ z3E}gI3XF+4GnF-C*s`-Cnj=4r%#@%!;9X# zgIdX!>fz5!TU>l$)8lE!k44$IC|EC!elq;bEc@u|Z!CZ4k5?QNXP4aAcgt|mX8%w} z&CmnkeLEL@ZpgXzp2Q=c4iDDNZGJJl@h3)YtMJVbP4|elP2$Aqs+WG;TDtAai(p_r zv;N@Sy$+YV^x>ub&*{7R-P4=r&-?o9*2Tf|uQi1pDp+>N*C<5k|0OoxCYienFO;8p zcx>?W{SCK0P8z|tX5?Ny;_G~5(d(x~Q=@Xny(`wwX^9=p>c6a?cP6+tSQGw~Qnl$! z&7ep;Dbl;j6me{ERtoNH{IIIu#2UE>Lp?}V)6y8<18J<0#{$LJv?}2!Ais4idsydiP@470fq*>AI!v9c zSe09K@~y=Mf(ZGF&xv~YiiNXq6rb!z8;Nylv-VqUV7~=dN(k=J+u7lDn^^%G!(VZk*GT&SSw%>_Yl2SSSolCkZ$^qFQ-DfpC$+hXFl z>RV&Dra*KF#12uPcFu%Zl+>NQjMx`rZ!29N(`v zYR%Lc=_2FbV0!8Z`c{&J*Q_&RZ>orHOFbT&!g)bpWaI;l5hJ3fb?JyXO~js(aEfWs z&<)kEnVOM3E8}N1n;}!z;0;E4EZ}xl5}zul8eoQn7lCnP6g`T)Nq);$(dSJJ&|ItW z<9e!H3tkV;%3PNedBMEtBY|(4x{}PKt0T zX35~Jr(_fk;F9PWdMr5)@k0kjJ5lhdG*MQEu(Xxp_aM7WX;S%UrwcEdNls${_p-BC*LK${7dKNZB3cv^c|^v;tM-l!y-^L z>L2$v57hb#k38P^;wx3cT`+cg%fqu$)7`}tddYvk(-1rPO=q`${1-EByx-$by?M6l zh*T0ZcSpm8N6YJ$mXFBs%d>nU1dIVmsM^mJkwOn1VaolhH z%9Mc27rcU^xP%%Ra=7YfhE+$CU{*$ZMRl5FjZ1b4 zViX{3aHpHp1`=|UpqcB1r;{PK|;i`K&>r z-~H})QPr6`bt>UF5Tc0qaIPyl>#u(GtDQS{@>Z|x+05oYiC9!2&4W9f7 z7M1>s-bJYWndvTtcuLhRbuMvO1eC}t#hmXX7Yn(SNr;RmqG>B8#28OU6Nov!Pfwjh zh*1QWo7ix3BWQh#zQO3A5G0cW=9Uxd9C*G65@c`3nwOBRn@;tjR%Yo^{Ko5XJ% zKVs7=CEo^Fm}$%R3SuMt!VXJis#=lENSBT9WAQ0OYFE*R4Fi|N<@idf{?(>2WW?T( zIGB9Rjt0D+q-Id&oT?TY>Eo(r5nU=sjv`mg&zCvm(^v2I4{JTzXn$;5nDq7FJ>Y2&REM z3~n)o?ia~3rn^Si8u?V{!~W}pv(_Z@M`EYsR;64ym=ZV-8UsN^hEL-2CHlIeh30kI)DARi8M)J&r4ca+E=GJPAw*&vN%YH3?14l@_|CMtFX?yOq1 zYozVM*eRLJ@6r@7`MH_gi7sE~Y$?K;(<`P0iRX z1f~q@kuf4#^hm@Q%jhZml%)(K88tI~4X)ZoN8JL?+$vjnd$zM*X8OVO%nKg&WjPE) z(c;dGb!N}PQx<8(RgTJqo<(#Lgq^z69YeW(G#dHgylTjYB|mOl-qw${u6+gY7R5P@ z{>DVdKSLKd@&Y_#p0(l3IxXQwD;m-=}|R>rW1xPDe( zrbi9Gq|N$iw*0(psK~Ln-m#-m7c+I|@$n+uK2|%wy=3ggKwK0he_S*0dMb8Zr_hcI zv!r)bLu7vTg74wc@IR>d98T#PTH_tve$PPnl)+hjsp`S8wvh3Y#p9s3!u3fwK?Ae1C z!VNdvFtMK%h(PScFTVI94vQN%Zk+HD#JQ04l;otgm_myJ#Kw&^8T3gW!u9LdTf`*# zI9RChLF5$y`!c77ceJ27n4O7@8UT^Jj&M!cf$JiMMncQSs8!D2G^5%K2|0Tt>nj|6Hl^pFAr_U|skns9S*!4wm0!yFT)O zTJU+{fk^t8Oj@0Iooe;qawT~HNN1!@2|IT=p~T))NEI!^rTr?g!?__k27Z&6*o^T5 zs=Z1$%juRV{+K{FbRxmRxMO9Hs=@0;`}$DLHHLcV7}yWN!Ete2^ZI4yGR~1 zlW!Thvubv=5?HUG%N;wa5zynCuc#$v7LWQEKpAgw)w=?FvGguY9%5QB(zTkSL6FSQ zLq5aXO;3|D_PR;HHNntQjZ8isFvxisi~KWZkZC$Dh(>y6k)D@UG3j#-&P0s{QZ-;Y zX2>)-2tbY>QZwg0X{JY>Utm>!(OiF8wsf>;&i#FRo*aM=Ce(>#QlH6hzvl;DOp(Og zVn?7nfTg(99uC_=1t3Mu<$%zI>;<9cB4c_CN5)7thW;W1J9>lMA3R1aQjp)4;Yy`W z_hPGTlnBz} zHX$IxcGZt=zC#p9>3!@UW;`b_NJUWg$&nicvRE#X_ocf0Iv?~sIWYVyEKC>j>{0Q? zcE_zhUgPa(>QGa?wp-_a?y2bvMLjcxXety1OKc>6ZxHnz;tr#*r71Pg@C@!Mf-F$` zcm+Fkczw?grcc{me5P`3+t`Ce{_H%5sJBlQq8{1nh2tk~aG!mAn&@&jeXXFOU^w$c z%bbqI`=#uRSku}u>)fxVw7jzBP|5J2jtgC$k?YbcHbv(vICWe&K3g5SA?7|^ykP9M z+2s}9rrw#a6-D+f85V)5LT$nPa{AQSk;gkujz;&D6%1}(QGZ?W>QSxi{B$9X6%EDj z9-5vo%lj5PHrdLipKv}gwe7_vbA^Lekvd^c-|;f_pZZRYRv#|ia_%#}1$A>*wyhD# zJ;GtkIlbU3Cu)1ug7o!O*Lk)rIxe=?h}SpF6(qdX7K$m`TfOJUpB6_un|3Jkci!yv z&tLNG?%nmrxtoXgyI-rGjS29t|T7fvj zo9>F8Y+5Zjdi3a3f1UL$nB?6DUVBfY)7>ax2n%Dl3}Rdy3gP?pyFCBYlggx0Bctxp zf(dS$6I?=#@~LOq)Ku)od2$h#c_(gj!cj+Lu3`hms%oZBA3q?n-6qkpQZ@pKp8Oj# z?Y!m!MTbN-z>CDwR}_S_BZQeN2z7@m>!Xi8Y88M%T(@rBj2Saf=K-{F4@eToP9P&N z@%ZuM4?p}c)q?z>42f1DNQJ@xID~Sb1|cRP9f_f~;2j7LV9HJlID$T3e)(l;Bg%;a zRQT+(&w>a6ow!ayh@$V!x41Ln$Ox~Amn6=u7D%Oxr4R`crM4@6j5nZWdUsOFpagQ({a-sVDX@EfixfD)yj~0q;f)a=M`J=s
Y%GsmG*DY(Ok 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
O#LTSNFLR#$;x;7Hr~qm$+ivQ92A!EbU3 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

)wAu%O9*s`7MBFb#9-1NdOBT$1oZ$&LN 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

($LVvJbfL5ee*dI{eS6+Dq%|&F#c$3G1i7WHn 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

;jTaPh_>RP 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%0AWn2{oN=v&buak9 zVJg7d8dxE~ady}&0{Xydl@xQu4K*f#9i|L70<)tkMd1L;^B&f@g0;4=`LKdp%ZTTJ zNl#^Mi#by%1NT_aj5F|vx4~o(l|NTKMelhv&capMy_~ew@LWbnYe;%v-dY$|BfF`A z3X_au1)#7R-N&(Jnxp47`26V3#nJ@4bCmHPstR~L=a&;SuM3JE1HdIwO zi;e+!MR`%_fEt^{z-oKP8AJytAY|!uwISGKtX^VntS|)ob7Lb?SR$yW0}0Aj--s)R z@(N4SCvxZ3S~@$mww_%7v^3LUZ9S7dFGJ}|3E5!^8a#V&``OcpONNT88&+u>4JE@VN4e3;=NkFJQRa9eyv2Q?tLyMcXOHMn-Mx!C z1~%0wWi|EuLrXiR>h2AXl=Q~caBf9o$tJn^{GQtE+Z|^2ka;?+9d<^m7LP1xJbuA; zRJocrUubLBwv=@Ss~WY3eJ!)?JEz0u*=+Wtv#hS}4p&R!h}rehc{VYxhq`aUs*(P`a+NGXUfGPj`7Y4s2FtIdfnj)83fyZgp6s-cH*~nVL&^W1&I4 z(Bd}vGmBOXG>-f{Je84~8e2Q=wwWuq6--yJP}8$P3QG1Bqejz8t*(n*CQY92c+SKg zT+WY%oa>$LKVF^pO&xBJzI}d4I=R@l#Jn@Ke5vIud+WJ$wNN#)YCFhMC2!dZdIh;fkikA#jOqeXPF6xBWTq7R>Tf4PSJgsuV{ z1l}s@YH>>l0)ZMakrriICz!xVPpUT?eauf#A5cyVq0+R} z{~u)gGML{L=Sh6(^FOY|j0miN`PvE}UhoUD<{+3&;7Oq61}T0ChG2-?EOkV)mmg8! zJ3{Iwy8V2sVxPnKjx>%=Id%|Hj7c;@lkt3#_bXfRB+bYqg3zDjgVHa&8)XWEIL5V- z0n=ghRh4)1-kShoWO#?DAb&zmC?5Ek5RJ42jM-2|Yia1CF}dWm)FtAh#%oL_3wSg< zJcM>FPy}n?XE=m=Hh2)e4|-=<#Zh=h_^DtnQxVZ_1QC!CbO-d*03XPTRdSqn8w2-e zL@ovuHTZGh%rW%}@`vvP&0oc5(jQDu<|IyU{K5ajv66$w27>#co}nCcu2xM|DkN%% zLFd}2#E$Y{Lo|kPN21QgCu#@~mp06i&;vV2UT9y*7%Q;@pB~NvVctanc9syxK~;^( zEOuCcGj$w+08K!$zY~e}S-%z^P#CDH$@8GAB!zzHA>LFgr%!XaNs3#8 zklgSAhaDZ6+M&VqT;@th8R#zu4nnXxtxUhp+dEnNVwQ6dArZ_5NW7|Vb0uXHQu=R( z5A_s8|M;2yM#W^iAXdEWEY_IC?`2Nq408pTagk@QD~UXf2RF;}qni1u&jsC5iqC zDs#LoXaQYgfW*b&=-QxEY?%d5j1+UteeIO~H2RtfI5nG+N7Blq3GunOpo#NZ`6>%j zQQ&5?SP>}T>j6HvRt=QZZ_ft%W${96MJczk!{Lbzx0!$ByZw3lRxn0*F4Wu(PT1v%#|25tGaP?899z1nX0ip-Lpb12$(O zaA&P;O~+)^6Bt{Y)*NbKyv*(?SK9XPDEWJ{XR80xlE3Gz)x28M@;Fm18u7&nzCChPkr{@-4~j3V#d9sCezmRFl(Fi zY`(yS`;O3l%T$J~dTT>j zRS6r?npF0)7d_$RW$(&YtMARSrq!id%VSJm_g$}v_A9N?ly6&t-Ehao)T)Z7?#qn& zD!7S?$X1?dYpdZuJLS3j(^V$<;F7X8%XU1=)OXx2+!-_+N^E|k<@nUL;YMxI7$?g(8O@6LT6o`CCJkF?kUU(IKB7w$``Zn@?zg9_TrUY^b)WgnXYd;c z3>a}9CKe44=hH3x2@qCYT|IvakPCF#&=)TxT7eTu(UqhaArNQ`zAQzYHxEpa1G2>k z01HBZ)MAF%X>M*tk#HQ_eBy=00|Z1ck@=$HCvtfF@y8*6L}3s-X8ZQ-H8nLz15{ef z7C;kLkMqEH{@P-;kTRkkaBDmTA{^qgs0zomC<7#sk38}SH26gW%3_9}*e3>9gJ`h2 z94N`cn_fqaIE=--QRJL<9KY7=sxXu8yGY(X+##jvnB?O9SroijLb24XX z)GQTBfq+H)-(`3Xl_`OQYH8Dqa->f(w4c<4XLPnmEBq zqbMm&A0R6s&t=RVCer^xpvc=f-_200366G-wSw4`<{)4-uqQ%W4etst|H&!PP~#c& z7NW@%L^m3d>jjDS1?2+oBWsYx|B<-6=U0}+vKQM%NiZz*+HkwcL)p#SmQeN2?nQt> z4&2n)0XWkTdk$b0=#-;x5*s!!CFV=wj>&*v4-+MUFhh{D)RL<**sTE^4MAz>yPDa@ z<>8D1-&i{}H=rS4V)B&gUI}EW#r7iH_O%`YoLqp11ETyvD#?{T28Kn#f0&~emKH6W zxePl?q3rYU$WdqBpztjud7Iz#uA1&f$T|*mMaBw*x>f;}*j8fm-^q(1wGbnAacG`ENu3=; zexXJcgHdV+UnSTCNoI%E7u=}P3F`8FtnHSO0Z(Yts%cg zWESXMB|sBoN=b_^CmwsXb+Masyq!26QD$;V?ri4DaDKeOR9Or14*OzQF%BRIHJq$r z^oNVC7YGPf?aL3FIB}`9{Y2`_>FmX2rbSNM@}7MEm^7YM3wQ=t;Phtu5^}uF+}dGl zck}Mv+?6z#bf_8^WOhB^ zfZD0Ls9bYJh9I08RNv<0!;r}U|B)pC!q24ebU2Orp(Kz|(y9*YP7z2E>2W#WBWNt~ zzVY~DFc88cho~sY{8vMiRqzx69AY5iq3kXWI|?ms5hxr33-}im*i*vV5{pTdfloBn z1{h(m7LutSkP4iDYO#R$Dn5)}=Hfx@qFdu0uyc#$m06y#n!(q@2Eo^3;(V%*$tu%X zn6M(iBdIkOzA1XHzrhcb9frOqBw;{)YqjCPWZHPi=}eoKm;xO`LH9vTU0PY1E~`Cf zkfsYY{zPY^;w=xpSXOej!eG7XaCes%PRvHHvS$}pJ#V#7y)IV0?O)1QZnzS4DWz(? zwPlsI%?6i?&7f$|JyC?5z9?c zUuh)7fGH>BzFTXl8Z~A(p|+u+D`=Sru-%)=dONXB$VY|1v}zxdnV*TSx3AVYUa)oS zbKO4a_8(zbE9b2BZSdCk&t{|9vcO_fYc&jn4HHY8eWhyJ;B+H2YerQ?{x!k=k#B!OaxR(0M$U?U)c1M z{f6p)_5}6|ahY-N4V3uG%vsCIsgNyf$)g9P${Vv-3S!-Y;Snza03x~*gpQETxHZPc zFjaal!We}m)-1RaNDMJIq!hc>Z?I>4*sbC63}@sIOYv`=gUR5xzV)peQo#dyp;ry8 z1`$R2hBWW{6VA~a_3eGnzVAWUBO=}mw&Gd%K12O|LrN49-ZR*4IDW%VaJ;;i<^}K< z+YKo{v7hK?*?b`roh}bS4tjmg#UwJn(bR>34dbN_3$7=cPw_!Jdfx=#!oaS=XlOQW z$rKD&w7cC7SV^j4nZ{cqNlPA~XtNWbszTR#3GO0^U5}`R~ zC*qz|)@8TkgRTU^o8qRD%nc>03erxyl<^i`f`f1@ict&Ih?e+tQoU_K^&Vl6|lSwMdxC(#gLX?9o9oh5gS~o(4sPH+*5&aHSDCn$_ zg8~Cbv4r;p(($c+}G|dWj!MU8B_bQP3qK zri(JYivhD>KFk|J#MFpn0FD6nAegi^FbK*Ad0rt(bW7GntO{DaW1{;B0Amdky64gj#sf2vk_Q)KxtuC0`lF1T|M2tf;26 z%!O=!JW~h>-rJn(5nXyBA5N<28F{ulJ209buQFAXi~fMMV@jHVWHAEoZ#b6}Yo7AK ze4+Mc2kaojw6yO_A3Bse(PC|CH8qxqp~1q?Q~}h(@SbL-dwh8IeX2VFfn4AEg|~q?oQK zoy0yNEP61su-?0X_w6s+Q$7h#n^;ov%kPxjx)|lzRCX z(*Tkef>+N;FJ9UewePOp*eu>=cS}Q|UG~wViwx39|C&q9_la`phN(jp4KI|hACHy* z5W}f%v%6=s^5qwTkxP}DbaKWEvY++@5asRqIpT4VNQaM@ed~MJ%?u6NyvLPw&xV$Yj zTiCPg%(0+R@vK^BTDl!(IUW4jBg|p`N_@+q`c)%04J|Kuee0FM={M?<{l`jup~9xR z?q!Bca{nzy#=m$lP&>Um-fUTUE4#8HC!F2Hym{U~&7Z2d>E)fv;^o?H7k{#L|J(h8 zt(VP-+^zoU&dTSb+M~N(Sl2!N1%7d5=eqc2*DZFYWxro|<2E7pchw!%?w#wNE4wAp zYhL`+-lfx8wCoZrl&!QVp>wvK;1f%E&1LHi{LgPh)J6z)U~Q~ebZ$w zH}Inu8m1>;&5G!J&Ls_@ogFhj*t05@a*H;T#n#%{aAb4!8>xc$;<2ua{Q(VZ#gf)i zJ9YQ+iv~e{`cTJ((H71wnsNh=Z;>+v|C6tGeqrbFpB`?@WyMU~C|VF|MP1iEw0TiC z4Bb&CkyU#m{(pIC#ee+VTTm5CGXIY+uUxTs;MVrbvL?pUmhV2hdgsO~qchIqCoAoq z93%s7NA^owjy`|1y}LhXvRlPdp@!huJ8xM(8n*o4$%#L^b7W-J|D#=9_5g$vGHdnS zzCQi4U8xNn(_1>dS*hmx&zDu!`5)MZYJiRy;!!wmW^~ux2i=Lu@pp)h_9^?=}!crTxvdQJIV^BhHw=GNo??TCO<>Q337t0QR5ex#00c2 zdJ-fAH~`D5`({^7m#1l^yQ<0T``P5FSG0pV5~ZAgHLm2R4yMmKxj`TAT4`%vW^SGo z{o~RkqgCeA!i=1ZD~Ucei?cq_6%>6F($uIl9+9H5PVQKIJlN`;$zF8u*438I-SIb% zq>hyv%Il4lOU&)FV)=wT5tgU&N-im<&ZjTNjIkDTbC;#FC*M0P4NDM$ENr9e_47&W zQI|r;2kE68PAM}^Ay6V#mWeeU&OfD&Mhg?*rlD~PePXWeKd3eT&C=2khd*r8!LW;w zQNMffF!G0B9zsMkF81MCg`Pv{$vy=y30?!Zgk!Y;(|r>K!a;-tB9Mag7+P-qD|xg1c?_4{T_f4@<&rjwOLF}mSj)&`o<1*6(Wn` z$wFXgNS&7RGBh0JJ!T6*e-wgcZWr-yIl zmM%>^k#D-&?sO>68RcV-3P#`LCEMRS+h4x5CBK(lzPsj|?hzB84NO{+%?9(7;@I<+ zLHTxrH~GX>Z`aW^R~=t-zuZ(AV7Ufb!pv>ORxb8h=(R>QhLqO~<7P;I4Y>wBD=;)O zq`ZzH?ts2T!Bz7)T+8YA-@gkr@NvEJc(2VyljB2~cc}hIhk_M7@n+~luZ<-y?xS08)zt@b6Y(RwraPru#zjr$MO2c~+aLjV1zt7lX8+qb#D z{SQr_e)QPpB`-u{KCd;?7Y^*&*Z8@eCwDBqlFAvr_P4j+vi_SF3aJ19KmbWZK~(bH zomX6rG;9um3TO~zaZfB#?29{W*?Ftls$jz8LI9GeZjd8Xsr z|I_c{PcurPvchckmHqdBaW7tBdhIy(!ok>gH=Ng!F-1y|qY1cakSRug(ZiN}N*Vb( zL}vlefx;eQ398qBW4;5vmlb2FV6Nq5r!sp~GX_Nd?FU`CzAh3;CsZ2e|gBE%LaM4o>F#S{_FOX@Y za|LIqS3wCLKcPE2zw4dRmpZ6kj!j;ahyP9}{{o9;I%Ju!E}eNDj{xFI8gAcjBeikt zFqaF9{v8^$`C~t3a)(szBqKT*p;WUsae<{gY9@7FNt}h-4WI)6AMQw*%Sj4L!+=sXnCyS=6i!6e)HiivvT5J55M(e=&aElbVPzQ&{!`r_yv_u zD(RS&2$#X)Sg+)7_sR%WDNJ zxbSdb^L{6Je3NUw^*$M#&!^^fL<9fGSuEL~<@3JHIIZn#(KnU!LF`GLv8WQD1+ z$<)+rZMl@bFq9jB@D$JXewFm`A46@?x`77{j!F|TDS}9YKE9;J&|G6|AJ6wrO8qjq zx_`XILn(AkH||o5-*CN0;t(Ar)ib_esGp%mMk~`xLS@%K@r`yyLaZCe9~>%j1MxzG z84F<*iML$fYyv*Wf6#~#%fNssot9*fixcNLq?M%gjzc!7FzEsq(VdbslPfXAR%(#lvxy26?`v&t52mTsOfgsj|! zM&sXyxK|)r6LUv<4DNq2-?evU))_zZKtkD?x^E)ZJd`rQ6Q>Ysn2t8Y(x*4&F9ywl zA+d~4_0$!fEX}_Pe-V5Bi0rh#nqB_WS@&q{%Duj;pHJO1m})zeG>*U*YG(1()b^{< zD|a!MK5yS~I@T4R&MnHm(3$@kpCKC(i^Fw&g`$YQ9ZMjz-GOfDGKXPi)n~K1d zP&hjF_2KY0)_Sjg)^zKEnJr5*%+A=eOZXuuh>YB+%H)9;@|(Y(QjFuTZ#Dn?KF^At z_+78fmUU+t*EF*`|Fu<-!UH9dJMv{Or0-3}Y`05K-sKtfn595rx+-P;L2}^eO!XSK zv5Ht*^*7^&#+_TkL&T_?HbVM{-iOsYfTKra>VPI;38XS(3^TzpPzRB1gZ_6zJ|Evt zEM{=i-*3O>8lb_47K-?Ozkc!SxEqENh`tyKg#E5jWudH*?xWi^8epyijf=jTf1jJ{ z-h@DBFzj=%<{J2)LZSmJEjR(N$;)aKeROqQpnFM0Uqh&W-?@rcj@8|_>VzPwy(7L| zrx8g{xo3x$FKx%--ewx|IOE7GmNLh3mRFC~ty?yAO#v z4N_jl8>ig2=JHqf?>sqFwXU(}g#*oNmJgQsrtpl@5&O$0Tk{2Bb<1d50L5Wr|^ng0MPlb*cr}P@WRszC1O0JJ9j0)cE^5l=nc+0zm_ueK? zzeqg|@Ko*t#g9DoB473x>*!HP!;UF)ZX*|BaG`@>9Q5OpPx7Uo=7M)?6F+&MaShTX zusw%&@g;Ywu~P`^M;h?R^STo<%+&D6#jTh(MQUSHmlVX>wk?t-pB8K_T6gJY#Fjp&O#B3@a}A_La8W7@Xrh-fHzKMyJjcnKCw3f>X@Kr& zC4gknL#+Q6b^0~da}(oUqeelHKJQG;+C}Fdmang|cwd^i{8Y66Zz?vtI@>proL~f$ zM3)lLdW~x}mUY-l4{1Hv&ujAK>{THCHMXTmbMipqjHxhT;=xd3_KFTrclwPUggJNe z_A;(?iE+_zVeCTga$jyBfr^6jFOxfyzOci!xyn%5R~RcGV74@qkdx!mc&S)gWhjTT zdq$1`P>xFzSF=5{@(dK#t86R54Sptb3ZYss)e|s&_mFX|oNGSKm_$rQYr%#h=j65v_ZcXR20TZy_ovZVtHw| zm}>6eFY<-wuy8fL!q(-5Q!OP2JZ)vp+})QBRU8_b-0Q4c+7MaRXdkNdTwIh-oanU- zzmoUAe5G@8amVIcxj!5|Qgfx70eQ{#@~<{F9&=O}IvO^+yE~4hE}m}G>RXrKC8mqhO+yV8 zuC{DfE>4VXZ~En%`~yn!?!#E~@N{2TW!wlh z-ktFGzkb0QU}5V5try-w6VDOQKr4UhKCtys*!T%R7U0DzWtfugTn(DEp-JZU+l{%w-oRJy+{IJ9v#Nk#6fkl}o>^9K8Z7>Er{n+6-`cLemfUi;WA)~( zmwGH5%;!xNYIamr98(iVAS>Y9DJ62K#FY8+ow0BJj~!hrMjl*q7Jdd)fa1JBCBd{{ z72NCOspp|22le7d9F?J>g4sS>@&Gui;it?CepPU3@v|g>(;x8tx(Pf%(Q0@K6J`l& z7l2n|wF-(ED4;o!_ikZw5jA<5wN%2bL_yf-+&G(?WQ{&8ah}ahP|MN?g4$A%fGkvJ z_mPK0>LTzA;uaD*!vEsvMYGr32KpI!dY@SSdFX{X1t@tPczh@dBJi%!&t$tH9MLj; z5M&C0JJswkBKQH`7B9x!si`R?-HkXjaMM;No)ODFCHZ%1Q@coSTQpIfzY*FgeU8ho zg{!MH`J(8%MJ)M@6nTa+gfshmfhau{mdqSM-vhEqfN#VwOkd@kYs9k8E3w0fd7~k& zBLlhY4IA|DrO zvJg9G`@qX{CUXV`lx>zaAMZPwIfQ)?0#HmYzljaihQ5f}Lyv>hEuqY2l{DBKOT_A0 zb4N(58pvNtC}C9YobdiPQONhZCrX5^SZUa&)}`T!4$v1G9FIds2~<)H8~VU$mDD_x zoKgc&qU+!_(J`g24cEyjA(aHiG($WI)F_fV5^nyGpS#?Ahn=s1#1V`_h_ES>cP%JE zK_`S|d_h5A8vG=w52Tn>wR#cpdgB}S#+ZSF@AlxLGaqfkBN>I%y2df1V<1?uEWc^9 zv}pC^!qWfsx%i%oLjhhs+jc3^m~dJH)7t_)-t*pp!^Yr9Zh4=jD!kbpDmU6k&YZLe z&(?L#+Lvr(EZb-9ssCZ6`N?Q)y5Sbd6S>nXRX58tc9o?`RBKvz2GpnT8gxFJ}Tv#Ziyu6Q680J!QRLwWYS~eB%qvH4~XF z-63P5s!y;c&fO%OEFHZiyzi@(H#b&JFqXgDw*6dP<$8AL5re-v&}ukqR{y^CTlq&D z?&$y7GUKL!y1R!$LV@oceK3_;?CMDmx7X}{qUw(C8@0>j;_B_VG);eoj$Re z{{d%w?#o{(oNz8rzw|&`&CwON_IZ}9-{`2iz!^vqq4%E;ZxQM_dgG!=AbZA?O-PXi z**fE5$O5vCWg1upRG`BQGeZtzdQbT9On;TLn6WfwP-SYt=}7|#z0JShex(}F=UxmM z@H~ch)W=w#xRKFhFnhha)5Y~NUq_ATl;}VhUD65GZPM4L7{>5N91|G8%$lJBVd8j8 z9b5(!HLm5RwB#j7(HJ!eSrLa(2^-mklZPMd*>IC{!ozlToS)M7`ErO+|F?iQ0$P9QS$b5%a_EoD9@eofDP8hElOA zGP9z21*2y`RDx?3%A)X45J_La{ z10H1(n$VtJ`US;+uXhe?-hI4p2N7jU)9@f>1q%v;_=gnm4GK7jy1`*-suhFx6h^+M z>(Pqsh53q8lPAT}KhSu;lI@WpO$^*7p+`->265@aw}KiQP;cgKE_8=FvtNcT+jqNA z^0+*;i-qeC|1MBYO^(@D0TDHYr5$ty2l)Zz1}LA z&og~WWS0=U7gj-PWDm{ps3H^qQDM|^wJ^m&f@>&Ytxc?FJMThFxU)*?l018W_imPB zhndM|n0$~#NSKRh(~?r^udh7+eE9r5B^|eWS^@^^|5?4&r?Nj7eM=YLQZk8?FJ;45 zbAy|_tHW|EsiZ)!gJsdx{BTCiZE!5R!@23z#M=oqFCo063PO+^&_RTs87PdN&Rnt! z7C+|>34XWeUhh~5%ngnh2WN-jBl3Z)5h#S38S4u$Eh)%9Igy`qiBMaYHJY1RZ0#{A zI#C!qmp)Tts=Udz;bP`uU!f211wciAicj=|L}c&YWCoG7!y{d>gBX_L3-k<)YW@> zRbaw}27%rQ9YpHd1UTiOlYvCU1W_emC4i$%s22EUNsZ>285l-lD2GoEh7>ZufOR{h zP=qXVFswvI_z9Ub7MbYh8hmu<9m8v`-;YLrx@U1@_~1%JVuJU%`oQq4ckFCPi+e1q zl4bFNUkErGnJrF^RfC3bMrz7!*~+!b4Tr>1U!}EngN66bum&x+r1G3kJ$*)0_LdpS zb62{uZ8N6UObb(9@UWhHw0vnMJd$RXv{bgP4_=-Yd?r5LHJfcvO%6p^&GuJ|Coga# zeW`pRbG}O{cX;divuw&^4)R;rsj_}Ar@N2$_+<}?o;bk=jN zRC9&<{nsy110>gBBPw$RbhlV*l8)-**)SFvc%#(?H%RMO-Ne+Tg|U53eq_n%jnl z{M9wlPv3Nk2rCrz@VV;3PXkhV+G{HP)P^aD3hT;e)-CFnB=GdY1zY{{Eyw@slk30v zy<3`ETvtac+kW;tA={jZ|~Yl zyo?6VpM2IVE8`C1#B%SeU;AR`x4ymZr>_;NTyLp`GN5EtF2`UVaApEdJUiq-6kFB^ znjtuzLpM%CEsB9p+VB(2$@{i}mj{9Vhg?vtbw(A9;$p@3v zTSCPbQPa}+zw)3ESImqw!rB@!80lRO9jYKlUgj&l#QQdBga{F(2xkD$RM=~hAAr4? zjUH4Hmk2gq{#$5W5ZOcaV0vZhl|wfM_T{Awf_JMt`BO!Cns;yH%N|mv_ArT~kmksR;ACvA?X5NG;CuFhcy(rK8bqr$yp(bb` z1qXsYu*&S~bc!6PQ5x#w8lu8T2`x9oCIhUgmbEVuoh#v%u7P*jwT40D9t676NHU~v zn7!4J-1PWVtb6wAPn_i|{H^!68d{uX%!m#s^j-spmON89n!X%xmuz#aem3?dl(19- z7abP7ePE|~V=4F2Vna9ruOa;5N_5m`q;oyjV&-9s=sqyVW9 zB3^>s*kI&*G~8nqLCuODhW-!f0I6P7EsZ(`5vHmpVFpdBCgPNa9s_J>q)WL*d_^xW zEqIErH{Ks3-@JsasEMoWN!}rtyju8cFp4UKIPF$$bfcLAQH=LqmffUwXiANl%X+Y? zfdeL>glu-_N|(X)F02@M)ueh$wb&OG_A$I^qDf`eTUZ$^w|+*dVM}D@evZi^E`djr z3Ry2JIRcu!>(bgxKZw+1yXG+D3tMyQifM)!!K~71W}3WYxx;>eu|CA?;Fxtbt>6JK zhva4zw?k}Z_%Ca0L1kf+6avadtk%z}%%foCU@KXz+$)1Wjr+PFpdQOqi~$B_V)}yN*Nz=At^y=nQi+zlh9!|F);V~b_dd~kk6iEk`T%+3 zHSc*tif;uz7iLwwbUv$vr{)jR&Ig{DOZ8#rf58U&z^oR${_iT=eCc#M7qEGZfrd#> zftLNaHW<>Rvbp&5WK}t$;9kGcb<~LB5`=}q*6bwi7;6n{C}%|r>E@)UlDWiYCsaAY z7SiCnEsC8;4m6*aF2saSV2LC7#AEN|RD(f~me+(kYDcR5QAv@%bni@5TP`GD*Q{BG zNj4kue{}cJ&f0NO)6iT1+{ty-_Wqa81<%af6%C(iD}VX%oBEd2j>p0K)jSzZnt6-- zjYsxv>gY)q%zyIfcbtX-W?7L_zjVjpw(2Qxcs<(f(&UwP<=SuDWxkrd+?9N_xFDPOtwa7Xnxl;8_m4?}5Av$ccl zFhBdh;h3`E)CcdvrxK7cbU$xxFHC%&6Mc{hsJsKgE!5vpn1?(!Wqknx7@jcKRWe0W<>h!CaY=poL)!>Frq23`E41Bl_urzUqGnEUW2jtE*Wn z?>l#9UP-_R0qf1n%$<8r`A+-JcfN{v++yC@I3O53C>&`x^92njQ9YD)aDD*GuN4k+ zn4OsMO!0`mCDhU`xCf$iG{5<5!9K0)YOC&VQ~UP^j<0eS!8ZnQC?%kaZ@;D)GD2&^ zyOw(|n42?cU1TpD!P9%V*-$&zh2CA_J^zY=#cP6_xKF{ z)AVV9X0gqduscN?c#wrcUa`$LC1>JvQ%vY^5Zc?RcES`UqDNqA17nN0mI#=At!hh- zm|H3pmD)-R8_}fE7}5F)Y-J@% zb+J<2mO9#*s)tOUT;Ti-UNlMgMB($qnpZSu_~f8h^b!$eG(DQqJHy&h_z8E20KK z79^e!e}jkwlOs;_CCDwXvdDV_(jXXy?s0=e07XQUN)j;#c+LWrfNMb-H#_2pGkARU zQe*I&w+WwimR}4EK?XfoCZJyRYFao}qi{M0Zbbo_o3Kd`{-!eBP`4*ML-({e!E-Rp zYI+CxF8+{{Lj?tZST!aZ^agoa6bG(}SxI=#0-LHu-dgmqSxOlPE_4ngBa_lyK>5ua z(;RJ8ice^+Bp~_YP!cHCi-G)q@*Oocb77<~f*2zxK7!E*%j+_c&4#tL$xc9Q&1pwI zZs}gm9kNV&n8!5Goj`Mw~fA^UJ& zaQU3XmNK-e!GsP#5E7cwuUuGClmquA;G?i$J7l9|jR8ynmJ1;c3^|BPzKVy=D!ybz zk3Dw%c{@{x+9j9{o92)S;{Xp_dQqj8tW!HTK))MjTZf`vdG|aYyd- zv&Sr+(7iR@`IaK3JdPA3H~G%kRkQab5rfwhU5=zvQBlR!^Wkm>2V&CyyL{G8n}{g0 zcF)$C599g{jV&Ucoc4X?UH`&{64#^SLXL!bxzQ!;Mi>q7fls- zlw3ZWHw3#?rbFnxjtFxLb$GWuq2icEeuqVJVxXnlGX27YnGZ7&Zy`~=EyA)uA8`^gfqDC&eMr-;XE`Spe$3=8c zQF~ue+>;Fu%6bq&aU-}(7i@CzC1{k^w}ygr6DuAUrXRE$59{$(as%1^D?^J)!7YXw z5DG7nY!zD9@8Oht2!)MN(Gq6Q>r&+%lJ67HF(nNf%xd+p5bvQ-gn8$hh+)&S&PX1I zDh3b}a-bR=+YP+@I7jMzYaw^0M)s^Uxfef@Rj1pJv}hN?h;%?>(1;xqVA<_k$|`Ob z!Y{EkjImAj3g392O#ep{Fs~oTucL%Vi_&BStDC z3%$kfMz=I1j>k<9x{!wwu=ucMTN?6@^NSV(5R8fN;fZ9VU+XEhRaPnEN|oxCR9!EE zUJ`iNF9=W$?8gb*$6wdrCQ_Sm(AUgBR1YSMPPBKxmx`0e(o|peX*?>NMAtT;o>HwTnA>o7UGu-kt))N3e za8YKen##t7QqWvn>ECplxvWQ4v-mUXLAp4rekv`K{)~R3RP-pQYEX*Mjf05{Sb(Jh zo5tNhHo!&{$~{CgpRo)5fFlG{pl7sqYw0ioF$2huRGGdX@(?L`zo851IfONt zyr=law9h`xj5!_*Jj}j5>1KGPyt-izPp2Fz7}LO-G_*wzxvY*#gNC=+xpjI#4k_zT z{eea8a=7x#s;o(z&7R%T=n3^Tj(Ne|x&gP(VNpwfw?v`dX!fH!@JFgRH2Q-&I9nE8 zV8HVXcr`X7ttTwul6IE3~x`#st3cEldF(r=FsS$)(qsfi*et z^&StV7hwuQ7NU`3i@6b|7_=vfr08GH92<7@0>M@&N$xyH1-$B($Ha^5zyF;=Jq~doN8{l0M zx|d!ffPQLwf~=m=k@gBfOF~$y!BL_bB+BX3-46b$4m~%>MnzLG3l}oiNFmt+Hyt{u zJ}B_-t%tY4BaVgnFfc6TH`GqSGm(Y&P?1WWnP?V^FO}VswVpS{;!l8{1H;Dbex2D7 z**RoHkBZS_Lhe*Eu#IHa`~*H|`qBh}xL&4e*Z?8IPWbFct(uugm5vXw12A;}8u z6D7pC0pFyH^#}EMgOoR$m0csnju^db7^2u=vrL5ywTs2-MO%%bc(v|V<&tF}Ty_8J zv<@AWsA0G4fK3e0 zpG$Ch6_-bFl)?8r`A!7|3=tz{e>jlp4VfV%ZZ|sHQf*4omLoXxWKV%qkgw#;RLVdQ zB#n5;2qI`^uhxaYgKf!BcdFx9qQ1~p1b2^<9h0ZHrnjUTTM~`kdJkMeqUkVUhRG7G z@juIjegTVEfW^2!nG6TSj$);1q+@!SJhD|i)Q`|UqDIy{e~%ZDNubR@z3E0gVRpxW zL`9!dEGx91i%>{WtvRW;fn!V4k56DiuQZgHddNzd@tER2r3V*;BPcn1K$!@%BW@I; zEXj`;)G!nT)Dg&Y5Pmvsz|2H+5=Rp&hD`g2ABnnvcA>WsCHDZ3ccVPA#)#3O3ssXR zOGt{Wyh&vK~3_>a0WU7 zQ_Gr3gfUSbFE@QZtoY1GTi^|QIryhFIq)QtgTKsFl%BfpQObKfP8UC5J0cd#`5fK zVx)_6LGZwWdr%%qXMsJam_fIMdoUf-$jN}OzdA|=9u@F8poB&Sq%ouCw{(POfArkU)JO0PxS z8nxqjA<+WSFo|u64y7h!PXI(R4!iiddGIsJVI-x(^Wa(9h&6CH2frVDZxs*E-$}!_ zSoTcN;3JS6xsts!)%Aj4uLAvJv_8YUbENWX zY0iXqgXO7(56Iq6n`|o|G9sl1cLaa|;f3CVXCJBNE)XgLoLw7X0YUbh)hu$5bY!gy z91hiQfCwwU4tCkhP{{306pp?}K?*PC&Vck8hYi|w;QuMG6K*ZyQ`Gg8W%E7p9@?Au}lw*hz-Yr%2C^uHsOEl+hmuXnvHK+P1? zCuv)vWWK$nD@Zqv=qSudn2q;uhE6auPgry=UfV_6g2HiEm!5Tf+1w5OgTL$A*BCqj zz6>~b+05A+OuPgfE=Kl$GH>BL=d_Kny(RX-qwy0vVh6BcgHGx(0_T|1W;v&>)ixt$ zj7x-6kvdIIfVTf9cBKprmcJaGSu+AXGI(la+jQn{s2YxL@r~et{aQDC^z`XnFq9eVm={nw+LCq9 zd4eEMOc}iiqcv%Ef;Wj3 zOfv{%;;DOyl*wtvQy1a`G$u!=$U+n(USMGZA>%CwN3g$f#wP4dI2?1I96Nw>=@3N^ z_>_1;RpBTJnjRYym5A~n&H|#wu^bFbSbW3064VT|EkRR4oQk3$L&hhPqdx1xH@EPo zBCKhL1lXGij(=RI-2>=8@B%>AgK!UW)x&bmcZ2}y2oG|Nk}_R>+Jz2Fn8}~{9`<_R z=O0b*N0JW9|M5(PVU-SmczSp51?13T2Y%u1y|SEMg{PTHh{dCQoo()sFxeWYeSm5t zI3OJZ{gO=Du>1+zoI%)RqjxoojwSDTh*o0gAwlgojVN3ZLep6#SKI(2U(NrHQh76Yma617`_>EL0|*SwdxFbPz{EPu?#(2lBRi>E=8N80 zdh-*+GaKqYCXnfYtmK`obv|drj}oj9@Pf%F+XWRd&wBVnvQ8hA7t~@3 zonwMmmp@l>j={LG_z7ljV(~UXc0(1FIee0HwBGeB#Y84;cM#0!i}sROy_}11EHX>N z76iUFyR^P_LZVeF`UG6b2(e~Uiy5*DzH-ctr-^5lY!vi3g9SaQHWQUNs6Z40!Rb^L zv|7AD2p^SwOSQmS8jD1`=%^+m{6WAI<_{gz9Gk>q*hjXR$yPmb#O9ru>^W@9pR3zT zU^!0g1=^NU^@y$!l3uL)AvnHRcU9`~HtbkL;HSFH?iHGM zwp6^Fju!s6Nz8$g5CPm)B0zc`Z#QEtQrR^|%P)!G&Y(hy1`Z==c#q1NA%cL;od)kb zEV^GPUS_0T6Z&_{}%JHm5u}(vYH~`ZgG;TJoJ@RUw%EMBv^d zFI-YQX?el8FVrktQapXVzwU>voB9Jyw6S6;483s3>s9-=MfRQNnbiUvL_Jill&a=V za1g;@i)is3(Sx&d*wWmEtHSG#C)-?t44W7tufaMXsf-!GsHtL;fN4aAQ4SGIASqAG z%@JK*IkytQB*{P?e1>RH1IM+mUF&L4n{h-#jFUVuuTUu%;~F(`EoDbp> z%755Ih+7H$98UA{qdjUTq=UVVFVj;t=v0mTdwqru!XHKnT?$(nY=V%7)Cg=2W8h-6 za$UMXgu~x!H~pQp+f-yl%yADQsHg)5s7A~ftnrk}g8io3hjoaBeFiTugJNc2y%{-b z5IvM9VPit=2#rvJXr!Qc+RQ``O-*9|z}_@!fNFso7g)RkeZb%VQGiXviU&qQsAYf$ z8WDI9vm62y3nipKiGg&A%ffe{=u+_BC;KjC(PKt%3$fYcLcQY;MsPET6`&;Sd}*X< zMPLXAwnP}8|-+@qx zchmqJq&X061>!awWh~wZB3JKu9q3(<+#*b^!^cRU4|X2OULbTKcN&Wx71W3ktrNUw zq3ekc3am{X#V-`+8V8hZg!U2W{cEKB`Gy9DG4xp4#lra-X-5sdkV-ZDYvA=$E?A(o zKgE(=1}f6~O|?hNoyodhH6;kCF~EWVR#;$@D%ccAv{L~+x?i#tgAIw<0#B1htWGLe zs<-@t0@BcAfK#EU5ZDB+GpyGUygS+boQ#R2MFdQw;4aZS8`X*B*GUBn^xjp2q}Y&_ zVGrumQftN7VU{}$)H8Wj5_1KmLi4YbTz5$Mi?!}&&=3)7i`c1p-XKACdhQLhj)-Z@ zO%SqiFj}B$Z(Z?skqN!Rb zfzO?d;oXb!&Rya?Z%uGBv_`OQ;d60Ybf1x9EcDD1ge}L_W;>WVv|(E?S@uonsT5py z0w5*?vG_a94hR$Nq5}S+L$>8HZ?5ctkh;uPst5`q${>4?1wll%CEFTV0~mGiB3=Lr z(lHjXhHwH(n6Z4h1kC&+@k2IIDVB>XZPhUS?om5hwU)3J!1)cEH>V6Tt^c^b`EY=& zi1wI?P$Ez$mzKyiMLE?SiKE@x32@6mbAMd0{H4`nEkQceTHbcx^&oDvDpIaPC~=Cl zE^&-%bj7t3h;R+F6I#3{&Fw)=!de@;rmEqe^M_&U=52Ifvld(7#js^ zYsL=1nx5Ok{T=qn-)WOUY&jH%yU52$h=EQRpc=7mfKcqR=!MNLG*R&Tl&fqY@1J%@ zSOO=)WD84n;v5Oj+Sn|m@@vdwK<{{3fZs<{51}NX5IU;TKO8P`f~Bnh$64?ZAv>kx z4pQ*T!fU6s4FFS7gA83PSU}!z0vmNhQ>x(lK+zih+l1cUKoI9YtzE-X6V#F&WD}RP z!j3N^nH`i44JDF*XvUOKv{=qNNAH9W>LdIpM@W@=-&v)rU4l@i_iv!{I^{uEz^u7Q z$ek?bPBp+eOEenYZ?IH{sfG~)5QI4d%EUfI57`PJT~*tkA%dHp484G|S{ z+9P=;=#PL@Lj9vEx75u#1>5$kO(MBP>S1wuz%MtCb=>=k4W;i|_peh$Nh-Ng=m0u%7|^~C?v{KP>G1MX`57^19L!Ki2u@Q4r;Zeh z9MJTzSg;ro1&yxf!B2&Xq?u@CIiuv9@ml8}U{5W?k0ac+AyK>y)J9p+WDT256FIJj zhpD{TqT&$>&J|h?K*dw6xJisp)mqX0Y(Oz zpxF3pY@VW=$SGM+Jmr$SF;GTKsF5Bu%;$SLD~26xb8NB5fDuQ*2~*t`J9ve6VX0F1 zcK@bD?s*q^=dBKJgG>MvYgCJEjqHor;}_)2f%z8PIy#6$Gw8Bf#Q~soL?kV?)?`wT zhjB*Gp$6Zpq@d%efEf$5NLf(wC9g-$sZmBc?KUhwIM$AtQNQMIO+XEf6A*;}jw z2oyqHdMvE>7Aln$wn@cGEh#%{9atT7Uj2K$Xlh}N0F{s!BnHI}mGwzti%lrBOQl}> zJVTGg&8C#mro*-hD}p*|$o%F#ck+|>@6aLX`H$=q3!M|Q5RX6tLXC7JhpAH+EUA=9Vjsu#aJE z9AgtjR!4`=zv+hmjg8}nYz_`uF*TV81j>rNg9*n0?1@DH3IM*ma-3L4u&_G?x%1(G zKn)g!2e}p)QG!^0BZDlp?f+oAKtvs%s@W>6MN6v}uV@VeQ_xEb$7GY8&JEFF;8FsG zR9r1M$Lpb8pq9j(8U#XAPyC3%-!+xY(c|e9_r7U>l_bv`cup|;w*qR8?@j`lbkoqP zB-HX)-h8d|1%wshBqPB9Sb(%-=Lj=Wug6|D63xI^bfiX1mx8ke`zW|qB$@{1DWDfA z1|Ts8a7+hwMP>_zeuiQ0|mA-H!w6}%`B&V5@1G7#P%lMy|(UywfmuBQ>&BbF>PPyEChKn@jl8ZaGB==w__-<676jh@$8 zqRW)sFo=OND{I_ogtm*N*XqsxD``>01I%<0hKo2COpmc>ossB-a9=LFL8!S?^=}jc z8-;>JW)#LW@1nOQ--SBZA$==3$8lIEV<526@C$=NcV?d5d;hp)v-8K+Djuj=Jkq}9 zneM$OdXJMmN%{gKMH-_Nx&(W~P{DD*3PgXxR(gAU|Jq88Qyqq?pdGoE?ynp z*sTT?QHmPzU8%$HUV5(QY@DeMCy%=aoJ3{{=HCPphlMM9qR9jn#L5sXCcu?Z1+bV< zX$R{-G#Ch}A;^X#I#=@KO5PFhLu4r6FD5~UX~7+-?GP&>e#~g+SUYof>z&Z$Od|BS z)&(`>a=BuJQX4f8N4vcz)gCoKK3c06gJaE_A%J}pKTr*Zgd8L3eNi(U5_^i2%2Cc) zQ8mz}9*97%nk>OTCSX2_27c%=vHoaApp#&>hKMp6tkLxjMa*|d#V&EQOB$0hI}=7D z!Yd&S7RE<4cAQoOKEk5qQxYvpFC8pIK0^2jmu~ok6LJEYqYfnE+;jt~>Nuw%6R;}K zDl}3s%Mp(eqHR0|K?%c5l#N{tJWERgPEv1j$jTH6CvAF*Qn{oXDq18(!95f`A+N^` z#Ny;{h&UIdh)>il?>7z_0cibw=mGglEC7R!{(-<6{VEIctR*zB<7!^!GI%jgp(?Si+KNF_a@UH*7JrD+C@9K_bkDCwj>ql zdavHM-b^$JY7okENKB?SX<8g3hzFV>dnGwv^!Qk^NrHmisi{Vi4S_0^%O;z8L=>C? z_j3{ixn}niESl;3gc_I79wF5@d?n+ zlqcEAx>o81ajE!nQ*n!_UNC^gf{TQL^Nh|HLHuta5SilgR}1@rd^^#|g|!4e@$cEhMow2pPu%*vVg zdU#_hq|S1UztnrtyYc;p;phiPJY72!s|R&{PR>@{VcHf->`@ zd^gyUM6|08(LL5aevExAeENX<*r#^DK${%Cphiqu>MGvlsP!Yh08GEy5jFbr^b(&` zHP&^0zuMNW)+G^o2Nc7p7sy8p(_c*SG!A@bfcdB+Dy9+DjBYG`n^0_%O7rA-@MRF! znpM^g^+!@pq1^+2G_B9jMMY)KSnpG$RdE{HY&sxQa&ksACDAjqoH$WO6elnMogF|^ zTBD3*j&rT3(E%Ijxz!GRVm8_Z9ND1Xg21FC_(u3|U=mU#2RoB+GLBaSBq{<%1>uNb z3KXyrjC+BBBMWL0)D_a;mF1j{!^3Adhk>9YNa)jol@8b(Po1(mDLcm}XSS=U`qRG% zLQ0K~9`45x-g)3V{U7Yc)9=E+?v$7S4!a|_w2ZI%fwl~y8u@wzOD>**V2aO{Gl?3~ zRg%L$TcKQiD^R)K@eBg403cc-)>0Y(?9ANJiZzmO-y&4pD0;@h_aB3+zn-;1!5kx2 z4;L^N{y1Yu5E@;sF^0WNYkrIqRl^&GmJ;jKNJ#K*1Hp9HOGe}{x!vK-wQwKNxN<3M z$kk*I^Ui|GBWz9dWRu#rnXEnFo(2+F>NJcIMA=qW$`7I-cl_{S-LSQfcOJpo)ulwa;NEpia1?kv_y{5;=mroCKt zPcdy}X8#VM{8ONMwcd?V@x^-d09g^yMX8Y){0jrNR)IBIvP-JC9)fIObi}8T%dgj@ zcW`Eqsy`(l5Bfp^!Fd^X0#|-W>-Q)G{*QMM!B7!6pk1`_r;hV__@1+zz z1e<_K^P3#ElI0D*&@)hz1Q1pe&~&pm6}hecn4hUN0HK zeD^G`kh3GY7iwSGaydw+^?^KDVvgIw0ZNFoLF-2Qg+QmOC@CChY!1ok65U=DD^HD#thhKy=+{ zf%U-?5vjpP0RgxZezhg4`SbPCBDr>=b78l7ygPLqN;4TlnGasgUw=+?6paU;x9}Jb zB+#GITV)9rGw}5|Szr^AMhhg@@T7{yV(ot9L-!~2>A)4?_-466x$o{0s zZ^V?~>oRQ9J_?Ku_P)(0f@B1J(D?@vH4>`~^Y9~?inQjjJ-a6=wO^1tGmK=D(fzvK z^Oj^U5ev>WT7L(1H^Kna{xbsrgwABWtHGjl4d((5DVAdc)RknuB~t!ev+H?q%Phqq z;44nFV}rwiHNo6dq@s(+8)eQo6MkU=t3j@jKByi|BbQTj8WC|)-b~Ru9o>tdc__yS zZs&5&Az)B*Q4cVb5r^psv=~L%$@GXBKPEb=n5)_dY=)785^vKZ*WzmSBj&`))a7wv_}3&R@0GY#xg**i^BlkOzj5Da^VFg6gOcoMEe2d!hg{9 z&ue*&YL>kUZvkpsw5u!bk7+53jyZYO=^8xZbi1lFyUjk%F>;DyY_8&rXpxW^iE4=& zM=2<_CbdI_*GRp$PY+euil;j#V$O7HeuS3p)x#=FfSSZ^2D59ZbXkiyz3pVWpEryu z$Bp$zF!Q(BpH?gQPZ~E|c!J{&9NfgsMA!&{aTw5gx>M~fspi&HbIgp4w2vKW8|RjC zoNz~AY5}dcO>OMcy5M!(4x?;}H&ZpjHnz$(szC7pB#?0^EnPH9&sTDsjNi~hE3NgJd6j-fnbJwD+jJ&g1b>3u^v9DCx}p~G2Ubd?8FW!y)|0`{ zIk7{jGN24eV--G-%W6rs&`cgAvu=S6t;ATL2Er4X5lE;t)(hdRO)PebqZQFd3f3?> zA-c!P1;{NdItU0}1&RX9!!CM=9O(+J>L}4k2`QfimGz1;@_$1L%m6&(Ay3KEryui- z=w0jCz-MNc0}~ayAO476C=i7Qnh&CC5PS%u5@G^o2+p*A!2s6{v2Z&Dv(q%&@d;aF zgLMh44-wudC7E@Dy9q)QiXPAgD`oUoVhSS!VYDDrFku7}#)twuCs#9Jq(E%@BB*;X zR?LKA#&Sri4lN_%cLKrU>;|wc$So=ppBAX-#Ow|3@rNsWlWw^6WxYeQGYPC@=}&%8 z9Q=f;gBL!N<%<+@aDr&oq6ZjjA|@;K;rm?H+rep0o&w08O*S~CRcto>$*+dhn@y0t z8JqwQPx(Au%iyFZ-M>%9Q)ka~%ll`1pSO6GeLHZIDK=Ya_7$FFv(Sw-#5|pqCi`jK zWJ|Cz(odd+@(!xndP`5NLrgRt3v?>^UKqp-lrxCe$g|?4Lu`J0fW}F49I1j2e4#2* zyvDr8kxMC)s%|&p$IRZ>St?HZG?64{{=x^3H)lH#mGC{>)T238T5y39(M!2U=irgeQTeA!7M}f=R-AC9tBk zAr8P|-JwG41PB8tdPW)W-RP_Vz{GT~jTF9CXAySK6 zut=A3VQ;{c0trI)&Q~PgGQn0PdCxXt6G4iRY=~mIY*4E1)RbI6A==AWqTL*1g@9rO zInRXcJdWw%dbMkXTyT-;C}1FfVC-Bl-wf>?(uaT>SPM z5YB_z5P?wk&V|jE9^8RxBb8q-kGNOxuQB}Z82wu`1ZXL|NGLY-?pL8HMdL#~h`Q;f#qVHX-@sXOzvie*bn2ndN5DMgFrjfL(E=~IH4Nj5rkYD6kx!~&@SSHYJ6 zXh%Z9$ZMJGkZ*j%RRqtH&h79cM(UNI&ma+kdQT3=x0Z|>I|yXuNDnfRkR=(3(;px~ zd7vhVcIOUpID`ZhT&5F8ljD~x@&TT=?r{T6ao7o2GaRi0c-B3D!p~fwFW3~C3<_#M zQY3!inw|Zo&;+uW2O<3H9by`re_VfJ56~<>*)(D})tFSxKwrv9t`e;^^C#AFQgYh( z!RH18$um)^xQ>MmAuJoBIq(I8NtvD8C*}MQ4?t32dk{)4mrJfN60Lg23b;Ik*{_JW z(X}_QNSztnoZhRb{xbms$^acxZ~^E-lRSG9DjD1YEP6wTOGQfsc%^|~#%LYMKgfK9 zTkuH*Lf$kbcbXx)^>`DQW=80M*}IwqB9ttR#Cd^3iXBu1dfLXEBZX*-0AnL5R~HcA z2h2GP{3)~0=~|1zYvYw>=(y~ip#rDqF!Obj&Nvu~Fi`@R4$jpvNEpDrZOZ6-1^09< zu#**CA-N~PNJD}dN}^qW0-R^E*7S%j$x`7ZtZ=LW5)-42z&ye2GE8mM7>H>z-opJC zra?yhX~|Klh7S^w1zHmy*GR(|?|)P8Tc{ZLOm-xTnWb|UB$CUrHTh5Gbxi`r2XJv72m zImS`_3D-i2$!`VMVrnH#%>l-$AoS|NQ2cO5vUf_(m`l7D97&znA3k^>ULRqJSxy88 zV>@EIEklM(ooC?Nf}fa6fB@yuJ_?(fRIAYxiUh|yCzL5w^@;s;iGv=&oh#<$%HBNL zr$~1A+k-iFL-Md@rW9t=L8lu*?0E1$Nn75>ais?Z6~YWCsCU6Dc);u`kjkp;Q;VdU zZuLmWKs*cr>f-?CucHnO4GsxdbisrkNg3UWkPET3Qyk@DV^d-WEM|1G4~T}h=HnU1 zkF(>fL!Q+xn(F8cBD~TKO+U{PYH40e_BF6UI<0l!w`L$wmV{e~76iFTiwWIFgc@0k z<0q<+xg|J$A`7-@Fd#wCAtBO(UUZra&e9PB8<(}$fZ(&dvk@~AC2%-#Pxv1{I7T84 zD7@!z$v7N(Tfm@Zy5VUo|CivW(oM$iHz-$1%oFerD(xTF-+m8(qvdqC3QNnybZED9 zlLt|a#AU>Ug=ajXXYltP)W+#{7V-P6iH5)@dDE4OPlI2DZIvSXQLHme=#zH$(=Gdy z=};M808smb7wF<;%wDW_yabC^mVy}|6q!?^Z@Fp9)7u|saD_+#h0oYU3_Tnc3(kWb z3|tJt4<+#h(--vw^ro5b6W}r$2$UQ;3LYb}P!HIv#e&&_YYe)@h#Y|xhzaLJIg=2? z4*(0KNrO_XILAr#!rufxGM+Lcjj#Zk51tWq6_Iiv zw?!`joxzWeY_HaOegmq2V?(6F3AR@c9gvC^v4)3qFtp09Gu@L!M~T|}E74vKqht8@ zMv1zXR9yE!4}q*^aRd*(YxB-E6-COKp!KZc*vje_Lz2BDDUP?1hCLc+gbl4<%pEUj zm%S^8HzLol>|MT9R;bsdc|1m461#bo8DT+*i)v3Nc1dd_Tbobo^}S6}Sj zb6;;=wvBdEp6?pHIB!;u5^7dE;GMExkG1RI$sMn@m%t!qymM@Yt?Xd(SW}`E%8m#F zlQh*P$yEnS;SfVkhr{=q7!m4^(Y$vsW{|#=~hrg$ZnJt#iNoH8@ zKN#N|)x))p@pi#+II#y>jCRdw7i>9_%Po0xrTjv%#4b81+@v1N6{EV8ii7tDHo2u+ zfI>+uM-z`TdrmoZ&kXFeCe1{@)*jV+-CDj+8CmN*C#-dLs)wN4!S~(l68`Wt{*{+N zgAMWqUU8x+`0G*Otf$o``4q9-E6&%=K+FuP<2XBjsWM8*gSnc9gS!b-_S|Z`^ zHj8Rp!!W`bs~}yF*3+JF7JJ<9U5z#KPpX&Z?$D)%pV=vd`|M-}Yc{!B=5kiwOh0D1J=&fS;IgkW4}m4ckAQY3tye^{$1P z2Is@kO#Co~pPZN08QdSr9?^HHt?DztUwYe##0A%8Ah6`K9K zjo?NzbdVuDv;fD1mxChaO+@0*Z2 zBT|d#DAoNNFx&_nDdnCm8Qtk`{lr{s~QC)i6!2)&FO1Wogy(>jH zMaNte9EicF_ivT+V3FNmz<#A*0r4zBIuDsD1`Ky3I7RPUYo`1x(In+gg)ej#dRI*K z8_rtt-3UW((gqrsw>17lmE?$dGmV~i(8*9kWVuseCvHaTSgZrkip7hd56a>#ptR60 zneM^}K-{hh_ENz;60B1kt6*%(VDSy@Mug+*eG|pPzYkY!tV3Kx^acp%lo@|fD{9c7 zL2qFQ92&$!va~zWzB<^nCe*Yx*t9m(ysE#UHv-itj*dYk>1J8XoH2UjI8W_F`{=RG z8lUWjo1Pv7Zb|htq&j+3zfF?HBj}%VbgrC($k8zbi-*aQs3CrId&-Y>KFJB)!HRah z3#yHioTKyP{MJ+(W+5L+-qRLD7CVCamM)qm{5}nD=AKgFAAdV|)4-F#8F^l+K?M&_ z>x~2m0i^?T4;%0Pda?{t!MI{p%`=#M9(785-D zft5B>YWi39&EV%4amt>qhu`qzRvN4D%>4i`Jjp;FB(qvFxMV7Gpgewub;N}5k@jr| zdRiMhjvQ?^i<9b!om&p*BSuZL`^EKZyW{!Jt|xx8aJlih?^J?#0Lvo0nYCH{(JuzpQdDneZ?7#)TAI)7Gc0~$C zxaEL<D$fie{ z;g=TZTDPvFvAM6Yq3>uz#9Ni?-_x*uQ}cmiflMK>U8|35-r0VJqx8aS??^(H_DV|?cU7%=zj&H68*K$Y+Z#Pzo0co|$Uj+XkEIs9BK9#vqJuY_ zA%%UwA2?wvzE2pi>V=~jd2p}N*hr|dcbbTL ztb?9E1lfTA+bl$a2V)X8E=_rZ707J$YePo>}8xa-1LWy~PQ#|;8fj>-CJ6#|;AKE78gV0B2S-0} zk(h!JI%18vCnK_-kT!76z=94Xkq)2j@h&Z}MJ~NY)4Fw>2S94qenIq1gU1{wXl62? zSCJl`G&@Df1@aoqNHcm&?0!qC`MgcArC^o>vmqNa@s_8O-7MZZln)I+V6L-Y&bt zJkn7;#x??h{*EM$HLIO*FjGx`G#+VH+r~O;FLclAR(tD`$Hv-f&vnh-7~2lJO|GFr z%jKiH(9wut-KsW4_0U+y#JS#!>tp+mCyz+ben3nTA(ddUa7yZBorba1S0CE)1hyF}7AdTqh3uQy4H=5F7QQe;> zm*p!X#>o{u>akw!ICS_RBFxl&CMy0bE`vJ1^_>m3{&S1fh;Od@!u%btT=zBct^Ut7 zf9<~8o@UQCtuD^_1DoQ*ND;y(REslBXw}cx-}!HcCj9$NZ~ar*X>@?L_TuO7`}do= z$LBP^z5eE}##i>->asi8Wcv`35e0QL-7w~v4XpYt|8?UV8<$`HPNs0*J4Y_M{FBd3 z`mfJyxu>LK&9*DA-}ArQZhZQ(-}in0(_6k;-uTwqEB`6+=mYGI2iRKwZL>YB@vT+M z|7lYFE}{?Y${-w`DKY!q`1ab%ztWWXxv*24o1gh%eYd`~_7ejM*!MPlal#KCxpqZ5 z(KlbZ`@v;-C$B?@A#!uGSWBpXdF5sIHm36|T+*?6Hu@C!w)TQKQ|g^QSj(i}(U&!u z^PSNvmp{w?^|RWS+0}D@v;SW|8@PfRVpptUsm{h#tFF8^wlVYtpNBG@yr%rSc3gSm z-Y1TI_qtK+4|hLy_nHe1?{qI(`kIxRvC>WLSKhbuH~t^owd?CujjP_gj7s~`9F*p8 zFTAPLJ*8;)7-ez}{Z?1p`tz^sOF#R@%inr%S>ezGr}!0bII?KzOPLqtn?m<)zxCm4 zA>VxYUmjc-{rW|Ztxczx`d0UC3&`|t$kn*&waf0U|M|Y3+&-cIOG|%t!`2^-_qp~z z@yz0TkFq;HAOFP^Io^BMMgI@n9qXF%gRk!z@7eh9BMa}{n|`$Xv*AC?KD}mUN}=!A zqgQkq&J_t|`roC?ac1?r}!@3-F;W*W4ym-3hB8GqA&Keah@! z1U%Hi}qrc=ocMjab%D_cnn_4`kM&fET zuEydT{vzZ~9Bz(YiCuey#6dd{;x_$Qb8@8Ll~!2+#1)mmr-jbUw}oad`7FdOP*j zhUAgD_?`o??T6z#np1}pdbm(2o$Q)3$Fp?0`+{2gWUt~=z=tJ;R*h`+=EOco>>2d`w#UpW8X{LZ&~upRZE`v=l^a7-^_jiI~R_dP_)O*SRSW(?Cij<+pl@? z^Y`pL6rjA|oc+(`AQ^GFDS-kpF8j}|Uk)U{-k<#JtlGlwOkoEP_haK}X@HW_^x0z+ zP-e9p1_iBP-s*XiKm1`C~b?aB( zJwOkbf~->(b!y*A(%;;~#@(N}W#x?tJsXe|zVan_qdQ zE-u$h-1O7&?EYU}y!==D+0^a-Ttnb8_JygB-hJl_53PXej#X@amLJf*VaF{uui(JP zpZWIlcmME2<+&4(>{t_+4xzd=jD4%Nly}gNciyj=|Dl;*nv*Y~8%H>(s}v&R3v5h# z^M|k9{gthqRpX2LyN+S}m~ni={s+JP(kHL@?NwL&_Mw%2t-ayFJ72toe!lqhHdtgc z&j`jAezHCEt#3?aKUlt|F5-Xa&Zi#RfTs822GAZ~vHF&OJ3xh@XOADa>(2G9JSM`A zcmAhl{#Y}=4pKFj3c0o;^e^9>%KmftJ9RL3Wo+3aU+dU+BPQ3P|2P5-<~0w$xah)% z7hU++S06r%iKE!zc#_?H@3w$uLv9C6o$#hV9HnX=JwU*FMr@D&Of`S_bBq=n`(HQJ zXzlwzGEVvOXWP~PRpUQA{`0AAD^}fd=c+m+4m3Y_^RFM@7G{aQr~mDVi!XfW;w%2| ze^&aDGf-Fe;GI9ilUwe5_VEq{2~)P>45yp@U?o1jH;% zn8mW|grfPT8W4*YOGTF$YET1M*VL4;rZHE&qf28w~ znqtgI`AYF}qh|w))mx(rQ76LZp>zINOHql$lFf)x2qH+bSHQg?{4WY>uK~wBWQa2W z0N*VIA$E+~l0RDy?|^+eIJnqt$)7p=gbQ|n4`&k~m5gMk7F-8&W7vzBFr*D`GQ)=u zb&%WE&~d~RbC|14j~oW)5}ugg@Ep`ONILYJnCe5Y90WPUEmMjOS2grI2Oy!b;|7~F zx_oUoP4Obai7M14>$fDbwm@zVmZ=Ef_U1ZuzDw-F*9y=RRC zBj}RFTJJlMjmo8;1mBv|{F&w>FGebQgdw;h@x1T>7uOI^zh%NzIDD|{aPAW@f;;r~ z7oqG(40XuaJrg(!oCbk_#UB zej|D!(Y!9UZC7j`LKGI-^5;9xxyXIK4K^q=u|C?1HW)ias<%iE1#5}~HoXN`m zD$7b8SapmYSpD@cZg^uygl}q~Kn~w~>!$Iaz3ki9$_f2AjAmGET?*BeJxym;uj zSG(ZA?7ZuJ?3Z2exls3JGrM5~B4Oepf+cfFP5@uh`1`f9uijdp1lg9pF1X<=_SEh> z=5GMe;oo!OmrsRjr+S`#`0ZK$N%dl%Wc%A+d7y`cywDE+V}Fdo9Dh&$NLfK zJf6avzA^*Eb1)p=^60ML??xlk&5!O}*{B8^cRsl$)P21Ep+#yz3X1i;2!49^QNBbRVXW!&6=E zaJpkpJ^JE?Mm5n;_r2e3V=iU?9*6{!Xm&lB>`G2_i7RrF5N+JA5MZGy)v5=?Wl3wm{eqgpPzT7|VN0>nXY zlXmYj0z(EQ_$*XPM9*Zk;bHJtvEgIap@`dx*H(V5P<|bYwHdHM3)bl{ssKSo@%qTs z8P9KhW{Lt_q9QpfQ;0@*8W%bid#CKX1Q81~Vxywf#3D2i&(J{3G+Mjwe@W!ky&JaA zkcq?RHjNaVwLmYB40_-XA`NA_5HKbId|;DYe4*a>3$x@h*;xf4wE*K1SQ-fqUFetW zg_IcCSxW1AO|JPO{BLVr&zl{uun~|Qk2Zn_5pYCsm7}Smp-C0XG{l~EPY^s)L0$8L|9&M3Pp! z-&RU5hnE~N(F^8hHY3SS6I~*7ABhEMBZjztyD;)>3Y^{XqFAzAu$P;Co5h0jrQ$_K z`^ylu(@Y`74VVFFdi1EAKhv-kLeG#1Iij;12Im4S&C&mmyn~AgAHRBw)*BEaN6n&( zIae$@zEn^_LCwEbU+9u;zw6w!C+7cN_4!R|=%GW;6XD1&m^XSw8T>#S4Fu`b5ep1R z)YSWoU{DWtioM`LdSy?!Tu@~zpWqk~F`})>j^el=Jht8Z3Y z55$kQq&nN|?K5(w&CHo8iLk<6oq$du$qloxS(SeTp8`%!sZO;cVn)Y0#>{e^cQkRJ zE!BVn30EGq#?OL-Hx#p(h8B(-5-}kdqM(1WO|?6O9GB?v$OWZJZMAKz25$&PpkMC} zsy#_P1SL~+7L-nS5qwH~n5K}VfG`A(1!08L)BAIEUx89H(tch*YVOgFr1S`B9)AqI z_hDM`5#|-ge|pLNa|5gH+xCTDZTse1U$`JsS6wWX5JVR-*q!W^7eDn1yXiMy`|{$1 zB9vB4y0$F7`(gG{h^)kP=hSLYHV?1vy`wDnC}aO}eU)7$PS2)eiJO*9dh|=hc`QZD zuveO25A_7rfode?5b29gKKsA_-=tYxKlxFth+a?jpB)Z z|GhVUkDCiFS$tW^#Ph&PJaO0d!D;xt?%)>zsZ*U_|tbxwurUV>;JQXvGZ=6lcwE5E!~fKndS z^VoM!)P28X<#)T;mlw?B^5SLJUhw#xYDE0S%FX_BNI~exg5n<{3%hCAg`?nLf5PK` zn4s0|dGh5I^bk-izwCi)n-~0k!~@qhEcgM!LK5o?&K~Ka9!y`?e&_Pr3&+}upW1ae zG&b`v^PO|g3wN$5_{H7dV9S1b=j~IRpotfMnLWI@>%cic8on;M7EmkeQo_W?`64<6tbxW);xIf{--%4*Y+&qLVJE_ z;Dsd7CHw-0N3a3Vwj`UcJbT=XNLzb96}@GLe+lbn%ddHM-jPo&eFRU=X6*Rp!{8}S zn(W)b*voHs-!p^Y`LDSzv8k8ecS9)^$jkL)O2>opv!^X%D_5>-n#ztdcG3I^j@V{O z817@|-gE21DTU!(ht?A3`;M>8@$b6-?NE9aj2~HnQqZxuh=rS|+j{9wT9-ZY-Al@? ztxC$v!w~$XT)M6$;-FZ76$d~XU~=FY=(=Rm=<~yv13XvLP7g3} zL98S?1Tl?j5;5k+Th&>sev!O&AVkdKRn3yee;gUfC}hKR|wa=~|*ZS=QU?o6}& zCAINqdi(Q6-)0@o7a^1+S2)(54R8iQLbo~tOGELnXcGr^a9zXhk(wmNV$KBe)ZO(G zBEi7&NQVWJ8WuzeI*yR}4$E`$PjJ)_oKS$l5Sd-)kXcC*agU*WM=N+Jc}+wN{p;UF z9^;ilA>1IscRHGbIL0_)*h`5EDCZmGU=p%sNc*}$jlrlza!oWyee<|nw1h?w#wBn? z4i`2Q{5olNy$qvi_=Y6eF1(r(14-2b>&@^nW-n*CGhm655%uB~It^4~NK|no#eAR` zcxL>#h|ty1<3{IeV&1ue!-sf=Hs58S&IfleU}sSMv={RJH(`3h60JtOSwtZ0$U(j9 zd78R#*_~(;J#)o^3m`4Wn&4x^$+|?V371AW6QBTq=rTgZO>)VVkh86XLO% z_EA3g42L+B$mjG$(}feSDP0Q~;g(d#u6W(s;q9BEyP&*SL!-tJZu8uSE`90E>mGY_%%EPxdDI$QN$(^cC-g>UC-9_x6 ztb}^ibWj+16KgMJ%|HImx@U2=o9hMM$^jvfq!LKV%#s>}+UvI5_sg2=ZeY(m)y)?8 zkbqvqjq>SL_|DJ?K&I(>`I87F)P63Z{@L~XoQxohJmbJePsdMIu;o7=jq|Z}jlce4 zUHj@!7OW9)w>9s$9atYEcnBoH?%DUp9 zbh8&_P*@35F$jzl>g#^9>8JedPnWORKd=KB%;Q)9g0(5lX;TJMCc}XjXIy>}d-=uh ze)n~@aK`jBVaC!D>eaLJ6>4lKL0~{|0?LOf=a-hu-lm@nV_hU;dijhI$daLHK?<|u zTOlP&q&P~*C92(`pO^!Ue)+j8?>)fSfxADyZpx*_7Sw48_3C+i{ z)wJd_@^VWK-_C?e+AP3|Wt2zrFicj9vQUJ8SR|m)5@Lu5Vz6Wo*skk8D7q zKj(!_D97O_tEiyJM}scH&enw;7`rM*nhMnN=pm7Sr}YOUjz8L3Va-{3H3B`ewr9-H zemY2CTjbYi7Ims*c*X-Uk#do0x~lBecgtm0z)y|d^eaIwfcrhIa|Lt?VNil?p4fOK z_<|Z$QYl%+M3>S2djsMuQhBHL5Vk+PcKxwr*n4#ZNR;x=H@e>-7pdM^V)b2!QzzGa zo|%f?^fR>`7BC0M{K9~>8hQx5Z$V*o>>x-Wnk3F>Em~pf{`c>H3>8|yWEU&H%7AO3 z&|z3QKwb@c(M&*l5BiM=lgeqP_irf%9LCNtSeEi}D;1o_{y%%~0T{_~oe6iIh#6pJ zkbwoTIdGR*%;YkNIf#--Ni>y3O4cu1(%EO5XZxh{|KBf5w$Ao%pKK~8l46iVQM4FD za!HXC^D->COK!v>0|Q`k>iB=Js;8#`46rMTzO&Bk#r9NJy?XVky1M%Hs~0rHGav;8 z)^{Iy3=c}+AIC1dDz}~P6knF(C!mrel(5E2Y8%-*LttrOKZR?sSyuif3&6ea12Oj0 zeM0LALdzBhx2*LY&iqrv0zxO%%uD4dM01A4w30ek>V7X;#l5p;?n5jVIl5MAI~lw< z%}#dXND2o|(W;S9TMUB-wGfax)Gta=5mRF7ZaID;_zkdk4$PdvmDWdq2CbTgKPF5G zY5}hSy9{n#Zap5_oOa=WGj+FJ+)u70VVT%@3E~OC9TIC7_YIq(MWJ$7j&2s!PBAhB zdl!5R7*jv8CV#HBU#vh)0-rJ1-3||sARIzXz|+B=H&KiPq8G&1J~Y4Y#zPNo2&ekA z=wBUr@Oy_IrQkq}DJ59jf%f4A(UXJlZU~MT9i?3AH$U)ra%jVWyTRgdkOo=0-e zJXe0HYL~Z$H=Y+eYjvP+vNrul;h8t8hX%C1%j54nCwdwTmJy=x-ok?cS-Yn7J(tEV z>I?Lu|D1R9@YmaU3xCml+&H-ke?_%D`>L;}wC)q4+v8FK?i<;o*t{+Ns1Uad4iZ)s zj;SLijWIuGj*sYj4_04(z4Gk7%FeWLSd&5n+NR?|=bsq9WK-zWE@dzvM!+~C@C@R< z__{{3r+H(`=h9LF88SSXL)lS(K5LA$D;w4a&TUot+2c&_g9Quf@~Hj~DJiCJ``Vu8 zUYfk`8?Qbs2%FY(E=xH3#%-t&)J1{J6H>TBQLp>QKk@wTPkiqStDrFXji)!q-4g!Lu#0H&-5(Gh|M`e;&av<4 zk%VA;`<244ZhGO42lsvZANC1CZ+{nK_C9g)mv6cZ6|U$wdbd6t-DrD|YA!6{9C>7&mJ zpZnnC{`Wzv?{9xJ%>mzddf)eNqL!~br-S8W?!Wu>2kv?OC-)qjF!k?!`k!wVPX5A8 zo9_AS&EI1?i1AAN|v(esuqyZ~WbE41RYDZ)d@o z-8U|zTafQv5Ww8zEjQnH;g=?b>rdR$u63f(+n@jWJqI|u)Y8|x9WdL@`P!FH#P87h zczw`0ONKng1kO#|a`V0K{L+MQ{mGjdC5K*r^>07^%ANxJ3E(jmHY6$0@-+lN+ZQw8d=~Fid!mfWE zcZPbl3&I!A|LpPV7w=*1w)A&^ZTXJvGvB-o=0}wd)G^^ zrpx#L%|GlCPJ40wt6xBKpLqiO>;J|B?;0MvZV?Uq3x_h<`Y33soJfFsq2=}HmsrMP z0Nzr%-!Dbh)+T-+mqu-b#U+`6JJpUJ+aeNyL9`KaqbN!#rTcub^#r?k$b#}BUg3!| zq>l5giMydWM_dkgraILkROjQzL(pX${$~q*QXn1x06TsQN*0ht_Re-$XnQBNl@Xy% zPMmAPprw3Rh;0&Tqvq(%cI6No8K~^}xpP9&j0VCd!TBF#S_n3cn9fb17zs>g(t?9P zNoq0D_+DpXK-@&)kRXe#S_pR6ycJg8JCRrhz88iO^bg>2;xyv7CA@U;ST<<(!08PM zmM!y)G*qDx`qYeH9!A3Hp>>I*f=oVxZHm9(Hm&@r9vuTmjBi>AKP^9fJEziqyac$2KP6 zgggXv;% zT+hSb-J|(~Kgx~d-ETMo!p#GVy0bcVy&SwSa_UdBk5MnFtE`kD8VB~Wc?onMD`G9L zXD5v5XeEl^F}-T%snHWk_)@7(yj0qy$QpRZ?UB<8PIb6?;Mu}6$3~9d65f(hTc=@U zUD-3PPoQnSzuRcwElp7e91($JptcBOm!ZIhlcHz8QF~>gb_f%<`Al0(0C0dvn%`gu zD-czR<%%$$HI->u3yQ&@6pbqJ7AesdI8F*k2xC}sX5hyg;d2bTgzqOX+%g5qX)>6L zn_7I$wRP-@l{Mf$$eKnN>z=^LZQAT)?bVt!&zu0f3ABrw`JK3~jZgo@f4-lSdg^B` z{`6(B^bf%C=oM4BtB5Fqc?)R zfb`}^@Bikr_s#!F$ExFgaD(u{Z=CmkUB6wFMg-CPhd;j`uX!97|K*8WqQV<2T|b3G z^ri|3c_$n58U46zZ*zY+k$Zps z{4Ij;t&a`1uQC4aD&g}V-SwxtXvqG*kKT&&4gc`*_ia@6KZZ_C-*gS-fbGBk{{Bz= z5QZ1;{NuAKnJ?}6#9zMlp1Y5awsl=|qj1mHhpxM@E@`9&yd!YwP4C+Jv%5cd$xF!k z(tYn(RWDIU$d_mQqMQT|=<;aw;>IuS*V53u@~cmLO4xq=W&ilKli?uq5AQtx8`nI1 z^$vo&A*Bj!E!)w-kDv6h4-`NBr!QQ5VnPrOp~y!GOTY5y#|g=m|MWGO$BbfZcm4f6 ze+HKEUq1KWuS^7l;152x?t`EGN8aJD|VItw<=B!U%A$;jyr1T7mzHr6*jRWz{ ztBw`EbmudV?_I5MvR?Cy6=RO*c5NGo@aZdv)3cTTZ-b;qD6StdCG{ovm z?}NACfQ}%RZ7H@*NnJ!d(cF_xX^*4NgC~HEwli_3nSBmMBnw)@9;lL3*8G{BeH!*L zHg;^;+xxeshH=1jVloC8$wts*b^Sv{wUjp zL9x8yi(+xVIsOAd0qeHRL9b3*jBd~dKW&cw(9AtU!KUdxT1w9~Qec%B+hiU7zLj~@ zS>&^(2|jEHJK%M+z7JVOMu~2;j5Hi~LmPELP!?ZB2ytamlh^%;livfKQM)!`kNrUG zd7m6vZyfweVB?pe&S=j+hNkI7%A}T%EGoU%-3!qK002M$Nkl1^d+1f2>d5 z?!aAkb;{AYl?{Jp?)z(a|G}oD()R%Y1`~6?RQhhPio1-7+o0C~e@WV^j~m0^)F*F2 z1Zs2>ev1Mfmscll*Lpu-PW?=RL!anorS*8@(7#yIcSErXw_Ayw1n-rymNF*pw5RU@ zZpOYr8rvG!_?NZ)e*^iH)c#J`fJ4U-F4l$ee*M5#h$Df|A`wAr2IbDnrPNuFmm9-h z6DlK66(t@{>y(H7kc@R8l&wzEZ4wcW0c`eWssB2A{4NB-7Q(CL=&`wA*Zaobcywx* zHmQNu5&L4DzdrR(6;YZos+%M2)3y9-)wxH~uYHB|8W}f(8C)}4#xtM1@Qf>a&)Zpk z{fWX$n79f}T^dVQ%Yz&PfTL$S*7f^B;$gHxu97sws!nL}9;KsO>xzgW80k#cCJR=% zRg16EdH?_|!-NozYSGEsL_~?g(c|vwYw+v?WGeH5#IaJVBpYY{7_(LX(8o*zJL~E_ zyQ-IU*3aY0IJGDx(m@;J+wh}6J}kHN2UhoJgK7Qn-s&#H(fw-;DiRA@f1dr{E-YQA ziM0qQ@SUiEDzLLwBq%`!gJ3A6R{RB(IIxw>e8C0>nXXtF6H3n@f|z7-0Y$X&9ukfC z#>Fl-%VH!`b98AFJ-z`~#88Xeo>Ybc5=L(o5ien9fYO1;bR6Eh5k44d0wc-Bl6`z|Vt7rQ>5^6x z0P*T1*QJ%jJ=lP|)DSqksghxqi>46NA|bZ1!(iRp#j(_@137hm;ekwi)6631W zp@?0Q0PFr4!`hcCre)|n2Z%%D2ggS^*Z{Kb)XQ85{&m}+xt>iedyP}VBgHhc1vA)! zc~XC-*g$xA8K74cNZ7LP6%$(exAeg1VH~_tHa8oP)dF~Hp{0%V_b@I*u}4w^7aMYZ zxo|L%x8uKj|38g(UM5Wc^$&-?^~y~j-b#E|{QyDDXhN}R!(W4`DlN?FxekwCg6DVN zm$^9E=m5dHO%U;>nJE~dmJo&!{>c7F{c7c}E-2mg(5>V+=HgWiG)+1QJnV)w5PINd zRj(RSD5S!i$je+N;S%FfwGhlj&S!>MHL!afB(xlAW#r418pVPwV1quWJoDX$e*W_K zm;e5m8*cgH*RJd0qXgnB2CV*RNQBJ6-~Z^7$G>a!%)<|T@rPsI+Viy!ZzOg%{rLUe zXWzN?#%uoS`eQFS%XJFs&Th8@jehy%O{|+<5j_yB7V3anT0Y#`?ro)K)dxd`b$CAb zd?SmGl8e@NQ-F|OF{PSrq}Q+NT@UrAI)1_L<(npHrJS32{mxjZ20E}B6J0C)Vaj2p zMVyt8GVn1c)Mby~4$g@l3jX}8RCfi;crk*T0cJ?wYI1N$?t8x!KiSH@=%gQ{NOxqC ze5KTOq6MefxfdaOpv9L_3wj`n0L{w4jo4l!N8iNJ(lh$o{9z>}1mM+R<{}5h(2&x8 ziP(O=lsH{f!sfw$z(%K28N-IS1$if2>LBI{YZSNPDBGolL=39E*TVG-A|~T?u(To@ zR7?f*Q9T(U$j|gT4cZ8-f-sd<$!75lL?T33L!_E)8I91{$9Hb9M2N!Vc3DX|g_oSth#l@x;X*R| zq@x$1yGa|+YO7P7R-b$b(_ej=6*Z#q5I66jsYne1twItiquyiD6a~rwfpw7WN{CEV|%- zF1iI;n|2;T#|!P^VOYk1-?i)!r6Gi+xldPn&a5Db%jCr<8U>G+rsaqRHx( z@TMNEr|MMlc7aqoaOcU2yWSusCTk5%c!!&XM(c!d==zmQtp`T*6DVPZiA>(k73<&GmK&9QDZKEZn1Tp}jq%{6ZXcKA`|1*2Zzy>G z>ZNd=1}2OXVe2D>(%oPB^-Sk+U;V{}XLPG|Ap9=w1uNn>7b0W@Fg_0i@W@g{ma)Rg z1Mm`l;04Gf?76sTIZV?kUiIZlfdn%jFDw1of4<{$|1*EXmp}NGPptv-&PPd7;4aA> z5_4wyvHM@V^UDw4A*}xEf4bquvlH~F3PNOH=-RWpGk5>s+tm|3eZD8k^;7G$zUY?u zVSvfIq=avd^6K81C;Yv3b66Fm`Jcb4iR*9}MyX(Iti5H^BsB^VgEL6BRlvG0qeG3*8|easqljv__dqj-1NRY^+*Qs)V+ z#|x!lbMj6w5O9A86*r~hGBI%?a)iQus1~yRxPwMtP7olqUyKkP#{Rz+t%?IbEJxAk z5kSBhixxZ@iY>=Tt;b^f7#7*^&nNf1&z^qN&O8GLKyv?w;Pb^9znz)xLOj9Nz2?tM z)7IeMy9@Tk*k*-*X&IVnN7a4&soK3W4=C`&F@DemvjQ??qKR+I~b-U^VQs_J`tB8dQ5f)x;JZ^ z3~a-jGf$VF>y(p&p@Cz<+eY=nyNhomwZ!Qyr)G@&aBbgVeUd%}X#!&wFEbMxt^P(S zzV<*DRiCg9!vK73V8ijzGY?i@8>t<@YVxL=V^q?|F`Ky1XN1ply(X0M_Us&F&q5$1 zM?+#fDz|j1Yx>14h(H6juV|(5SG7y0+v zZUpO$EBg192R63?`=)HJGX-Ud#^IMW()&$xN>ch~GMF>>3%dcjFopLX z^cLa%Mw16`5Y$#{9A2la$7xKHw$;+D|g^dKsrXcqId%482OqcM%6Wc2Avd+Ij>j>o%KVAy2cBXy` zv0qcF>79x(4-N+UuQMip=9G6Y)dF<~(3Dr#h0(<^fKC;;kZyOc4rlg1pP`5_KHEU9|}J-VQez*VOx92-8NRZAGQK1ViK_F!NQ zrWZaPa!wv9teD6|AY+yIw=%!6gq@}8zl;Dh&2t$IM3Gm_(ws(4By>t3V$9j|*q$B? zY>X;xMFYWLbm}Q}fSy4H&zfN;7dPuBG63lviy8u?OD%4&1JCTWno}y<*`hg{v!)8d zoZ(agVz^c9?oijXYXfn)3!0G_4FHp$EcBTEh!UcO{&_v)IlN_vwJTLS1C>Wr3c^qZ zcGkLGg1i%Z9*lZUE9;O)E8*ox2t9{j{rw%0HS!zd_QJa-tb4vuV&&{svJ&q^<4O0H zgYqBDQ{584yU#=Vh)F2RT>){8Bqqp5rdYwI1Rp4OtUO$-4VMCcCL3UCsGdoQ#tp3J zHUJjT%>ccsKteOYe>5S374sJTrT(-ZgG)>kk{a#O5G|;)=weYJZ+sDqd&xUM#4I@6 z%O&}XfV^5OHBqm_fxRloZrTeE%n!+Nc<@V$>W#R+9)Oqd10b_$zT1i)bV+)Jip{In z$8hC}E0m(hD{Um|XuU?gBII~gDB+u<9L78IgolAwq)S$X>iU}IrIf?oNn*KHDa-_u z3nL0H;2Ke*TFPbi-xXHjONH<*e@GCgK#fWp{1lw6Sfk$-$}oSy^X1+0<*P1V0y!eO zAjjXK^}JsS^;(&oHo~=)_EQKA>ZAeRgivR6#t;JT1sc#rL=r2j1cp8XM=JL8FYwwp zQZJSx1+RD*?LzpIQrgaxyDk%3Hj`86%v12^2d6-JdI=5T|ziVeb&l6D|KCrZEgqd1EFFCxnq1AqBvr6pM;>n zRZ`*%ial691c%uoq`#pJa>uzMloK>EyQ66UgLh+2N}fZm2a9{*7*f(_Fi*rlw~*b5 zK;u8QlZSj>ALA&D{J zV;$!AR;K1uyOiEOZ4KOg7n}l+dTqIVVI6Jsi=l5&!^rR;d86!-lB`7<8q8RPmWC~M z%`TShOx{Z8tjUr+r#oc@z60dWl(ssht&PcDs)$Iz=r>#>n3SL=jbkM`fXUw$jPZ4` zSh447b}1~yJ2VKb!!;*o2{rVC+Fw|OqhLsUw6SHMdPI2yf}{THUU?<{e7ZC2nm6Rt z;xJTJ$45B~s8PLM2OvDzC}M50%SImS3bp2DHE?@59E20hARD!PnOIug201QjAAV-> z+37eiT>|eoi|yLPFEv z8i^;tXI-t3Kk(CNu#6R*pnS9tI6H_5C095KM0)V>=Zt*YMtlyoi}ohiG{(}RA*{Wo z9Nj4Q{hkc{u;Q!s^!+wsMq4@X5O~>QuUSl-rgne8n7YfR_=HTVStp5piIb_yeIFD8 zUDn}m3GUu>vkv%cQ9bk&%QX!EJO|OA90U6Wdk8soHuf&<@_q!chI*WhfOXgph4c}S z!Cs~Jz2?-vs(shnM#dTYu2ai!GxddcdSPQLT!{{BS)9zTAwOfgmPSyDSMvge-_f+-RE+Sz9@m{QADL54u_Wo$hw zvEvY_g>{Q=2I+UglBMf1t2zPy?cn5`K!-Wxq(Cvhfj8dP9;EO2;K+e+|_LY?0$3fX_&~Ab};t_ILRpX;xSj zx#L2oJfiEfKd}~ajkc6X41RUpRqyXPIij_^l4o0)zDJP;%(Bg5uC-UpNTs#G-qnE~ z>@OpzG^XabKI58JQqkLXOf@zkLYr(!aYi6-eJ!eAX zrmKP$Q(%{%9?#2_lVk zkP^_=(CtFeo&~emD)+Z(8vqOE{uc2%v^e@Z!iiu*fdON^`H#vqvXP-#;~O8Cw^nUC zXA85Am=oc*S{&5m0T|HOh*D0zRxq{s&8NlNSCQ^DKiJqda1u;2zv22}zB1m+M-+Ss!Gh@p|FHU*3TRS#GI|VM+di%Dz(8 zxdnwwFE~y=ZB07K#tC(sBJ|+>NR~FltMmM(kWG<$c$!u@%2I#RZk75dy=k<5YCR+v z3NOtYZF)&{eRGt8BcSXG=BAA}1MK`E>bd`Qr`%<=Dt73eb3oo3KYsw_s~yT${FH?{~1#6XYK_dcop zTsU5)NW{6FknJ%qU5pzAI~ZN741LO+xzCw7Ipnub z&zNJkh{il;^%mY{UssQqRAO@XyUZzQ#lb#wqk>Pn_bbyRV!1Sn5M5=-S4?@jls<3R3gUuss2S-<9Ggnk1 zc5$!Pb(xud*e<-mXj@d9t-Z#q5FS(zM<@M&+I^Xj-EEs`c-~Qxr$P?_wkJy4Nk;l1 zrd3I|4wFNw95$4Qmb!@TO200G7etKgGNzm&LK4|_3b{2b?4cPLXqQ_yShK$ZJ10~p zY<)^jog;@gS%sHL%BZx+u<;M}Ns$3~f`kzacCn>)xblYe&moc}nPprG#X~|ZP3n)e zDFMbtN)$*01R*TFhB0^SiX2(v=mq#Hg6#!~QiN>6qF*ZQoKz~_NaaBYA1NCf>neC38_v}^DY7PU$;?@EKY+521+?3 zRpk`c38lSUIE%8YIXeRmvOlo4jbxt?0oGuV;~^vryuYk{Bo~aG50E#?fZbe5GejfDrIm|} z#)vDV?`2$ocdRX0sh;$dIze5a6aQluw1!iUD33sJ)PLP8 zuf(7KyDn>FeW8=TQ|xBp&0xUwqvgzE=bGM4QV&FrlGFyqku+quz@A2HK~;CK7z(d| zHQ-%w5IWbhe6xq$fkp|X=+^j;W!fZc?5{!5a*&KVwCu4(aWHe*Lun2D^vIB|QB3!H)N>{bD9T(Y*L)pKFn z1b?Ihi)>8@B<0S_WNbddg;<#}UbG_9VvHb9F?s0sZM^&8%^N}p~eGtC=$SS~nE*HTqyd(i<6~iG$R!gbvYUd>oF=Bm(T{di@ZE&v8)HHL9 z7_>-@vSEQ&!UPl2K<( zspXO2#b_1a;My*{F2|3-y;E9G)zc4(wNYkewU|60qRl>i8n#MKX&)K3Mux21Q}E!R zwqIx!prdIbR<%C!pj(r;Kh&|r(qS<&s3gz8&4u@GrSl>SN{V3eaMQ69pFD>gyhC3? z3WCG4)4u{gM`LKrIptBvLFMFGuy=9tJB83{G-OZz%$|Fa9NO4L5TtZnO1sr&8LuMr z9dTty;S&B~@R?=i;muKir|}k;xttC~MrZzM8~g03GsNg>3(h#L0%!!Y2+v1i>Rg1G z5o=>)os&GPW)|)$6o&1PJA96i47L5m>PvU#N53@s#I+q;_E*xo=HN6=_03Z!U1DW(4GK9Oj67b~a%u%DSGJ2OwW~)Ps@R2+1IsF4SkMG@lI8Gz zxvhJ2Fp?N2gz-_kTJ z{vn}S$U&BuO9{$YeAKhp-K!TeznmNUiFzH5)5Xj(oA$y3^FwkR9{kdxdL!5^5U zy1u4)Ddm7`MC-a?=!JNqwbMTt8(bp+i9)%On|u9^Sb$>0EqGX5s<1Js%l+5e5XFtc zzsv!`PG8-A%7~z44=l07Vv?}Kf$X#6Vzv9dFgLMgABRb@T^<%8`|%i7iMd6Dcw^N^ z;H%FX{TB8j!7ve91wE~$f`w#^I}SvY3_u?>(qs5`J!3YX207U1>RC$^uX zbzC9EPe9ON3IsRz6t+!;;z2>5Bdc4CtVayTBZASa!M_YdlE&B%?5UrMkUW8*Y}%sN z^br$qS=V+3LRVv7e(}h&x}s>viF1_1>BjKa1%n(5H|wFr^codzsdL0O34mOBuUAuN zn05iny*>#~`M zpfx#|=}TbmW_}@cT`Fc@b83ghmg8(KD&-G~$+05HnSqf<=oR=@&B3Q^#N;jiJarkGPc7H132`h3JuZM|c`aohw2g19idj z!bwo_EU`T9)Zo*{vTLJKpjYPBIUrRI>#6g9oY{8>-#(Z>)N?T&XuV<889Phkcjkvb znmi_F8xK@r%`Icc*oA=z-7zbf?B+F{C&jk)1v_(kX0I`t*5{K-^q9~_1mfFYJ&fs# z;E%uwtlmM-H!kQ*&x2dUGLc@&HBv>l6t@{7Qy3lBX3W`&Q|MP$O_^}elkQNGZCVN; zXGV;}c`MhVwt#V5qpfREV#q8y@XXEjB#apb!=66mk?KyTg`& zohzBSpd1+pY>*u#Z_Qz`z*jG;$R-5UqSko7s2N~d*bu|bvso!i(uuBc5VQ+Z$40qy z%UKyEX{Ev((y=Hyg_=1Fr;mASO1E>8pti`VHYh==7>#b3zOUd*MzyhN zX|3XzIh{lUVL<_Xjx+M99NtfeCM5ajqa3AF06-#>Xr-PalQ8guM6XoFU>Q8UAn1#m zAFOGDAt5dOP&TE31uq8H9B=`QY7tsqLh|vdEwF8C0inRd3bw7KRoD`79P-pdWK$!+ z;35Y3$O2CKK?gZ5fB+#QhuY+H;moTu8mK`!7->EbMhOOk&3i(FAp)JW5E7Y$pXLt@ zF?PCG&nQ@zyOaQs0BG>xKbYDkQV5ow{XA;+si3EZ&y!C|~JPw+x7lP*~m zk_>Ow5VFy`Ef5oa@rz&N;HU~9qgJer{Wz?FIV0|@ffCOF=CD&y zyWTA)Pd7(zlZtPUA4oRWJg_4s&LM)U#UFp9T+j&mr83R#6z^IueP=aU6Ljs8g zRs=`^wT?^8;hW(X8p@PjDNE2vhE7}eyM)+QYxrLz68pj0px$*~fm*#{evB3whvqYhwIFb?8PDCd?B*0rLTGJG9jJ z8v0GsRF%4Lja?na*04n8&x`1{9j#p%__#Cu0PP(w9t0N{WXtib2%P{=KnRt)1j!6tzBl3;g3v!r8d@&19<*M-q`1o@6`g{jK^+VHFT2xO<* z!iaz@AJ)eW$y65V^ci)nZz#BedXPyVXGgD8mgmpJ55Bnt@8?$ z@50ov5eOzN10^8F4zOC32@Vo+a#&v1>^z+HkXX;Bc}AUD$KK^gN=BoNP>wVD%|#IiRKf5QAQLHg}%e3c~L&` zdkoI)YP}Y(OZede9tS?aMM>8!2oD&%s8>zPg0->)8>||_2V-1C2|j%dIKzSWE5WH& zbbQ@Q0H|5D3JJNvMd zGRw?mvgm?s_Grpl%MMg9W#FL}?dpb3#9%>$RlDzzHjBnbj=1D6u|1rM3E zD)n2EY2eWe9&Gw3z=1KMVWK2E8q<;H4FjncHT&fNelRv~7K3_Ven<}F!7nXZgvA5! z5`F+=HqCci@q;c&uTZgh_4+8STycd`6nUkML>;Zys8@s>uL>n-`EU;oSd5Gk|v+;gVetw!#ilK7T2QJq|$vg98jBc58++5xZHmYTNcLa`}3Nn2`P0qDaE%Mqu;@m zT^&`U#|S3e9)%ehw8S;7+sMSHMD9hk`wGJx!A>#em>gMWi7LtYmYExve2y`X_%TY? z)z;*X)xHl{kqu7n8KL_!Cpv_08wY`~E3l&FGn2*^s4#zE&TNj|stkMt5=3kC$7;{J z&Eg>m!HwsC6-u2cCQh~C0lqRUM&Kfghjk({u@XW*)tdULlQ>K6|EM#02kiaDzK_AV zrakg?=%?D{eb(%wO80vWn8?5xc;RJyOBl0{vKi}j6fdiSkbBXpPRgk>h2HC=?Bmw- zy<*$RGC~*12`7C&*>j>^s8L&ux1XqktG?+?29Wd~kN(P^b;xE{~IZ z8up^FPli03`bRK090z7Znh)$vP&u)iCwfD|;tu6K!guM{93ax;0757_-B* z0}(OW9q2t)I{C@MBiPKPd-~Qo&T2|{Eo2Z z_#?^JO^Cd}JAs`rgknj66}GCF2uKsrq_&9M)~;>tq(~>_vN>C{;R%uqw6Rr%rFg{e zawemOLy=%hu3Xg1Wz^CnrJT!xTZ*Szt9q@F$*J*ZNR7-FvtY2I?Fq23l}siO3`7&L zVyRrpm9#`umP6TGNwlLK?SrB*RLb;)!cHU*sTA{I-~!1w7%8At6gi@`R;tx}Hs9LX z5>$ivd=~4snrek4IX|BXhJt})OQ}qKY)!=^P0MAocs(UjtwvSP&gWWU5&RX4`C6rx zL?0z-Hl0o+;#x~2pPL7t-PxT2S3aB0ghPRZ)>8O-Z&VDkTg|zAf3>(h|yM<}gqla28<#?OZq#MstOH zzL+niIun6_ItM4DqRVzNYx91dmY zX2BnJb|y^2oK4S1qEQv&na`Jsg;YnYqgChUh67qD7RNgfUxVZW3v#8UGm4fhCShIj zs%i%NcHZyi2=FCoa;)5@=xxyG_TB6STqEG{{aG#<8rQmKuQKvkh-qR~<+jtL&Wp|Q zpTIdEK4%#F;#*ml9U9^{$<_qBanY?(&y_ZU7iXR|^Un*_Ic8!4=CkS4M58sO<4VUi z&Gh}mAo}R07c5;Hj@+X4eFP32?d)@2TrzUhK)TX8y!Z&=b#TQex2zW^-Z2aS_EB`1 z+AMVVh(iKT$pogvEHc)1X+NkT+ETA7t!Ik;zb7K7#`t$&1j9A|mcswWIr#Dp^dQ`e zQ-Y)8z@jlFk9&zT5hT#u_xFNXUBRUe-4V52gjVR$9Ow~t+grCl%qiqvrJ$hY83-0^ zCo9PUwkUSI}Q8{e;qUu?}xI z#Y1w><+d0^8{TA*5dOo=*>ewLRw(`Nv&Md6j($_@|D@di5tw6J7>D_X;Nn{W8#?@T zXZ}TL&FONmpSHXg=!TNy$c7cp1Q>jFsP2-XD`Ar$n}`4-ULo+Wk~v=jCnZcc{rn3s3DUW49W8<4^bEJM-qQ@f_+x z?e)s*U;|Hzo{W&+yDP7j^unw$)1r*DtL;5XHw?0>R_Q?PjVW`gN-QG|>cd-pz)g4B z7=xFb0d?b+$f+aMH^z*8SQOquUir<@j4tC@WA_y{G>|1#s&Za3XAu+|vPMmeh2=z0 zYU@$qq)8&K(VQyU(+D1uHeV^)V{Pi19`zknX=c`fGMH6kKTDBIZt$^^6 zecj=Av<5ojNz;y7s;1%#y;ae{0I4eM=j~J&q$^;sVsJO<2$}}HUZE{uLe8gX*p4@? zC~6@brWBPC-&F``s--z?K|@yYPY$<3LTzg*Dd|RGb1#WVN8(mn#LyHK;%X9> zimeH8jf7-qH^iEI%2n%9GLadLH)R8j5!lEsFiUzw7 zrvO4dS&dt5|o_~1_4(6FnDVAzyAm*1Sb+!}Q0MJSpA3_VxJJn{`aR;{sW76G;kADeq zOr)q83F3tgVh{uqcfrAU+6*mfqi2b@*#fjd4UDfUtu@VRwFI$xF&LE?2ck-a=EnLe^zqbp1S4RLlv*yg09+x+^C%YHPvKm|?-eGt*W8WcP zvSS*)?l>2P_Zzl}D^l!ux%Y$S%mY^LSv)6X|3YuRqd73)M4{yvrQ-rwO_XjM>?LUgqh zUZ=nzvl24(DYLj&EDhVnjE$fjU>3=dFTU2W^mFAMpl%?qH{$&QtSTnXl6tSTi=(E} zf=yCvyWqk0AbzU^M4{1jBD^H(GqkYl*B$Be1_)t<}5=w|pflGl8OzDA%cM8xyI1sIU;WPW7^ zyVRcd>SMRUZ>7|InKk|+bM}{7>Qov28jE{m`F)at(Dc&|y^Q$*buGn)`r!N{5b&wp zR~z_F7{5gt{C&0m!^Y_MZ5?8udsIjwlV>?|PvW~mOr2>T+KY)_$Kd|r^=5$~&OB#< zSxlWP^}gRpKWdHtP;S3a8Mwh3zXRLc=G0ws_q9UzyM+Uf(yEH3m7&2l)1gXw5khu} zrI=^aGgT3+iQ06oSRGczHU$Sy4IejUr=KhD>Qg$lx12I>WnQlC*{W?gFM9eat^0|> zP8fS5cyu$gZ!!-Q!{hg!>K;6{Cq#~i?0t86cLlzz%^D(BPbgz;VjBdFJ!*f4(w&f6 zNA;1MU4V#`eY3qa%nxCqF(F;HtTnIOuk=_01A&ckrEOpBr5Y^RNd&U^?!3tkzu9W6 zt9XO5U#vj_LeXGDwNw#vC1(;!8k!XhNG(Az5mYV%1_xqWD^fh(5)H(me~Ex-_&nr?5(>I0&|3GDB?rj{jvs2>l&fhi zgvKLnCw2tuIC15n)qH3n&f}1{ZEF3w1TW_i6OvtGfELUrKLUXUF&U#&VV1f?1{3Tz&uos?R|~8mhXm87EJ2H9DA6`RD>~y2A=fvQ zbye&Hnn7syPEG9*lwwCayih^4G%qW`8nF3{kruwzM^mL&;+ z^$>34;Md@?b^6tn)Z1b?QK@(!fSuh~7=6>ZM%52Bw&|#qXgw@Gfu=g&zWw?;0ubsw$`b+hOdr{5Y{kNkP)@{-aS{@4#| zgOIYDiuSl5(0lBW<1gixyp$6MOfVS+yM_<3W5UP5@_pJ&V^0%IZOyL2x8kfdGi%O4 z3f`^utqX5X%58}0Qno8_2FdMoSc`-hXx-*mnsSIv8U;QQZkh;k56Yq5&?R+=gzb94 z&eohVf>w8E14So;2OA~4U%c9)hU#eD<_Q@igkfbD^}!*6cw>XaFABLCui`dblKBSkh# zeb-8<(;Qexq#uB-12pqsyv!EX1w=GOLYu-;P=PQh3w^Q?z_3Y)g%t+2aGYyPfx*Dq zKQb!^=`+3k0+_hM8p9!(*_4ynX=Q#*0ZvMXVC4$WbXdn(-@yda__F4GTEAg7m_b|Ze?J^+!;AyN%d69~=hUR=Hnrz! zbL5-EYSU|GC7Qvs$;orzV%jOZb|kJ5jhJ%#C882CrhdY<{GfAg!q5jQo>Hg_d#}r} zZi{<|QNZmEbSY$s0?uJn33Qutk9r+h3}2t54)pr;47?p#h%S>j(JH(lTc(ma$C&=P zLq4>daE(Aktyxv<1tWGJMVKrPE1j2Hhyz|eBqz@h#3%)jfUocD&ZQ$jdb4;jS0;d8 zfxR>Id}kk%liQ_mA10?`Op98V+;%ej_#n;=f?`8*$&f6#&+LLdLsrSDjSILhvCS}X zhC4~P=0V6rxB{}XFBsMRKdEUA8|tN_&@2beq(g=3>cIr!bfT*WraW)Kdm?y_>QJDk zU+n_-HfBu4l}L})v!}W@XXcL!Z^f?nj4=mUCK->`hnLXTpJC2jc~8FEpL!|3oD5Lo z?1kaAiX1j<^cXTC>0Z`p@DB!M0|YND)E?u6ZJIXF^>Ukvb8|6AmNsTv+)0Vdz-gcI|f6?YP?| zWLgIHR}g@EC>m+yh~7TGJp#*)Kz(k}G?uV6PY*rzSX32i08t5kn$?)9Bs8U4k^94e zHHxz)osJdqiEwC*u15<+d{RT8V?io`*A+kb^jz2?FT=SG)F@_;AYCpkY5=j62jC_A z0LW~b&tX<50>H|pO#qrbnto!A*r=acuXVmkd3gLVoCXd_`999T%k;ze3E%+Bag9QH z+Ek3yeVywAP}uhFhDU|ph8hh6S-G5>fBmj-0LrjnU!b@zNCO`hmAEzfJ;-2~!AhO! z@?pWk%C4}f4UG_6LVVtyYrroG)hU?$l9QCmG&zQ&p(Tss1yz^50AQ6AX*w@-w3MVJ zq5KC!T?r-#ZKorCjM8_l5bO{+J5`%;a=V=DGjO%&6yE@6fIww<(O~|f+nD$M&bwo_ zY`eSwP$o7^h3?A(?N^u+cbVB=W9Jc(n&Hnb$r|s z?Aii>HJ>-K&pNY@!0`LX;|AGR@@%`XPavJV`p(KS6gXH1`mb|l9%HO3ZKJ?eNrD-* ztU1*w7%Dl|Jevc{)c3L>#=|5*C%|tZe4h|-0&!>dS+KkeWQAdZiAmm3VoJ+42c8Zi zn-I+p;r^WYXYJYq8;9lUf}hIaPsSHT=0!<~i?Q{j*eY0ou1oFeh!`BOW_K**8r^A! zEpaa^BVrwyzQ49uG8B3zIVV^^P>Y$XGpH^DXXdj|$FV`pvK+!i?w z6Ls2{VVod+FX4d#TWMI;f}NW+XEWxkBFd|@p`qZqRw;%}zquKBkIS@yU|Hi<*ccD?abp4L@7fbF-CtR z)W%m3q%}jfVjlM2qN|m}na0@d*!uL|2ylO+_IyAHuhI{H6I-PuxjEw4k*x7-*cy|$ z&&pgQwqs+P)x@dB=&caH5vPFzqXv;-sLwd`&#+T=B`hn_&I)PgQV8{`Jy+Pd-Eyd# zcK?g}>?-WpSK7oUZWFK3+O*PnzF9h~LrU zrN+c*KxNN84!=3*0s_@IvrjN{s0BlY3wr-z3gZ=S%)(+CakK>`Xih&UcfQjWR4e;} zXcd+Ab8Ry(hF}mgA|SN%GEz?(F!m3UY^Qq2F?Bh4Dx~Aq?60Npnrh`V$oMGIeGb7^BPB4~qwe(+)ip>#rMYe)=Dn^Oogy#;=GL}|vD z1$#p7L+jLWJVZqO`9}^NY(YYrU-DA#l9kgPz`$ml4E!%_3vUDHls?0e10Lc~;J}DN z4-z}+S!-_In1+ALHYK?(xT!L9j>a$5 zgeT8h(aK??yhH78mk0888ZoSiQKmZeDlE+|-CRn$t#cU4M<&b1nZeQ}UWx?j0=Y^4 z?cl@jK`=@Q*sVdo{Ezb73;v5UUDE|EF3`y~;0)Zbi*Nv0v?hx72rLg2DVk6>C*+M0 zxjQU%29=a7s_<4}BBV7rt;9s|nxtlN96{Cy2vH1)eJ$!*wXQqJ>b-q>djx*t5y152 z2b+fMfrPOU9U8=uvJ`?OGN83Z!rdXLKgm6{N{6BMgo0bDrH+|dscM94I#wxIA7O37 z_a4>-van%GJsu2x&?CZ*`mcMr^v4765`GwDHqGZSD-;1><S#Thy&_Hnzr>kV{QBW#`eAsXzlg@2HA>a-ANOKz#?j2RJslgklo9uuS6g)UDP6G} z7*geAo9bAI1Zu%b6nbO&#LvN#fn{ut01FwMlfkb|+dEV+i%QHX?Kegr6RU?sc(egq zKyp5Bw{aO9i-__rK{aedW*>FrsHL<(c8L8)3jGyXuXSEv41W`nMdt{o- z0UW50 zq;?1X3~V8&bfiQTI-NTBV|zxo;ZPG2Weg!xN8p3W@GR4DI5;%s3fV}c5K6thL%qx( zy`BA5i~wdfo^WCznSDA?w#EmrTMbifDb$;kVW3?pma_pF!QGsxnFE$J-_aS6?xhr@yU2JUb4U^%L8?e1FRH>+wo7Cx?#zXGux zWjb)Y17%v9_pL@cWG&Iz-{KtIWwQY-0E= zUsAUzElV;{4YQE;0j+s>x}i^WVoE}4@6~4dF(>nDVi~CgkE3-PDi$|qtoi=<)Do0O z%%HCy04e<+kz>ag!`~wvL25T7rcSdae<@jTd4T;~x1l4VI}!jao-L_m6L=a{XEAs~dcJM2^-J%tNOrulgUnjy-v(vPU{tu2KiNJgM-33oGo zf-w7-AiK7K3tICoaNiLYdF*y|;FDr_$ja_k2R>}>`ybZ)PPy;>VrUhtRS>z>17DQD zyaMBB7hf|+Zqxd%h3bx-ehiEwX_X;vp^{YlueIAw65+_5zEzgR1GFFn;#JA6LN!yU zWu?^lT55YKyGt%W;>#To@TXuA3BTDTD4@s5kxD{!*chKT=f~8^lbzz)zz}>f&(tOc zwJv<_C&bo^W9Pn7*|Q%)dYK-NH_4!R)G;ZcA(;F00}x_vjckL&YgYw|vyJ7P!BUJt zB(QFjt>T1Go~=&BYHcYk)vsU!ef^9%b*TDA)Sr~0A)CNu#Z&>Ok^JJoZ*dDa^QxB2A`PfMYjdlVAUbpp&@_!czXo? z%}0QiR`%k?Syk~oV&aK#45X<+%Zi6XDa=)v2)4z#bfXfGv}&!Go;j=rDvDYQg=^su zys+nFrKY;(HBhAHj|X|4e=EL)|IJ6>cdG&1EgSyxro@PROjpO6U|_}9F6&!khnn$Z zV!4!0zkYj6%ZTw)q^|R=;qS1mK;P;Po`V!_1Tol;;L&o=WrEga)VVX;ej?lh0F4;Y{VPuN^%_e)>$NXy>uK^*V zt62|~Nyk+CKOzN^*6=qeObZpcoM{8Ke(rUDaK)Wc?Sq>R@XUR$UH#Hb+bTjn@caws zjhI$nY`y{SPhl?zL3CDqNRDkV58rz5`Stfaclz$}wN6)eZF2qIu^qipIJph)d+mxb zC)*W46q#m+zWMRz&(x!b1I4o*-`n5QIRf51J9_DplkwWrDX;h_8Mdtccuwv8fHC(7 zbTQqHZ@Vn_y-x}bnuq=gA~#7GdgbNwUfO@$?um7lnr)91&EjcK?mB*Ch6Zi_)L<+% zF?ZmSr}mw&XL#F$)ZQN5uNFg3zj$t?<#1AK+5Pe*2XyLhcJ#t04{aVpm9aJ2>ds_* zRp!O{pFVu?QwN7SR_%_cJNB8z7Hw^`=`xr5@P&w}5CoX>Il@rH{?aAbUu#8?1 zl5s+^R&CwqOkVoLSa(n7m>j&~;Rn-Zt07G&PwrDDCW43d#ztn__zj&JzVw*`>tY>z z4h+2f@_EnhKkm@{sz78cuKoY*eFuD8$8q=T_pTpsz~Syt2?Fd*qF6-rF4>l3OL9~! zCvLKx#4WLtFR>lh&(7yx6vwihSeBj0HL`3|k>w)F>cyfYN^By*4uB{J91b|(`n~@B z=e_e3CB?{~&B9ORtULfbBwid$91@{O<^(IV zgR8&PgeREvW2~o{53VtDuP}wflP1TH&Oh}Vfb4dNlZSb$)Q!WhO6bgAD0**x+&;&9 zVmhY4;J$0+HVi9KkDJ*SkjR1JH1{%mpX-@!HG$R9Vt1#9mHX5|ICqH%buLbhi;;lj z8&k(ijDi~~&QR-&=2LK-k=VwZ5U7mxlchMx?6;td-r^J^E;4JTw$!_lXUq|taU_KB z#=)zC9(71sb3y{r%d~Aho;FfBBa4Hd?XHFOQWOWA%0?byDDpX(EBOfv3REb)bAC;I zS6(?^PNB40ZDw$`G%B{@dUYP|` z5s63p&18HfgHsX#w_n)bl+;P)JUN*sBd5~YF9{1Oo&MN*R2o=u@D^^Y$4VAXa55gg z1)^}y=*{R5AK{lg$H8+vAMp$A_`oGAuGC-$hWr^~MeUpfu*;vq0V|rYcYdvVu`soj zQ9+{mRpr1NzyYTvQbD*@1DynfMoiq2=yth$IL-?rp|V^ryBayJLE_tZc78hLA0PAj z{kUG^9ZMHst^@`tVLlKB+o-ctg580ppC_ZIzh@?xj-7m(f-@O$#P^BcBI(fyCJ{S2 z{s^eYWd7PvXak?wL!zdhtVgS%-`x;x2umLPa_|S6JzZ@Rb z40FsFc@noza5Vvzs>k{-zvJ#Tza3)U`*&MAgNF}1`LP>+?6nJR`^u)q-+lS+x}!0u zf8sl9?#fQZCLaIZbF*!t5JNzo3Da~nYuUQB`u;l@9d|XHecP$*(+{vP;q#QHv<`=! zJmb^bw7dV~xwFR3{ouD3o_*`k`sV%9sVh&I&PtY4%eQ_A*L3yXA3gQM8$a>TkS8CH1~;rJL9ga@>{PTItB#uvW&Zx?5mef-;U>;CS+3OOHGZhT1Vzy2T2#WhrhiQn}| zw+6njy&X($Kd$W9irz_DkNCzWpDni(_87@caAYZ>6CJg<;cwLQm(6 ziBTh2$AzO(Y?15C`L3l&eITKB7mPfmLqLu>@puM593`k#8c};-h^JXzxWscokFs@C zAHW8fv(B86`c3gjoTOnGGB<9i8zY95akD9(*w!Gf%bSNMjQvGDDX?yVl||Moasd|? z^7He9!V*Z0WoyjVL5`U42uioGNykIrOsk+Oilw@y2m3b#H>ybfDRTgQ9@n!$A#DA) zJzkP9Og|lGW7%+Rz%W$_=1}yKR!)={T`R$?y6W~Rne<_nFNT5;JaL2xJ;nJ@Q@1~V z${aiGw1H&?VKPmFzxY?XeN2toxp?O%FDXM--TcUf@7Z=<=NYej{HkAGc+Ea$+ro$UtP&HgaDVf` zbO8P3<~pS|_lOL7;G$auz~hyU`s5$>W?`@4UA>qxr<1u8XD zSBz;F_2J#`zy0Cp=s53f9sI;i-|Mukq3w9+W{8XkU_$G%B=b z$qK0>+mBs7WB-2{9g>DemvKv+%gyj)r7NNbzyF=`8MPcQwy8Gd^O+$E5im6&i2g#Jhmk(m*PS1C{9`6bk zl~o(>{m@Iv`j@)`U0J`t6$It{Z`@PE#QHzE;rC4OijVx$nvL7|#hvQrZ8aPBMw#Nm zJAT~!n{C((=63E5rt`U<{LH&^+Se@@8`o^?iOEe*f4rU9c<1%+-6*$TwQZ$*Ocq0U=tuAU^aJ7M)q4Ft;k}=| zK9LIm#>d|BK&_>jEvv%XE+)_T#F~5m{fnP^WCK$J0ZL0Aiay@OH@B2FKi_ua=RSnX ztL4PI-@DO!%dPuX5Em3dg8nRj_^D4^{?)%asFBHN*Gx>V+_uscyZ>L;{nI^W+u}6a z<-Py8#+pl&l_}mcytGLEo|E$_Jl) z_r~Wh0liLe;e5c9Y{O_P3e6wChp6b@*;2M*JGRM8w)x}#{;A&#UdZPTt3^~jKRzC1 zT!fecyV4Gn(g5p@(Vi@?qulNXFZ$HI@9ox8Fb~g60{O(hf8xQt3+Q636I?a0>PL@i z-oi%ND0BNAUAKR4?W2hZnn6$3d?qmZnd`HoPtWfmLn4$gUzGC&=N1mmWl@Zvym01~ z6PVVX*cGv~0_X3rq$Y9>PUX(}!6_FyvVg|V>Sb%_7g#nit_DL(!w3#s8VZfqF>({# zs)1N}d$V9!@ff*{`u^Wr})!KXqC@{j)8p7SbnL+=6=4BT~P^@GFOmV!B4D=ux2&v$VRWHf-$uyRu@n1LLa(DtR( z?PKbT8GR3SvE5uOEUk-5S43Rr*SMC{g_?XmEY_wN`$x}(DuPuG(8$iTfRk4a0o;^S_9Pk}DYT zh37YX<+0{X`)fUnc6PiM$zJ;PMVpb}FMkHLST51FlVRTbsk^`Q?q^Bxf)`&~HPwFg zV?V!r(<{$=-Y($MG;_<1JJ&PD`)}S#Y1B0jZezmdZ@K3Kx4*3&zYS7!LOHkL(Qp0Z zV@UAC-X#{(d)>{wcC_}%%YSVhoki#Q%YOD8!?fvVHSMc~0q<;mA9mvz#xEM2d-Z?+ zRm1A{X{{T|gWYWpZ{r_-dj2Z|%;lX2aM*$g41VbYU%Tg;GLwz=mKOZ*+Y1>capNjD z24u4N1`D{vjKlluM!Vyi4$6#|*JfgJ#jj0m#e**~b=UO$%Z>kX#XLxHyeo3f`#-a5 z1>^tbLxC07JoD#m#3B-cv)+eapfd+MdzK*vVe@12zwrHqU-`|v%1-=H+d1$5@`vt& z&8&1YB{Z6v@V9)+`DJFnRbt9ZEOS}Pt>1Wj=aTiry)S(6BbVRaOyDMi zQB1%BBEv!Ce&YXqY0Gu(#^aC8zx7j}{QjXfxK(t3zIr5dG$2^J9Lq)%a zfHKI-4#TF5%+vXoAR5ZN^jK!|uF{@>81%FLZN=^T)B}q>3va5uVYO#D`Zbh=uc1K7 zib5ff4eI@`6t}mCZA;y&FaXUFCd6DE8o;%ctTEoF_UtLXw70aqVCCB7#p`^RtnhA# z2vO`<>8u7z*ANCBTQesGPMhyo`M@}la;Uqw6_z8Hxi7303nlwsJ& z*qu^eHW;nJbxyr&EjFp`m5FT%($aM%rmOF|92*~4pkX~0r{V_V7~wF#yhdnX!$FrYhv*({|90?i*1@0?X!@U4Ho=y68- z!sowvbyJ!#<~1?=UH8S2;Qk*&x+;7KPw5-}@gZ@=RnJ@>OWWWmyUT?eC)0t(eRu|K ze1|%8KU;8U(*Y%!5lCBQh((+<48d58hm>ZMAEQ!{i)4y_xYo5QB=P@+l&<@pAaDyARFc~%Nk3I02e|+GRLpQwpb7y?>iL?G<{x1j! z!`yb&mGAu6c~9+Yzt~2U4@O*B$gXbE#FaRvUi|qT8M)#7^2;u3bn%nm$aHj-*P8gwfjgfo^EV7#%Wj|pM z%=|%ZXrmB$tCiVlc{@y)><%unYS&olEgUF1VP?Dp`)PTaJ7DNVA$A>IY@gW4)tyJJ zAD%6n-l_E7%^L7}a@@v$vJzgG_l{}``qDuyxxLu6+`AMe8@HBrCzX*-Piu?ZlGC%B zv(LB5tycstZIK$E&Th_`FoH94x%jFPL!lTFhV%iU#GU0k8=_!Wai?=N?WC}f*ZzR5 zdO^>Z%v?qvar6ElR}&H9%iL#|nBtJu3)?!1mAB8XI$i$6fKj~!7V>LGOQ>c(E-hT( zUN@lbO=t&DtFLNIJaI{H_**hQOqh2~{j7q>IN?PlI{WB;%2YaWY1CFXwY=PPg_V}(2X z^vgF+=*pRmkSLhnJ^HTpMG~y-HIlSSNU^mm&2q0f`Z&X0ifvQH^}?s`{vSrY^w&T| z?mIKUeE-4q55}8b9>vBqjhfUDX!x{S1pP*YB6{H?p+wJa!s)s>W zoxYqUq0OQ&b{Ip6fgL}qpb^k8SR^k*>H<(oUf1Z^BQh#aqk`A5OiCy(~ zZN7OvbMH6KzJE)5?z}#fwY=$yFnv4p3n8^BTJ@{I- zQ_mVOddK#u)`X9X`?(IUt0|**6^&sBHCrO5nx$=fTqCgXfh;|)8}|712gAQwaFqkE z7YC-~9*B%6L*PZ9S9H2Mj{Kq@h~auzEtN$3jzo6>g2Jb{Rp(rWYt*~6l?S-{S z+G4dk4oxLfCnM31UjOm?_2SI2a3N8Rr*Iy6QGIQ@$8)TD>ew8!#7s+#;1jr`Xl8m` zi}?+EUbN=`injk(WRzK;*irGvez@jNQnoQqZ0b17^nJ5~w0&cH;(xz~lwt4rKQElW zs?2m}Zn$KV>!I6zv19-zS^Eb`bMwUgOP;_NqkZR&ul?JV?SHeW?eAZp-^d2N6ZCVO zFQWB*4cq4w3&o+!`F8&9yXm&x@BeGt7w=j^zwLY45aMhlpg<3md&3kp87f)6boWw< ziKUF;dq41xZ$13YwRe8+Y>H`@F8jy-{FlFNzV+*!pZy55XbiJht&3pmn!m7p>r(Go z%%-+l52QSjnZEcfXy2HdKm5B+KEbrv%0JcZWtPlu-4U%{u$)=exo&q|ljki=N53}B zZDe7|&2-ZZUomR$>K+jNkNhaQBR!PdcJ=LhnD>1AzK<-8WS+V9Uw?Y#)qmR!D#o@o ze+C=z?W5oN;4i(|>ycf;|09D=78Ws0WXFfVv(jW?1|(@^to@t6>R^7g5INecGe=W0Fx8S><&+pn+cki}~=~W>6Zx=mR9=rC= zDIn_(er)a5`eNW64_*GF+X|f23JgXP4 zz5j(+pV|j<3Ys7{ZTe{YNACQ|+CO_AHm~cx50NoY_{=}`t@AcBX1%55Sa*c4Jy#ul z+V0FJ>AB7Vfz?%g!G=PTW3gW!yibVV#JJmy zq2Dl}GtG&|_|TbL!&}YdLl#4WlQSxv4B{L0o@4~N8MD2(x7HuLz`y>H%rkkmc(~jT z13fKbywf#LWW{}@eR&wUgndoI>$OsV5)D)D!M*BYd8vB^Rz$m$S8zwi87<~OIqH-~ z9Y+Yq(byucaaj3`G3wL$f>IbkjCjf3kgt_+eka|!t z3vt)N#qRTa$}eTjBoDiWv_Ex{wsZpEf6!Nx<1h)2@Z~s>fu>d%@$>U)rL(+7YC_+w zn^}geW+EjerU?(13`8MR8w$!86RM%gf&VQWa5_0_>m%K=2g_On9O`JO_dt-r-8-KQ zFNmdLF`Fx;Wx;Q7r9@(%+pC4cqHYx!wglVc_WlWGGyp@ldUFTR04-yGZ`sW+Z)|9H zyXP<=9*1J=G*u=KXWq?E45gm9vEBOx-J89t$;-c<>e<33f9v<=j^#zyrZ4{aqr;oN_5+_$l#dnSW)wL4 zqgfCae(7ibih06 z$qyuirQ@`pBY;ptfJKrAxX`rRy|Q2J*;Rf8_5}gfxe$$1HisyS^9W#63L)!22SGMn zlYi(H&H-?um-7d>ntCzj=W20{W?1ir_7RFnvMFPGE}D74o(iHmqd?EL?irW5d_pKD z&JXaB!E)D#euz33<)suvAf>kd;ej@~&@=2P`e{!T^wT6R+Gyhk0{xgS%8r_>4A6qN zHbr#Sl9~q<<p7aYhsXQWeM>s z21;5wG-gzvCTZ5hm|EcDsOc8I0fH)h)o#7f|6o(wWym6uJV8Nrld_PS6r5kzY=Dcr zKzS46nXqS&=?b&c!VFD`X;dJ|$&=Hm6F;ZFIKa;bcyDtgJapI7onzz7`t$ey!`tsa zjxfgv5)pW^fRj&X==dBRXpVNNq1NT<$gd6f>E@2m*3L*xcHZEGn)NNTurOnaK6lTI zw@|i@`FyCI$pDrJHJ%`@@$`^w1PX9VIBey6;0r(Sd z4cg*fD1?K*7H;GDy#cq}f+J+bVumwaFrM1izh4x}jd8!Cjh2=E7?>@_839=yMJU>y_THH`Z+L=l^ju;oxHT3-9e+>{#fw32XgU?9g5 zpZVg~e#bRjZHZyM`wmVo!(!wNX?j*5qnF?Mxy$j!UPm00!l_hP39+P>ceDOQ#^HO7 z%*$8a`qbqR=a0?;-JHtTUt)}HW6DD&55XMS@i`)NT>Q^lEyQoWfZfFSRZtL~48jyBJfJWnhup&(>1QPf zi}1B*=DFI{>|leX;j+}sRoBdn$39zdP;Lx9Al9tW;IBw-X1E$Aw3-=z(SkvMxd+f! z98d>;D#F2ItjYpp-o&)c$xf zIm8mR=<=$S)%AkHjs=8;VPSpA8pvx0G+1ANH$hB|GMO*=<3YWONtFYCgdBj|8V4&$ za!Cv(FGiO9=sy_DGv^CfqFc>QBwQ}lR4L^9pV6V?0e(?+?s;mn|pHN~XcWFG$l3 zdhZW7J&mdSl*>I%MhF`^q#3Se73XO(CbsKi4`XbH#`rktsjZ#t18Uq{{n=*v1y0Xm z88w+6jURidh7h~jg!jCW$D#k5d^HV5@c3u%sLqDQ z(aZrGvF}h4o8D=a1|fT}yqj~knd4hwp$BQ_h!0f<`j?((3O%e;hmTb_$okq4C%EEf z2G_y?YL+U)Fav*i8<|Lt2}9p=?wc@9rt{|+kwxvXB$pE^u5YHZS0LG~*5T*WJ0L-C z=`Vd_>t({oHi&hta!ZfWV{1eqCINA-Y^oVOlhV@y%P#UPZWWtzFb8PlAn;)ycBUi+ zK=#K5N>m;pwmWT=%CuiOi3=9)L>K0}7I`@Lu#tc;ip-SL4wESy712$2!p7egoHNKt}?8c7hm9(S!rj!06yBsOtY zd?M{D6>9^&MTNY3I9cR)j|h+3u=vKp1tJ2v95e{jyYXy`jk9(_L{7y|KiETqoz>1h zBMm{D{7DZ^0d`U+JN?Cf;4nCVrE^Ej)-r+|1UuQO|Cu2*Lb$;CUMpI|8{KRXa?PwW zA_{!HKQ=X%)cJ9%&|?lg2(iQA-6@w#S6&T;5o@K+zhOn6e)tDwvDY4JXBUZ};NW7{ zFc5|k_u<-!GmM{d>BnXy4&qjC?OCqawR+)@*>?|46QXGnO0R*v7RL(>msshY@I_8d z-3C>W7(_orC}a2`RvCuObD~l(_3CA=?i{u-V3qq%oETRN_?mOz1<|sdK3Bk^6`45! zenkVFP&(RD<6P)M8XV0G3w7risVA*cAM5F0g#aUXc;9?8^)&9Qt6_)lwsDPMORFM*9uRE-v!L5u6jCb`PdjLgmShvdf)(0fe1&^p}u91lE`1MrM(# z6Y_FG8^+jy4SGt3|0c{}7Du&l`1%V8fo1YCpXkfz<7HE^8{u?uc7-}X393B^PQINS zdnUhaRI#gXLMgEwjUh@k%SAJr zgO@^c6k=k7(Ap$+!f=nmmNm10mIo4$*oIBHsQxH3eQ8XoV2r~UO;lPSac)4si4LTg z#t`kMf?1_VyX-%9snNz6m{OOAYe5*S$01x)mtSm`xtOMxl!D7`waBucsH%o42dW%+ z^&GHAA#$ZHilRV4=6Q)@Wmyh-JrO~`@sBz~tLM2UMQJeg2A+>66XimQkvx7#ATVTL z4@wZS97xXJDLm|#m0we@riUi`&CE22nEFW%$4ZTeMWKUzoWw1P*5Ue##~FdAiah0q z8503b+KeE=`XETe;~(mS9kU!)e>o#Xw83Anq(wl0@N;VTAe+e=Wyamgb$-lL(?-vK zvc+zAQMYH7SzzK|9V2+fy7P_XQ_$Ji)iF!5*TNsj9&nQ(;MxbH8v{RQ)B;2+2q&)v zCb0;|8d(vtBi$37WEal5!GAX!Sc!F$ncHhR7gi?UP9>Z1fa6jH>^O6t`D7UNL@7}z zxTYL~BNnQk>6Ccl^|6<5Dv@(V?X&sQ_{>Ol3|DD;+JsJ#`jx5b$%h#^!c26*b~hJ3 z8+MLQly|yx8!SB3={c)-*vcPfy)8!mfW?b!pIA+>e30 zNE%Sy&(@yH*Imd!Qn81FqX5!gJ2E=+ITbgjfCI}(bu`Qc-c@_`2LB2G&`)8f+a6Ak z7gFQP#chk^&PCEZ2$9pc5P#vuwLGXLUMRf$a(P>X3tt|*Vu@z~@RDgMtu?gF+3i9mg%(gQX1~yRd`5b z_4bC^d6lz_cI0dSbA+xDj3^bd={@&)#2ig{G?u=h0TLb@Xz}iLaoz{?{-0R+eGH3} zs;7zu&0)|omLM~UogZOx2d%z)4Q&(`CQbkoJDY6yJg#=7-uoR}{F)(HpDt!Vcg@Pe zybo(bzqE!Qhi!}siLa@>Kp+fC(W{KHXDu}~eNli8&2v)At$O|tGxjVCYn&&mR?E_G z8-{b$Sz}M*sO9mA#?ePfh+bo)pJNJxN8Q>s%nTpCz%sIIw(EpIW`IX!;j(Yt*?RI3 z(<-uhhI2Pravi(^^6o}sCbK%y-BOq3Imb2VrdynWu0>N(TWa%E@Twwjnq$Cu1kSCtuN9!U%lDZ~@yodDx&a zQzbJaah|x;*&xotInJ_G(4o$!wr*=!ZOrJ8z5a$NN8K#?gm8m2U$>MZ{Me%HIeXz$ zUZu>*$3J#mql2$gM>h6A93S1V3MzwZLuJ1!9`v+`@TFd%45_N2%7H2eP9FzoK*V7z z3Oo)-au{m`m*kaQ0YUKdT+l5?-R@?_h#GoCU|WU!b>x=8Um@Af80S0L?s6mLd zhg!mmda*NRPGafw>&ahs0{aKW&zNQi0?y?0^%^3(BwF7N!$UT9h(0}G#zbJ3iwzsi z0KpiNXS_N+Wz7W&25*kTamMUUE4}%YMMj!Z5TLliRe<0ce%^cavCaD6&kP7L#Ovdd zM%i#wDteWb+RUnOQ8VkA*0~UJ+%zZxW(B#XKjYkSGxaQ3O@-n=eZ7W2TWy#wdGg{j zBY+2%dmalHc_Yt|h3Yv}D+|v+#XVIxN&*DAZp@2f$8{`IuMGS8q@4YGbVO1+BhQw^obp;ubFFoHz&7RCLNbN zCf}=$fL2_w^th{`M;q9u9K1BJ;j+NlA|svb9@y*!ft?Tv_m&T)^pSJDYhAo#U$Lje zGswrX${g3nyUKeu=U+t1Ro+z>1ulq)_3*)kQ2;<@hkpE68nY~8L>t;$>S}i_TML!}X(R3Ont9S0a6$;2PgLBS?;VcUvbtF+n*AD|#7=`v`J0c7D#ld~yh%9# z=@Glx*me>G(eJO3T|r3-dfknZ*j!(KR$c8mBDdNy)=i|A7RFbx=GuvgriqD~TwW|H z7%?$WVZ3s->72h)Y;ayp{XF6U!VgB;RMO3x3nR5{*qA=;9e>6hY7Faex+`$?Axz#7 zW-w>a0Q*J;%=291&8$#k4BTle6YOoiQ^0^SYnTqj*gM$hW!mt=?8xI31G$RkuH#BV ztZA_R<*X;J9lVq5++ol66iPpS7Lth}xdzvX&9^`@qYt5UI!eI;qcSH#R)%os(1=Pk z*!uNmd4w(QnPXX~b+b5RiauED!Tl(LItv%DnQ8J;1g9V^H3{*WcJrqLE_Cx|`X#A; zgXWI2#gSvh%IUO|Pt^WMr3ZnJ#|#ch%_{W6zY8B&s^NU346_Kvl-x6!={Vn{CgYf5 zAM~$qc4YPcRGjx$dbXGGwDB!BnVFZYGENA?&G~V%&lb&=hmFD^&KollKj0g0V+Gk7 z+r~#P73SZj?fp8ZjhoQrQ~+Y2aP)&tZ=Y*FQY~w1sc%be_ge3nMZNHH;gu!s`Gfk< zF6T_etL%>?R#_}ukUwA8d9iOjj5t1$eVWby9JOk)Wpstnl6rE&m>ANA=eyd^_g^@m z_I4F_=gp!>YuCAw;BXGY9J=n1+9z22V()US()N^g*gF2%IQv@SFh~(0>5R+ z+X!>3u=m4o9=Q=#57X(Ss^wQ9UVH!m7a>VRK~!V$fTm|tsop?{^ZDVBtOQLY?AY3{ zVCxKH>J->X@DxSkdv7=P#pcJOEi#>DoPK+{o@Qv>?4wL5)Sy$FkYirWjCwlI!M>s8 zSuDn{)BEpZlp)9@rwkQpD%P;L#v6p#HO9aLZ1Qoann-(kGMaGkNr=70%5>p228kV~ zJ(vb;2?=et!uN@p-Op(7H*K{1+bPf=6GKN?zB72`^B2I`q+~&fH%joAZc1! z%3=l1RYOwRY)rEyZ^MMTw48?H=3^kEG2wXRK~u?bp)m1go8A$+0O`Ywx?uu7Q)+N-Eu(#91SWmmcT(TV4E%d8bc z&lk2Plrh-No(1w;q98e13|vufDd3=CY?XWIQ3oZbu(J~~3f3{o(AMHs*jx+?^%n=P zSm5r2{C*00I6yWGqhITOrSx)CY+m9%0}Ma?qsk-!j_e4Q=%$i2#s<}c2TL#atJ~2~ zJKSqldM~9LFtiRda7fkW9Ocxk(y(@*TiHUF4Bh9}yXN8T=|^%dHT62Ap^l4s#R&&2 zVd$z%HB>oJ<-i{c2OMb<@*>oMqUho{$?Xcdq;OrhqoIDe$ae_*QkQEjW31t=4Vl!U z;Y8zTs%A9BE2h_^4JfErFyla6v(InaQzm|=M!X`oxS_7azW(yM5IaNHXfN7JDonzv zu^=Xj;~AWOUGSjG1JLHqzYV9*tn_m@31wH{-!-$Z zK!~(Q&Dq4CY1ok88D4JXYL+Q`Zim-6Qq`R9z?ur*`~gPETh^di=&LA7PFpExKdNQI z1tMXNTf{JZ&j;2)gKUhw2$FH-rtk(Y%I!8xH9?gnL5>N6C>hRGlvqvA!=SpX}7cFxy zESkzhF$?SK=%C~S`y?=Cyhc)oUzRznrFIl{p6OkQJ?KF#CE^SXdfYKBoMcB18@`2J zy(g`YHA^kaz?ASA$=GcL|h|-P&LO|0C?Pn8Bzvu#Bi~Dm1e02%U$;Q#<>ER zLCoAAiT`A&$Hls*E42PQ3?%0d$Vh$ zm#Z06ci|@T>!KN*I}xWXrNs+;C>#n%)eF?8ji*&WRSuk94mc7dmcDqfO{>z<6#`LR zEzJF3*yV$PV1Q9erE;m96^wwP77h>W^ZU5Eh*we5rd4ps0!|hV^cVs+FWx|Q8BZ^U zGoj582W<5bN_NZkU^>?cdM30}e5MJ^C<(E*!F{mS|0A4&q8%t&j;34N3;C;Q~Fo6$W?a&P)gtEG#uDdEPw_93^?>n1CaVs2t86 zWAeS6$8Xb~A;3n?r@Qd4Ch(?a<-4I= zBw0(-%z>X~E$7LEJe2yWwj6$E9_&K-@6U)Zvb3*gY zeEp>mwQWt+s}SvuEuV%Ciy79&pDS$NT|98E_lyhttKrTB%Ni`@j!l2Om`X#iMt_2o;jV1$|HvU}_+>CsyJZ^=Y@y9{wv2wkpMWo{F~fw9YVuE8y1L}YRgsJDLhgr+A-zvP^E-d;KYv}r+Z&}&BfC7%&uPUDhz$VtR(01md5Io;tvC8as3J%$$06&2?F zxjy)7R)Z~2w^{54|Bpy)GrWS&6bAqSBJCt&C&7ZM3J<3t0B5LADBeUQ$px+!*4u6- zpLDK`J1M6?%|-%&#r*;Z@rDYEi4hKp+e%9yLZ=`AIxDzYx!x?&Rz7(GoO)Z~3|W^6j{a-9b! z(te8?=OG|6o*2iwOvni3QFsVsT@B{=HqI5{;%{Zi3ePm=lMs$qk66m+=EQc(6Xo0; z(6Dm3Zf)=<5F24jQXhLkYH8b&nf`t)=}> z7Phvzn%^3_u!i^8yQelR8!E&|s%a7>NtUyl2@1wzg?AK*ln|oe8^%(06nE*CzQMl+ zewOTjT+r+~?`Ubx zu%GEyrC1xdWsRxH0p-v_CVSG*lWEjyNh|jSZ;>ddgc5LzT!H^W-y^crT61izRr5gdhtoH?_0g!^(CD z&7JP^LPDc$Hi*W83b!g~5t)Ps0+r26EPKNb~1VfB9^Wh>9I^Uo44Ur|5Q0p<-nVj1K7@% zB=UdALyzLG^?PeL))(|O#Tu5@1eb&YOB)*6J#IH9kk^&MY0EnpTQOXgirJA}_sVP@ zH^(&%1CECCmw2V9_C*8%H*|GXQ!#|W4VkV&Ix|?2EGjDsjE$I}M%Q&sgS$LZSSgxH zwr>PnhFmkj5;6cQIAE0u zSi=Sj%`B_yO38H1cQ5%{y)c+R^j%9y;~qTFQ&r90i2_*oAU6R4cH31&p@A7Rsui$| zUa&$JFuqRf@ZBgLh|~RP&IGZ#VZdGuZejuyjp)1y0thV8Xeo+rR=`qOG)ZBD7c}Bv zB`!4MaGjz+VF$^IY5M?Caro{?#*7JKdmJ4rxA zSsDo*mVj#1RE;=8U{Sdc`vjl~u(&h;eUoLl+ALSAnR*JkCzM6)5cP;`zzYcCYARD> z)n2HN{0f`1RE+@39|0C<8)ljFM0ww`(hz*o&{0*Cg;>~R#O}GGDKxhOEE)t31p+MY z`G(HZl22Pqmax?!0@1}1BhzQXoH%60;%+eB!4{tPR86s)BJD@c087|{MxB}+$Hy-- z$6i#6DXI`{TxUhoyUZAQnlsAf^p2@&QdOKJ1ZUt*1CyV&fh@hrr{aZrsmB4{H)hBj7EjaL|Ge&;@cj z>?hjK01hXf2;iS#@Tyi{X5uY=Xj~z!K=E%Fda|6J&?n|g%^hOvh%!=uwR30=HCs4D zhtfzU0$5Zf>ISFsM4tGA1n~ZXKwQvG9zrNIYD#Hb&z|911{w#8gDg*Hs|_@F(}Eut zG-IeuA?}b31+*XFLq`SJf>z4v85rmRGVT2Qh!iO@nY>b@8Uq0IQe6j1&}*Z0qAb!? zLqkk0#e@k8fW@6z@?ky`}^pfw~wf5Rs^SAOixBkJPp>PKj!Uq{>>VQOYV~xG_^= zCU9;g$Tc=d3tWs(RZ5x#x1~lA9>dfznfEqG3xPmhPXR+-=OoS_d7xW9)x+9K@yNN!2Q-9-woD`BM9a0;L=%PQn2_B{9fmZ&>a8%_)j z6^q5z=4QMa=o@r<+zqkl#6&uk8jZ(eK96^xKY^LMbzUoy4fglfhU@C;19jTt@TOu58 z{T%M;!v=Bdyq0`EH!v{RP#>uc*CYmp3WZWzdkdxnB=F$=dSiS%J)TUCHa5om0q^17 zUPEYZUv+6|==r{bTSMW7NThCLcsMhWYiVl~MX9%^4_4iqTbr|)Y+@)8i!_94Lm;7C zE`tP^Y3xt=e6`W2oES+@jE#;pHN|~i@8O=qkQCb6S_{Qu|G;3_rZF)*l+WZ_+nOQr zAMQOYxm-;xxHCU7Je-Wh8iK*#z~Mn`3AN5|g=p4)xX%{|#N+X_(J|V;yQy|uZaAy2 zKhI=eYMa-V&lUy-6Ol-LZMb%DaIjD)wzajQ(m|u!>xnnQVbOSUG}Rc3c|7jHeq8Th zP?l0I4h|$j;TmL14v*yXg{GE9K@Rn&{Zes9yfKoU$PFh)q6;n#_~n5;k3lYNZE3B=`3XLMm-)X)YG>Lx}{Ac{kjyZi#Z7?`rIa5W7z)$`>+9-Lqp8e9rnxx|hWGak;6`d|=jwu4 z*WdMEq&^%9hK2`+N@caBtqCm$<@$W?Xf!%LHl7+wH^yVKFEE&cW$zu$jbWVO7#ti5 zg~6EGWOBH~v^6$GxpLP)UkdB3cvCz(ksVGA$LbsW!9Zdl0Z|W?3jw9S4>WqCk;v%i z=y*nHUhy_pd0*e5-7F`zG{uXGFkGq&%DHer7#ciK%$LwUF-Io`2izWSBpMkXA5W*p zqtS@l?H(FPLV|B>jsuzG&~Pvmtf{RXE7cT=THKq$xf8Tc(Iq!7Jiky965TI0gabZV z9Ue*+G-FS!^FY=}C5AnIS1=sTjc0S2Ol?C%l7+FM6sowcp`lz-(xWL~FchfqrBi9W zpstL>>RN)J*Co4R4Y5pS92M2j5N!&?m@zX^7OhXwc}&yLOxgD&>#x@$nXe`_ccT#`9cwV4%K3> z$3Hff6;xM8(;~=K-HH8-RIaHHX3&i@+2%-Vt*3D~nat>ek!ZbAR#K^vKp+?n)r_V` zF%U#TvAoRmZfO(mbprN`2s5$?v&1t6rxqcF^73=a?cd>%C6^h5@uB1R;aC=Vrv zA=|~Gkz%o&N~LOQLcu^NH97*4W3ebE0}LZL+Z2t|Pr&Ex*hGDOtqickV-OePu?8$H zlgSYbO?Bbg(e!vBSBN%5Fl!7A4T}QT&=46*j|1UwxE7-GXlhK9_@=r=ez}$B;Dr74 zolaiYxvC1h%7H2e{unqgEj2pWKwD7Ajk{ffAh|G8V$tgH%A_YKmIQ&vOa{dmK5m!9 zi$bYbhS2Hpda!!NGr4M%Bn((s;Cei;5`&ft6pa$B)f!lD@oFwmDu z04vCDx1up>ISb_~4t}C6%&C|R00)OZA$MXrDVG(jt8K7Mu~39~ExTQi$)Mu|d`t<* z1^bR}uh&uw#gYQS0>T{hd>CYHupE%VG-iX&~4`ist$Rcp9Aj46cfli26XK}?sPKM|q3FR^r z)CMA!<@TUaL6*>n zbs~=ng%%bhP(6Zmf+)+AV7&nzH#`bOD2I>$im#$-Ng^i+ELsP2KpqcfQ!pGP@Gh5( z%Ev#KEMX0YR!1$|?S_m?wGRr=!l4#2ELno2&7lE9Cq#|P;L61ebpZj`s;D5w^axd<1DY;bMl!Tu9#BPrwDpGRb-M+SQ!Wb}kEJ67L@*TDfg33T zO;dD>_zQZ`%s@L;lcu?4Hx#01%-BA5d0fCxK^Gv-0GSfBcOU`UC+cpz;E~_W!@3A9b`!oCJH!zkCGQAKw%uvCDUL15u!oO&_(h30j6QTw@a4(ZYCv8GarWpqHh zQ9*PkWT1X45;810DQHB$0Ey`7sAuT0-7Yt7#sG7en*fr4idq1TC}F4p0OHz!{Va zB`>u!==&*`1U{gxLJ9|O(G>9vhKnwdx~Q(pk_#Ikpb^?dH)urjn50pGLqrp0$+Ue@ z0%tf$b^#ZRa4tfIXauXlI_N#Y5QxHdqaxO!8Gt8FH4zD_O6^1NA2322IIZ)+5l>=1{R5?)PK$Qbk4uAtysj=D&svM|t qpvr+N2dW&Xa-hnADhE!^f&UL6(zH>+_d-el0000 Date: Tue, 16 Sep 2014 07:08:09 -0700 Subject: [PATCH 082/102] Updated book.asciidoc --- book.asciidoc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/book.asciidoc b/book.asciidoc index 7ca0d98b..5f71ab85 100644 --- a/book.asciidoc +++ b/book.asciidoc @@ -20,6 +20,4 @@ include::ch07.asciidoc[] include::ch08.asciidoc[] -include::ch09.asciidoc[] - -include::appdx-scriptops.asciidoc[] \ No newline at end of file +include::ch09.asciidoc[] \ No newline at end of file From eb638101353421a391d6e20d1347738e2d515e73 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Tue, 16 Sep 2014 10:48:42 -0400 Subject: [PATCH 083/102] Update bitcoin overview image --- images/Bitcoin_Overview.png | Bin 147337 -> 131809 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/Bitcoin_Overview.png b/images/Bitcoin_Overview.png index cc91e4d77a77aa0674e126adbbd750d045023d09..f2a8e5ff5d267346bd6943b45fd3e655e2e2ac23 100644 GIT binary patch literal 131809 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 literal 147337 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

-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 From 42a975730a7bc979ba159fb22521a8ca9f0a6d5b Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Wed, 17 Sep 2014 10:09:34 -0400 Subject: [PATCH 084/102] replaced example of blockchain wallet with multibit wallet. Even though the blockchain wallet examples were written before I got a job at Blockchain, I want to remove even the appearance of bias. --- ch01.asciidoc | 37 +++++++++++++++++++++---------------- ch02.asciidoc | 5 +++-- images/MultibitReceive.png | Bin 0 -> 28010 bytes images/MultibitWallet.png | Bin 0 -> 46518 bytes images/MultibitWelcome.png | Bin 0 -> 60920 bytes 5 files changed, 24 insertions(+), 18 deletions(-) create mode 100644 images/MultibitReceive.png create mode 100644 images/MultibitWallet.png create mode 100644 images/MultibitWelcome.png diff --git a/ch01.asciidoc b/ch01.asciidoc index e5c3b1ad..959a7776 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -100,33 +100,36 @@ For the purposes of this book, we will be demonstrating the use of a variety of ==== Quick Start - Web Wallet -A web-wallet is the easiest way to start using bitcoin, and is the choice of Alice who we introduced in <>. Alice is not a technical user and only recently heard about bitcoin from a friend. She starts her journey by visiting the official website bitcoin.org, where she finds a broad selection of bitcoin clients. Following the advice on the bitcoin.org site, she chooses a web-wallet by blockchain.info, a popular hosted-wallet service. Following a link from bitcoin.org, she opens the blockchain.info wallet page at https://blockchain.info/wallet and selects "Start a New Wallet". To register her new wallet, she must enter an email address, enter a password and prove that she is a human by completing a CAPTCHA test. +Alice, who we introduced in <>, is not a technical user and only recently heard about bitcoin from a friend. She starts her journey by visiting the official website bitcoin.org, where she finds a broad selection of bitcoin clients. Following the advice on the bitcoin.org site, she chooses the lightweight bitcoin client _Multibit_. + +Alice follows a link from the bitcoin.org site to download and install Multibit on her desktop. Multibit is available for Windows, Mac OS and Linux desktops. [WARNING] ==== -When creating a bitcoin wallet you will need to provide a password or passphrase to protect your wallet. There are many bad actors attempting to break weak passwords, so take care to select one that cannot be easily broken. Use a combination of upper and lower-case characters, numbers and symbols. Avoid personal information such as birthdates or names of sports teams. Avoid any words commonly found in dictionaries, in any language. If you can, use a password generator to create a completely random password that is at least 12 characters in length. Remember: bitcoin is money and can be instantly moved anywhere in the world. If it is not well protected, it can be easily stolen. +A bitcoin wallet must be protected by a password or passphrase. There are many bad actors attempting to break weak passwords, so take care to select one that cannot be easily broken. Use a combination of upper and lower-case characters, numbers and symbols. Avoid personal information such as birth-dates or names of sports teams. Avoid any words commonly found in dictionaries, in any language. If you can, use a password generator to create a completely random password that is at least 12 characters in length. Remember: bitcoin is money and can be instantly moved anywhere in the world. If it is not well protected, it can be easily stolen. ==== -Once Alice has completed the registration form, she is presented with a Wallet Recovery Mnemonic. This is a series of words that can be used to reconstruct her wallet in case she loses the password or account details. Following the instructions on screen, Alice copies the words onto paper, locking it away in a secure location. +Once Alice has downloaded and installed the Multibit application, she runs it and is greeted by a "welcome" screen: -[[blockchain-mnemonic]] -.Blockchain.info - Wallet Recovery Mnemonic -image::images/blockchain-mnemonic.png["wallet recovery mnemonic"] +[[multibit-welcome]] +.The Multibit Bitcoin Client - Welcome Screen +image::images/MultibitWelcome.png["MultibitWelcome"] -A few seconds later, Alice can start using her new bitcoin web-wallet by logging in with her account ID and password. In her web browser, she sees the web-wallet home screen: +Multibit automatically creates a wallet and a new bitcoin address for Alice, which Alice can see by clicking on the "Request" tab: +[[multibit-request]] +.Alice's new bitcoin address, in the "Request" tab of the Multibit client +image::images/MultibitReceive.png["MultibitReceive"] -[[blockchain-home]] -.Blockchain.info - Wallet Home Screen -image::images/blockchain-home.png["wallet home screen"] +The most important part of this screen is Alice's _bitcoin address_. Like an email address, Alice can share this address and anyone can use it to send money directly to her new wallet. On the screen it appears as a long string of letters and numbers: +1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK+. Next to the wallet's bitcoin address, there is a QR code, a form of barcode that contains the same information in a format that can be easily scanned by a smartphone's camera. The QR code is the black and white square on the right side of the window. Alice can copy the bitcoin address or the QR code onto her clipboard by clicking on the copy button adjacent to each of them. Clicking on the QR code itself will magnify it, so that it can be easily scanned by a smartphone camera. -The most important part of this screen is Alice's _bitcoin address_. Like an email address, Alice can share this address and anyone can use it to send money directly to her new web-wallet. On the screen it appears as a long string of letters and numbers: +1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK+. Next to the wallet's bitcoin address, there is a QR code, a form of barcode that contains the same information in a format that can be easily scanned by a smartphone's camera. Alice can print the QR code as a way to easily give her address to others without them having to type the long string of letters and numbers. +Alice can also print the QR code as a way to easily give her address to others without them having to type the long string of letters and numbers. [TIP] ==== Bitcoin addresses start with the digit "1" or "3". Like email addresses, they can be shared with other bitcoin users who can use them to send bitcoin directly to your wallet. Unlike email addresses, you can create new addresses as often as you like, all of which will direct funds to your wallet. A wallet is simply a collection of addresses and the keys that unlock the funds within. There is practically no limit to the number of addresses a user can create. ==== -Alice is now ready to start using her new bitcoin web-wallet. +Alice is now ready to start using her new bitcoin wallet. [[getting_first_bitcoin]] ==== Getting your first bitcoins @@ -151,11 +154,13 @@ Alice was introduced to bitcoin by a friend and so she has an easy way of gettin ==== Sending and receiving bitcoins -Alice has created her bitcoin web-wallet and she is now ready to receive funds. Her web-wallet application randomly generated a bitcoin address together with its corresponding key (an elliptic curve private key, described in more detail in <>). At this point, her bitcoin address is not known to the bitcoin network or "registered" with any part of the bitcoin system. Her bitcoin address is simply a number that corresponds to a key that she can use to control access to the funds. There is no account or association between that address and an account. Until the moment this address is referenced as the recipient of value in a transaction posted on the bitcoin ledger (the blockchain), it is simply part of the vast number of possible addresses that are "valid" in bitcoin. Once it has been associated with a transaction, it becomes part of the known addresses in the network and Alice can check its balance on the public ledger. +Alice has created her bitcoin wallet and she is now ready to receive funds. Her wallet application randomly generated a bitcoin address together with its corresponding key (an elliptic curve private key, described in more detail in <>). At this point, her bitcoin address is not known to the bitcoin network or "registered" with any part of the bitcoin system. Her bitcoin address is simply a number that corresponds to a key that she can use to control access to the funds. There is no account or association between that address and an account. Until the moment this address is referenced as the recipient of value in a transaction posted on the bitcoin ledger (the blockchain), it is simply part of the vast number of possible addresses that are "valid" in bitcoin. Once it has been associated with a transaction, it becomes part of the known addresses in the network and Alice can check its balance on the public ledger. -Alice meets her friend Joe who introduced her to bitcoin at a local restaurant so they can exchange some US dollars and put some bitcoins into her account. She has brought a print out of her address and the QR code as shown on the home page of her web-wallet. There is nothing sensitive from a security perspective about the bitcoin address. It can be posted anywhere without risking the security of her account and it can be changed by creating a new address at any time. Alice wants to convert just $10 US dollars into bitcoin, so as not to risk too much money on this new technology. She gives Joe a $10 bill and the printout of her address so that Joe can send her the equivalent amount of bitcoin. +Alice meets her friend Joe who introduced her to bitcoin at a local restaurant so they can exchange some US dollars and put some bitcoins into her account. She has brought a printout of her address and the QR code as displayed in her bitcoin wallet. There is nothing sensitive, from a security perspective, about the bitcoin address. It can be posted anywhere without risking the security of her account. -First, Joe has to figure out the exchange rate so that he can give the correct amount of bitcoin to Alice. There are hundreds of applications and web sites that can provide the current market rate, here are some of the most popular: +Alice wants to convert just $10 US dollars into bitcoin, so as not to risk too much money on this new technology. She gives Joe a $10 bill and the printout of her address so that Joe can send her the equivalent amount of bitcoin. + +Next, Joe has to figure out the exchange rate so that he can give the correct amount of bitcoin to Alice. There are hundreds of applications and web sites that can provide the current market rate, here are some of the most popular: * bitcoincharts.com, a market data listing service that shows the market rate of bitcoin across many exchanges around the globe, denominated in different local currencies * bitcoinaverage.com, a site that provides a simple view of the volume-weighted-average for each currency @@ -185,7 +190,7 @@ If Alice has a smartphone or laptop with her, she will also be able to see the t .Confirmations **** -At first, Alice's address will show the transaction from Joe as "Unconfirmed". This means that the transaction has been propagated to the network but has not yet been included in the bitcoin transaction ledger, known as the blockchain. To be included, the transaction must be "picked up" by a miner and included in a block of transactions. Once a miner has discovered a solution to the Proof-of-Work algorithm for this block (in approximately 10 minutes), the transactions within the block will be accepted as "confirmed" by the network and can be spent. The transaction is seen by all instantly, but it is only "trusted" by all when it is included in a newly mined block. As more blocks are mined after that block, the lower the risk that block can be removed or modified because the additional blocks must be removed first requiring additional computational power. +At first, Alice's address will show the transaction from Joe as "Unconfirmed". This means that the transaction has been propagated to the network but has not yet been included in the bitcoin transaction ledger, known as the blockchain. To be included, the transaction must be "picked up" by a miner and included in a block of transactions. Once a new block is created, in approximately 10 minutes, the transactions within the block will be accepted as "confirmed" by the network and can be spent. The transaction is seen by all instantly, but it is only "trusted" by all when it is included in a newly mined block. **** Alice is now the proud owner of 0.10 bitcoin which she can spend. In the next chapter we will look at her first purchase with bitcoin and examine the underlying transaction and propagation technologies in more detail. diff --git a/ch02.asciidoc b/ch02.asciidoc index 5fbaa0e5..48e0b37a 100644 --- a/ch02.asciidoc +++ b/ch02.asciidoc @@ -11,7 +11,8 @@ Popular blockchain explorers include: * blockchain.info * blockexplorer.com -* biteasy.com +* insight.bitpay.com +* blockr.io Each of these has a search function that can take an address, transaction hash or block number and find the equivalent data on the bitcoin network and blockchain. With each example, we will provide a URL that takes you directly to the relevant entry, so you can study it in detail. @@ -20,7 +21,7 @@ Each of these has a search function that can take an address, transaction hash o In the overview diagram below, we see that the bitcoin system consists of users with wallets containing keys, transactions which are propagated across the network and miners who produce (through competitive computation) the consensus blockchain, the authoritative ledger of all transactions. In this chapter, we will trace a single transaction as it travels across the network and examine the interactions between each part of the bitcoin system, at a high level. Subsequent chapters will delve deeper into the technology behind wallets, mining and merchant systems. -[[blockchain-mnemonic]] +[[bitcoin-overview]] .Bitcoin Overview image::images/Bitcoin_Overview.png["Bitcoin Overview"] diff --git a/images/MultibitReceive.png b/images/MultibitReceive.png new file mode 100644 index 0000000000000000000000000000000000000000..d582da8b697379c89052c850bf8846043808cea8 GIT binary patch literal 28010 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 Qvn=4FgEr94*E%2cA3xqv>i_@% literal 0 HcmV?d00001 From 7a4539732ab7237be89d1530c9fcbe23e6649849 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Wed, 17 Sep 2014 10:13:11 -0400 Subject: [PATCH 085/102] remove reference to web wallet --- ch01.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch01.asciidoc b/ch01.asciidoc index 959a7776..55e159d5 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -98,7 +98,7 @@ The choice of bitcoin client depends on how much control the user wants over fun For the purposes of this book, we will be demonstrating the use of a variety of bitcoin clients, from the reference implementation (the Satoshi client) to web-wallets. Some of the examples will require the use of the reference client which exposes APIs to the wallet, network and transaction services. If you are planning to explore the programmatic interfaces into the bitcoin system, you will need the reference client. -==== Quick Start - Web Wallet +==== Quick Start Alice, who we introduced in <>, is not a technical user and only recently heard about bitcoin from a friend. She starts her journey by visiting the official website bitcoin.org, where she finds a broad selection of bitcoin clients. Following the advice on the bitcoin.org site, she chooses the lightweight bitcoin client _Multibit_. From 51c319c54ceeb88f748826b4c621ace15223c7a5 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Mon, 22 Sep 2014 18:58:53 -0400 Subject: [PATCH 086/102] bip32, bip43, bip44 initial commit --- ch04.asciidoc | 158 ++++++++++++++++++++++++-- images/ChildHardPrivateDerivation.svg | 4 + images/ChildPrivateDerivation.svg | 4 + images/ChildPublicDerivation.svg | 4 + images/HDWalletFromRootSeed.svg | 4 + images/HD_wallet.png | Bin 29100 -> 30797 bytes images/en-hd-overview.svg | 135 ++++++++++++++++++++++ images/en-hd-root-keys.svg | 111 ++++++++++++++++++ 8 files changed, 411 insertions(+), 9 deletions(-) create mode 100644 images/ChildHardPrivateDerivation.svg create mode 100644 images/ChildPrivateDerivation.svg create mode 100644 images/ChildPublicDerivation.svg create mode 100644 images/HDWalletFromRootSeed.svg create mode 100644 images/en-hd-overview.svg create mode 100644 images/en-hd-root-keys.svg diff --git a/ch04.asciidoc b/ch04.asciidoc index 53ea1f81..ad84e979 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -462,9 +462,10 @@ Another method for making keys is _deterministic key generation_. Here you deriv Wallets contain keys, not coins. The coins are stored on the blockchain in the form of transaction-outputs (often noted as _vout_ or _txout_). Each user has a wallet containing keys. Wallets are really keychains containing pairs of private/public keys (See <>). Users sign transactions with the keys, thereby proving they own the transaction outputs (their coins). ==== +[[random wallet]] ==== Non-Deterministic (Random) Wallets -In the first implementations of bitcoin clients, wallets were simply collections of randomly generated private keys. The types of wallets are called _Type-0 Non-Deterministic Wallets_. For example, the Bitcoin Core Client pre-generates 100 random private keys when first started and generates more keys as needed, trying to use each key only once. This type of wallet is nicknamed "Just a Bunch Of Keys", or JBOK, and such wallets are being replaced with deterministic wallets because they are cumbersome to manage, backup and import. The disadvantage of random keys is that if you generate many of them you must keep copies of all of them, meaning that the wallet must be backed-up frequently. Each key must be backed-up, or the funds it controls are irrevocably lost if the wallet becomes inaccessible. This conflicts directly with the principle of avoiding address re-use, by using each bitcoin address for only one transaction. Address re-use reduces privacy by associating multiple transactions and addresses with each other. A Type-0 non-deterministic wallet is a poor choice of wallet, especially if you want to avoid address re-use as that means managing many keys, which creates the need for very frequent backups. The Bitcoin Core Client includes a wallet that is implemented as a Type-0 wallet, but the use of this wallet is actively discouraged by the Bitcoin Core developers. +In the first implementations of bitcoin clients, wallets were simply collections of randomly generated private keys. This type of wallet is called a _Type-0 Non-Deterministic Wallets_. For example, the Bitcoin Core Client pre-generates 100 random private keys when first started and generates more keys as needed, using each key only once. This type of wallet is nicknamed "Just a Bunch Of Keys", or JBOK, and such wallets are being replaced with deterministic wallets because they are cumbersome to manage, backup and import. The disadvantage of random keys is that if you generate many of them you must keep copies of all of them, meaning that the wallet must be backed-up frequently. Each key must be backed-up, or the funds it controls are irrevocably lost if the wallet becomes inaccessible. This conflicts directly with the principle of avoiding address re-use, by using each bitcoin address for only one transaction. Address re-use reduces privacy by associating multiple transactions and addresses with each other. A Type-0 non-deterministic wallet is a poor choice of wallet, especially if you want to avoid address re-use as that means managing many keys, which creates the need for frequent backups. While the Bitcoin Core Client includes a wallet that is implemented as a Type-0 wallet, the use of this wallet is actively discouraged by developers of the Bitcoin Core. [[Type0_wallet]] .Type-0 Non-Deterministic (Random) Wallet: A Collection of Randomly Generated Keys @@ -474,7 +475,8 @@ image::images/non-deterministic_wallet.png["non-deterministic wallet"] Deterministic, or "seeded" wallets are wallets that contain private keys which are all derived from a common seed, through the use of a one-way hash function. The seed is a randomly generated number which is combined with other data, such as an index number or "chain code" (see <>) to derive the private keys. In a deterministic wallet, the seed is sufficient to recover all the derived keys and therefore a single backup at creation time is sufficient. The seed is also sufficient for a wallet export or import, allowing for easy migration of all the user's keys between different wallet implementations. -==== Mnemonic Code Words (DRAFT:BIP0039) +[[mnemonic_code_words]] +==== Mnemonic Code Words Mnemonic codes are English word sequences that represent (encode) a random number used as a seed to derive a deterministic wallet. The sequence of words is sufficient to re-create the seed and from there re-create the wallet and all the derived keys. A wallet application that implements deterministic wallets with mnemonic code will show the user a sequence of 12-24 words when first creating a wallet. That sequence of words is the wallet backup and can be used to recover and re-create all the keys in the same or any compatible wallet application. Mnemonic code words make it easier for users to back up wallets, as they are easy to read and correctly transcribe, as compared to a random sequence of numbers. @@ -520,19 +522,157 @@ luggage oxygen faint major edit measure invite love trap field dilemma oblige fcf473bee22fce540af281bf7cdeade0dd2c1c795bd02f1e4049e205a0158906c343 |======= -==== Deterministic Chains (Electrum Key Chains) - -[[Type1_wallet]] -.Type-1 Deterministic Wallet: A Chain of Keys Generated from a Seed -image::images/chained_wallet.png["chained wallet"] - [[hd_wallets]] -==== Deterministic Trees (BIP0032) +==== Hierarchical Deterministic Wallets (BIP0032/BIP0044) + +Deterministic wallets were developed to make it easy to derive many keys from a single "seed". The most advanced form of deterministic wallets is the _Hierarchical Deterministic Wallet_ or _HD Wallet_ defined by the BIP0032 standard. Hierarchical deterministic wallets contain keys derived in a tree structure, such that a parent key can derive a sequence of children keys, each of which can derive a sequence of grandchildren keys and so on to an infinite depth. This tree structure is illustrated below: [[Type2_wallet]] .Type-2 Hierarchical Deterministic Wallet: A Tree of Keys Generated from a Seed image::images/HD_wallet.png["HD wallet"] +[TIP] +==== +If you are implementing a bitcoin wallet, it should be built as an HD wallet following the BIP0032 and BIP0044 standards. +==== + +HD wallets offer two major advantages over random (non-deterministic) keys. First, the tree structure can be used to express additional organizational meaning, such as when a specific branch of sub-keys is used to receive incoming payments and a different branch is used to receive change from outgoing payments. Branches of keys can also be used in a corporate setting, allocating different branches to departments, subsidiaries, specific functions or accounting categories. + +The second advantage of HD wallets is that users can create a sequence of public keys without having access to the corresponding private keys. This allows HD wallets to be used on an insecure server or in a receive-only capacity, issuing a different public key for each transaction. The public keys do not need to be pre-loaded or derived in advance, yet the server doesn't have the private keys that can spend the funds. + +===== Creating an HD wallet from a seed + +HD wallets are created from a single _root seed_, which is a 128, 256 or 512 bit random number. Everything else in the HD wallet is deterministically derived from this root seed, which makes it possible to re-create the entire HD wallet from that seed in any compatible HD wallet. This makes it easy to backup, restore, export and import HD wallets containing thousands or even millions of keys by simply transferring only the root seed. The root seed is most often represented by a _mnemonic word sequence_, as described in the previous section <>, to make it easier for people to transcribe and store it. + +The process of creating the master keys and master chain code for an HD wallet is shown below: + +[[HDWalletFromSeed]] +.Hierarchical Deterministic Wallet: Creating master keys and chain code from a root seed +image::images/HDWalletFromRootSeed.svg["HDWalletFromRootSeed"] + +The root seed is input into the HMAC-SHA512 algorithm and the resulting hash is used to create a _master private key_ (m) and a _master chain code_. The master private key (m) then generates a corresponding master public key (M), using the normal elliptic curve multiplication process +m * G+ that we saw previously in this chapter. The chain code is used to introduce entropy in the function that creates child keys from parent keys, as we will see in the next section. + +===== Deriving child private keys + +Hierarchical Deterministic wallets use a _child key derivation_ (CKD) function to derive children keys from parent keys. + +The child key derivation functions are based on one-way hash functions that combines: + +* A parent private or public key (ECDSA uncompressed key) +* A seed called a chain code (256 bits) +* An index number (32 bits) + +The chain code is used to introduce seemingly random data to the process, so that the index is not sufficient to derive other child keys. Thus, having a child key does not make it possible to find its siblings, unless you also have the chain code. The initial chain code seed (at the root of the tree) is made from random data, while subsequent chain codes are derived from each parent chain code. + +These three items are combined and hashed to generate children keys, as follows: + +The parent public key, chain code and the index number are combined and hashed with the HMAC-SHA512 algorithm to produce a 512 bit hash. The resulting hash is split into two halfs. The right-half 256 bits of the hash output become the chain code for the child. The left-half 256 bits of the hash and the index number are added to the parent private key to produce the child private key. In the diagram below, we see this illustrated with the index set to 0 to produce the 0'th (first by index) child of the parent. + +[[CKDpriv]] +.Hierarchical Deterministic Wallet: Extending a parent private key to create a child private key +image::images/ChildPrivateDerivation.svg["ChildPrivateDerivation"] + +Changing the index allows us to extend the parent and create the other children in the sequence, e.g. Child 0, Child 1, Child 2 etc. Each parent key can have 2 billion children keys. + +Repeating the process one level down the tree, each child can become a parent and in combination with the child chain code and an index can create it's own children, in an infinite number of generations. + +===== Using derived child keys + +Child private keys are indistinguishable from non-deterministic (random) keys. Because the derivation function is a one way function, the child key cannot be used to find the parent key. The child key can also not be used to find any siblings. If you have the n~th~ child, you cannot find its siblings, such as the n-1 child or the n+1 child, or any other children that are part of the sequence. Only the parent key and chain code can derive all the children. Without the child chain code, the child key cannot be used to derive any grandchildren either. You need both the child private key and the child chain code to start a new branch and derive grandchildren. + +So what can the child private key be used for, on its own? It can be used to make a public key and a bitcoin address. Then, it can be used to sign transactions to spend anything paid to that address. + +[TIP] +==== +A child private key, the corresponding public key and the bitcoin address are all indistinguishable from keys and addresses created randomly. The fact that they are part of a sequence is not visible, outside of the HD wallet function that created them. Once created, they operate exactly as "normal" keys. +==== + +===== Extended keys + +As we saw above, the key derivation function can be used to create children at any level of the tree, based on the three inputs: a key, a chain code and the index of the desired child. The two essential ingredients are the key and chain code and combined these are called an _extended key_. The term "extended key" could also be thought of as "extensible key" because such a key can be used to derive children. + +Extended keys are stored and represented simply as the concatenation of the 256 bit key and 256 bit chain code into a 512 bit sequence. There are two types of extended keys: An extended private key is the combination of a private key and chain code and can be used to derive child private keys (and from them, child public keys). An extended public key is a public key and chain code, which can be used to create child public keys, as described in <>. + +Think of an extended key as the root of a branch in the tree structure of the HD wallet. With the root of the branch, you can derive the rest of the branch. The extended private key can create a complete branch, whereas the extended public key can only create a branch of public keys. + +[TIP] +==== +An extended key consists of a key and chain code and is the root of one of the branches in an HD wallet tree structure. With an extended key you can derive all the nodes in that branch. +==== + +[[public_key_derivation]] +===== Deriving child public keys + +As mentioned above, a very useful characteristic of hierarchical deterministic wallets is the ability to derive public child keys from public parent keys, _without_ having the private keys. A child public key derived directly from the parent public key is exactly the same as if you first derived the child private key from the parent private key and then computed the child public key corresponding to it. + +An extended public key can be used, therefore, to derive all of the _public_ keys (and only the public keys) in that branch of the HD wallet structure. + +This shortcut can be used to create very secure public-key-only deployments where a server or application has a copy of an extended public key and no private keys whatsoever. That kind of deployment can produce an infinite number of public keys and bitcoin addresses but cannot spend any of the money sent to those addresses. Meanwhile, on another more secure server, the extended private key can derive all the corresponding private keys to sign transactions and spend the money. + +One common application of this solution is to install an extended public key on a web server that serves an e-commerce application. The web server can use the public key derivation function to create a new bitcoin address for every transaction (e.g. for a customer shopping cart). The web server will not have any private keys that would be vulnerable to theft. Without HD wallets, the only way to do this is to generate thousands of bitcoin addresses on a separate secure server and then pre-load them on the e-commerce server. That approach is cumbersome and requires constant maintenance to ensure that the e-commerce server doesn't "run out" of keys. + +Another common application of this solution is for cold-storage or hardware wallets. In that scenario, the extended private key can be stored on a paper wallet or hardware device (such as a Trezor hardware wallet), while the extended public key can be kept online. The user can create "receive" addresses at will, while the private keys are safely stored offline. To spend the funds, they can use the extended private key on an offline signing bitcoin client or sign transactions on the hardware wallet device (e.g. Trezor). + +[[CKDpub]] +.Hierarchical Deterministic Wallet: Extending a parent public key to create a child public key +image::images/ChildPublicDerivation.svg["ChildPublicDerivation"] + +===== Hardened derivation and notation + +The ability to derive a branch of public keys from an extended public key is very useful, but it comes with a potential risk. Access to an extended public key does not give access to child private keys. However, because the extended public key contains the chain code, if a child private key is known, or somehow leaked, it can be used with the chain code to derive all the other child private keys. A single leaked child private key, together with a parent chain code, reveals all the private keys of all the children. Worse, the child private key together with a parent chain code can be used to deduce the parent private key. + +To counter this risk, HD wallets use an alternative derivation function called _hardened derivation_, which "breaks" the relationship between parent public key and child chain code. The hardened derivation function uses the parent private key to derive the child chain code, instead of the parent public key. This creates a "firewall" in the parent/child sequence, with a chain code that cannot be used to compromise a parent or sibling private key. The hardened derivation function looks almost identical to the normal child private key derivation, except that the parent private key is used as input to the hash function, instead of the parent public key, as shown in the diagram below: + +[[CKDprime]] +.Hierarchical Deterministic Wallet: Hardened derivation of a child key, omits the parent public key +image::images/ChildHardPrivateDerivation.svg["ChildHardPrivateDerivation"] + +When the hardened private derivation function is used, the resulting child private key and chain code are completely different from what would result from the normal derivation function. The resulting "branch" of keys can be used to produce extended public keys which are not vulnerable, since the chain code they contain cannot be exploited to reveal any private keys. Hardened derivation is therefore used to create a "gap" in the tree above the level where extended public keys are used. In simple terms, if you want to use the convenience of an extended public key to derive branches of public keys, without exposing yourself to the risk of a leaked chain code, you should derive it from a hardened parent, rather than a normal parent. As a best practice, the level-1 children of the master keys are always derived through the hardened derivation, to prevent compromise of the master keys. + +===== Index numbers for normal and hardened derivation + +The index number used int he derivation function is a 32-bit integer. To easily distinguish between keys derived through the normal derivation function versus keys derived through hardened derivation, this index number is split into two ranges. Index numbers between 0 and 2^31^ (0x0 to 0x80000000) are used _only_ for normal derivation. Index numbers between 2^31^ and 2^32^ (0x80000000 to 0x8FFFFFFF) are used _only_ for hardened derivation. Therefore, if the index number is less than 2^31^, that means the child is normal, whereas if the index number is above 2^31^, the child is hardened. + +To make the index number easier to read and display, the index number for hardened children is displayed starting from zero, but with a prime symbol ('). The first normal child key is therefore displayed as 0, whereas the first hardened child (index 0x80000000) is displayed as 0'. In sequence then, the second hardened key would have index 0x80000001 and would be displayed as 1', and so on. When you see an HD wallet index i', that means 2^31^+i + +===== HD key identifier (path) + +Keys in an HD wallet are identified using a "path" naming convention, with each level of the tree separated by a slash (/) character. Private keys derived from the master private key start with "m". Public keys derived from the master public key start with "M". Each level of the tree shows the index number of the child key. The key identified by the path is the right most index with its "ancestry" read from right to left up to the master key from which it was derived. For example, identifier m/x/y/z describes the key which is the z-th child of key m/x/y, which is the y-th child of key m/x, which is the x-th child of m. + +.HD wallet path indicating derived keys +|======= +| m/0 | The first (0) child private key from the master private key (m) +| m/0/0 | The first grandchild private key of the first child. +| m/0'/0 | The first normal grandchild of the first _hardened_ child (m/0') +| m/1/0 | The first grandchild private key of the second child (m/1). +| M/23/17/0/0 | The first great-great-grandchild public key of the first great-grandchild of the 18th grandchild of the 24th child. +|======= + +===== Navigating the HD wallet tree structure + +The HD wallet tree structure offers tremendous flexibility. Each parent extended key can have 4 billion children: 2 billion normal children and 2 billion hardened children. Each of those children can have another 4 billion children and so on. The tree can be as deep as you want, with an infinite number of generations. With all that flexibility, however, it becomes quite difficult to navigate this infinite tree. It is especially difficult to transfer HD wallets between implementations, because the possibilities for internal organization into branches and sub-branches are endless. + +Two Bitcoin Improvement Proposals (BIPs) offer a solution to this complexity, by creating some proposed standards for the structure of HD wallet trees. BIP0043 proposes the use of the first hardened child index as a special identifier that signifies the "purpose" of the tree structure. Based on BIP0043, an HD wallet should use only one level-1 branch of the tree, with the index number identifying the structure and namespace of the rest of the tree by defining its purpose. For example, an HD wallet using only branch m/i'/, is intended to signify a specific purpose and that purpose is identified by index number "i". + +Extending that specification, BIP0044 proposes a multi-account structure as "purpose" number +44'+ under BIP0043. All HD wallets following the BIP0044 structure are identified by the fact that they only used one branch of the tree: m/44'/. + +BIP0044 specifies the structure as consisting of five pre-defined tree levels: + ++m / purpose' / coin_type' / account' / change / address_index+ + +The first level "purpose" is always set to +44'+. The second level "coin_type" specifies the type of crypto-currency coin, allowing for multi-currency HD wallets where each currency has it's own subtree under the second level. There are three currencies defined for now: Bitcoin is m/44'/0', Bitcoin Testnet is m/44'/1' and Litecoin is m/44'/2'. + +The third level of the tree is "account", which allows users to subdivide their wallets into separate logical sub-accounts, for accounting or organizational purposes. For example, an HD wallet might contain two bitcoin "accounts": m/44'/0'/0' and m/44'/0'/1'. Each account is the root of its own sub-tree. + +On the fourth level "change", an HD wallet has two sub-trees, one for creating receiving addresses and one for creating change addresses. Note that whereas the previous levels used hardened derivation, this level uses normal derivation. This is to allow this level of the tree to export extended public keys for use in an non-secured environment. Usable addresses are derived by the HD wallet as children of the fourth level, making the fifth level of the tree the "address_index". For example, the third receiving address for bitcoin payments in the primary account would be M/44'/0'/0'/0/2. Here are a few more examples: + +.BIP0044 HD wallet structure examples +|======= +| M/44'/0'/0'/0/2 | The third receiving public key for the primary bitcoin account +| M/44'/0'/3'/1/14 | The fifteenth change-address public key for the fourth bitcoin account +| m/44'/2'/0'/0/1 | The first private key in the Litecoin main account, for signing transactions +|======= + === Advanced Keys and Addresses ==== Encrypted Private Keys (BIP0038) diff --git a/images/ChildHardPrivateDerivation.svg b/images/ChildHardPrivateDerivation.svg new file mode 100644 index 00000000..38821215 --- /dev/null +++ b/images/ChildHardPrivateDerivation.svg @@ -0,0 +1,4 @@ + + + + diff --git a/images/ChildPrivateDerivation.svg b/images/ChildPrivateDerivation.svg new file mode 100644 index 00000000..05575877 --- /dev/null +++ b/images/ChildPrivateDerivation.svg @@ -0,0 +1,4 @@ + + + + diff --git a/images/ChildPublicDerivation.svg b/images/ChildPublicDerivation.svg new file mode 100644 index 00000000..7d3518fd --- /dev/null +++ b/images/ChildPublicDerivation.svg @@ -0,0 +1,4 @@ + + + + diff --git a/images/HDWalletFromRootSeed.svg b/images/HDWalletFromRootSeed.svg new file mode 100644 index 00000000..1d6893e4 --- /dev/null +++ b/images/HDWalletFromRootSeed.svg @@ -0,0 +1,4 @@ + + + + diff --git a/images/HD_wallet.png b/images/HD_wallet.png index 18f8adca188e28e17bb05640c8ff48a6040ff798..1369ff12bdee5e820e0bfebca4574ebdbaf6889c 100644 GIT binary patch literal 30797 zcmbrlXH=76(=Hkd78DB*P*71iK|qvZs3L?CAP|yJ1r(JkAWdpOQA9v`?>!-*N|mk% z(xfJ#3aIohC6v(i1HSLK_de^a^XL3wv9g|WKXcDqbIr_k2WTTy80gvPK_C!=nyQix z2y`3|0v-Et<`nSDjNCEcuN$+Pk^J#V*+{U zYPiZ1i8&=jG|}8O!#GR9EW2|_#zU$^sCIt2buW3>sZwNm)Ty&}deSL7^qO>C|Au>Y z>e|kM2~Okp*SDuH-jH$o`|JPTKOe?F<+Qj&u7fMj0bgl|@L9oD_Pf`oys7%z(l8$J z=WDG)L~`V{twuh%mEqPqy`smW-PtuBiudKgY(F>m`SG zT*@}r2`K#j@IzQI*c&zp) z+*;u0(NUlqpX7v7CqA`SXKl8@6kVFjT$e{1?7i365#}J!>uWD*>$44Y*d6*r3ENd) z9a~%5>~P9~=j!-c(<5D_Xcg{IEf%J%i_yx;JegfGYZ|{B1DKN1fR}4;{d#+m{`7@w ze|zbo>hu_Y(2A}g7h#2NVhM`05;NfdSM6Cl%RL&^L_c-X9k?NwjgWYJ0c%7lbSHxw$s1xI8M^uF8)Z3i?Yu6w!gOnJq)y)pZF=-O@k!7 z)n5uvJ>_-5JpT8DLUGc!%nKlol^9Q^c2RHTY%iQ~+#+E>2;IBm^nIIZg0 z3YmZ!owpnaoaoOe=Ec*h0?nyDMC2VPg+8fnltRI{O((nVj`c)qtCiGgbzx90SS7@* z&OqElIEn90!4P|ZvjyTDy%tX^qJef?Oj`F@AJ_xRbV zo#pyvY+;s;{Sa;R>OJ$VyM*Z%BUKb8Wi`U+PwF+btO@6_I&8|zIjWyp!KmK%=H|Wr znAb5zeX%#^_f$+t%UNCpu7#gJucnb#I+;f~O@Kyu)olR9j z-L*Urxk}Dk)l8Id&mbPeCM7&DM3bB93Z_*N;9v?nw(L1}XK-?&R800kMqtvzd)<(? zB)d7jrZqFa$cfke{%sR<Hb)gm;et+{n(N5s3$ki*{ zNXb<#cy|@*XP)8oboH|nUGy32NDia26_?nwAlB17pa&bHmS6=6W4*Rq4t>VDPoU#a znW-;fIZ^|z!IQ?Q3RW`ciI|)kEUtA_iMD}=V&0KV+Uc|3<$tgA%^g#d9~S!1yGC_U zn{8?Nu=%L9PzhsdVfyeMGNgMOQXVe`1{w>pa2s?5@X5g1-}^Y{AOIt+xFn`(#fZ;twY&> z+k+sO6=_?XC7I*fxRgziRy99J^)BRn&w!>4r+wvzwji;yE}m{xO%gPHD>G!inlcEK zeIKiRaK{gc50{(LfZmhu3zB97e*Y;BIdw3G@uQFy7lHico7z@vl zgIl{SqPSV0bgw;nIvkMN2Zd_F4+S&bYjD9HBQE`W0(0?gAP_P$Jf1Q%tcIX$88;9E zUnWAH2?c2&D66WJiNHqqV~X-wXgQn#6Bl+;y@P2lxmODsGH#Zo~Lx$ zr5}&KF1<;(9m`&r?G1*}MWck8Dw%>_{NNq_T%H8i@bvKLyiCee3H9jV!iJVtX7pIs z*v~TSKFEkVhc(8cC?#ksuT`uzMSTYApVNZw)G4E3YPZ0oRK_8|EV$X)HDvOJ@(5L#g5el&L{e_zu*yB(J zUi^?Qqq@+OgvZvN^G@tfATK-xGxD!J5%L^jco#TSdJqMFf+B#5U)!~mLcW|N&^U5i z@6o-!oo1t7nS!I1Ooua6=a*=0{;;cvXVkCFWZ$PF_?g_{HuH zKOM+GU062ddhkhM`nlVM%$R4g8IhY1d`YW#V zE}`Ch%Q6=(`^S;c7k&;Km#8<>fr+CS_Pz1q*}NPMfsJrQdJb?_qP%x zI)7F=$#br7fQpN17QE%8q~<2&I3KhsT7ec=Tbvxwo}SW8$mcii1@4s-Lv~MqR8dbt z_KdJ}Jh?5e=m&_+PBy|s_u z1S>hBybS3^esjYF=DPXcz=JNa8h(1EoOl;X+}etkIKygkc;`?SXGK}~e*V-FaX+Sr zND0^di2j)AV{{|S!*R|NBUB)HA$>;BN(*%9bmv5lUQe$XdHqk2$bL)kZ4fBys&PNF zC}!>xr)&tA%R?<1y$`x6s4B*j^{{=@5LYqj(VEjrC|ZeQize_B_s7h?%rhuPhA?9&#ltPOXsRiiS{|SMakK|3lgrH302ZOb~Bd_Y1j~}55FI+H&-qc;bu5WNN5zSAWv1# zy9Xu=&7Z$;fn{T1@Y@F6>jB7SbfB2a9N8yvy+nN#fJ3q&=QV65YBx% zBAWOX;Z@#z)vgCma zLFlc0Mkm%esQ$~t6`?1Nfj(rV$SqE0_Re1g83yYF1v=77WC93mH7rv<;uT3)fWTda z$9HR=9CALE1atojgYNaK$;Gomv2dSK+K$5|!1n~TB~LOyyLZBeu;KmZUb0Z10@0J~ zeu;FoiQ7nIHs%E2y@uiAHsfsguDIXW(pKXa9IwaRWn+UJJ?==>YRVt^Rq{m;s6)Bd z%!1j^dGbr_IUnqVQu+=pv8D?kE?y#=v5O}szNWt7Q#OurfsPQ*y{7GcIt;CN8QM%H z3j^f5tyj+9`aO<%!QHuo-TsD8W8V5#^h-K-sv0p!u5#9i>n@iBQbbJKn?CEX_X7m* zk|d;#QYvKh-N$+OqO5?>^R0bG|EYbJZqE{DQdeeH;rLYuXgon3bV0y$jc+o;lLyZ@16B-fsa5>h8Wt z29jKdWx!L0CXp&P@88jH?e)N@@yghXZk)N(1Zx8!{6I=rGuVGEX!@y6aq6B>$ zxFwMGBT=%;^J(o|Lbjh|NG+?XMzG$+>w-V(*Y7TGGd_ZB-wMq$sg+t2%HB8eNn^WF z^6ePNds^H_&p9-E+|qqEJ9hU&R|nP3?wQmh&$!WCMR#_<~A^va?yK! zMO$Z%^K0$iQt-Zw&Bp!VYpV}Gjal6a%G986l35+O?#*-1-5ti)_`;_}3V_gi(8bn-B)iNj^q@;5 zrzSKsI3lHgR3;?t{Qz!bieS4nUQZj=ZzQ|T`RVP#_v`B9Ho(tP%53`0%dZ}^)4sJ( zj)5B2ABl=zBGaHA>p7<3K9d;r8e~@4gyUwHiJ*+!#*3Wi2P^$!tDDgqv#pVQgB)Q7 z%=)+6X8ZD5XA9T;ugiJGU1tD&unLId%%Ntgz10mL!|rMNNgn)m{>6ekCu}++E243d z%BrH}v7=MSr7*R}P#kzX2nNMMZ5(NZv~OaBw?_|nKC7T@b5BBIN^hd@MosNf;I6oj zgT+l~^j`?yXB|NZcJKRW^r($mRC9ClpnMqAc^nf(GJUS5A=1ww?z;5T$Aa$!$js0v zI3rhnF( zt06q8Dtm*edsl6UE!O&WDpYHbz>;qpxuYs*|ar)C3 z(D0|pVpX0MR%C1p#UM#8vZ*4@LdzSIYdyB|w|8oO?{E|(EED(020yh%Mn;&ADVonL zE|xv5zX+uRwNwI6v8X77*>k_9tjfP_BXFka`AiKp)Tpy;wQm53kwbeV+Z?k5*2JJG ztLS`a{b-AT*@+3U!O-UQ)3N}TEj$K2(6~(2h9P4-rKTG?-^XrgA~<~JDjynoR*TdW zUh|UfUW;~>YM=c?tL5{V@F~a;3QWIglV@5FAbV$C%dGAMGw2fPq&PkL*)z}VWyod#e8v*}E5L}k=<*SC4rmX}M|lewl(KV!)E z<^oz+9|U~aK>2Nh{3PjR_q0Fd5$_6iXtH%bh)bR=C!`+NM+)b$0R+0RPM?xvyGAoka zu)2gz8)mEg#he_XNBrncu)SoB$ahnp_Ayo|b3}?vEA(WGfFn@saRAQWwc07YyhX~w zX(mnu%_SbZl|)|Hi3p=Sbr@2^@)+QHjFBF&z_d~+v3^@Uu!uNz58!{+m}f-XXk*{S51AFa)LEM z_Qxy1XcXpG;ydC0?|43N(JeGt3^tqeI`PlAesNQ3+CX79rNWbG3C2M1Dx=u3`A}MA zO4p9Oh2^-SxA6Rbvv_D0aj3r6#)eF+eNQWK>^$Zem~sOG^zvE{87v^PL1ioV7sKb930(C9>P5 zsh(c!*o%6@eG6?U=A`oqrJs4qxcG}{`55(&5@mW0TJBtENz5R|;H^8hJv}|GIxik= zba%oB!Vm+&-h4nt^`y8yGHNoVv$Ck7d5OK0QBwgw=%lfML~ZGCAP`goEm- zwcm2^2xi2r`0q1HodxQraYl@{@a~t;;Hw4{?=V#hacCLOmX^pYq{d;Pw#sCjqS#zR z@4d`WJK#h;irIfIZJ7Gh+L6dlG^7vEohmUm*5-Nr?b|o+ketA$R23 z>fpqM{)apIvf8r96!F}be}5@-N3wSmooBh*h40f%CP4^Ge#|7Hd--bCD%46_}968AHeb@R-5 zc>QFVce(x8lBRj@nA^1MMf6XWh;A3t`sUcd)AdxhXTt`C*qssfz5Y?4JvM#opEu4A z!PF4o@M?hUU=m9$47AJ0bv_6CF=8ot@<=B1$jvBa#gQ2tEnaSWq3h{jU*M?WAqlv& zjX!eB*Ky^zP=e6BQMg8JleobpbVro^^LHCx-kk7T3j(h(BHOtrqAxqj+V_s<@F#5P zDUxt`j`f9wp)orDxnDw0gX%Gckz#jI;taN~2UV~wFZnjA16ryY{gJ0c$ z8v?5hd1vtFMp_13t+s$`YLKg##9P$gjK0%VZq!7c#8V2T}Te3!}#lq zlVE;>^38GNqR3hHsEjn4Ypp&z4@|^}C+D#Fd{C~8;>}a@ z5o)bJLLa+_kP&9JkBd}vY4*=YokmAa*K!94+WUN6MLqB59MaA_;(=o3ZzZ;mYH%Zi z0^2(R@2ARPX;1C7k&n6(g>pQwiPy5(qwoANh2R6jtPifr)3y%`KmUh^5I~fn4_0^H ziga*sp;u2F0>gtC2N=JAugAp5W^G+!gaWvqKXzrO+H}2pS+aB`Jtm0Y=+a)R0CSNQ z0h2!uX$X`l7TR-ZehY~ZibiFd$G!8W0h}8^3eN)*=-=lehJ{Z%y$rbA_{*`Inwfa6 z{W<2O*W(T;`G_j&>1x5ca>vm2Y&7V|{cq+7ElMYdi3Teo%A9R6yR=FNp+$9%{D(fs zlQ4&Zq`50q1=DMOT_*kG?RZ1YXwT8Vdl&UOTq)iaeYyY%na=v32UXt8iTi#F-6(n_Ep>^shX22a0*OQ|uQ+AA9@rPt)>#MxU~2h_$u)W+2Yck~`-OiHH@CGj8Y#ajuh+xUr2Q|v(xwpF^I(*ygaiw*nPAAHrWCDil`1J+r~^~h zE#u(sHPA%Zp4}&@SIyl}v&no>Yl~W_^ccf#-opL&0b1JZmr;7!?6VHUZ0n$^^0KmR zhHaxyWB(`MdH0Vw2Z{WY+{6-ok1Ove{0Hu=Een`j&H;IbVPvTEQkdkf}s zQDoQh-tx$I)=7DL42Km?%SMoiks|9tS;dRN2KTc^5qidYjSjONVqH@}T)rJdFal8) z9I_R(M{~~-aj&8eA#LhM`9?!z*S<^)HftsyvnsgvW*2o7BoDL`AvxAO&p0S8vbko~ z(W`BGlu{h`($0y~7u=Fhlm>HWlrNVp7F52fGzEcSOb6C7)CNKCNpDkA4x#LSDNeyQ zC5<>|#35cMwxHU<9b{$LT?%m>J8=7BzZ>Xfs~F6gUsemoU`&V`R+&2*q_4t|{YQ%> zk$hUkKL2?_u&K5&bZ>V5+Xt(M8?~B|2@A1e3q#{1IydV!W$QWXA6>8xa}F+Yw5}|W+$dQ02Y(C=E%~1p zX=&%*v<3<;MGd9~fHCb7x5H1@U$yo{qoa5K%U*WQ9%0iZ@_K3fLk)J3f#OyqG0w+p zVNiRPtsn`)^PqiQnX9?`M5xzvo>=Hd?bd%;`i%7|9az-%yvrr+AVGF3w(|S=Xax9{ zD<8aeV`}BSi5~Kmjd+;{)!Lp}aOYoEyF^x^hnNlB?|X|mjAk@q?EZ$yv)~1bwe}!UKtyfx+^ESQKt8YqADFb7T=>Opu555PQdUyb& z2z}7fktpfOI;O*%PITV0E(79xC5@9ScPRD}F;3t|aUF3@ByQw4RWQH8lsG_pJK}wr zjNKgZk2`*Zth%uqBi=Ek;(?%;Qoi3%P1 z)knL*Vn6JOqhK(Y+*%n=A;)p=1&8ZBIS-XhgZ4}=C&k9 zyY8dq+PaW*prKwoa+LCKwwrl)f6!Ze|KKRy2H8!G4=o8Duk zqk%mthhASxuZv#!0#BMH^gNW&jFehk+WGHlWTtlLE|c<&Do&Yf*vF(9J~?leaQ)|K6;QuC{_oph z8u>a>s!DCa1;iEtrM_M;=Y!S8%i(ZQ>VIH_zkkO>K`+wDgp#wjzKDZX@7=Ds!u}@k>YWdNY&%;d6B&E$304 z_1G|p6lv-H@*suXZnsAME;zz(HBwW9f=BPcDHZ5FE6OPi)8&N)Zpc4Kb7vu0s}rcI zFBtc4oKVobF*ox|f-EU29rS4f<33yqy>bEK9B9 zv~v?Wcr$fuv%LXm3vuO~{kG`8^Mz|nKsu1jE1wU9kvHE5S)}^<`T4bfCracma^t>pjg9=)TUCEK_%GuV9zeq;XXQDQ%v2c z-Jjk!lC^KF*i8GH!vA>{rdHk z0r)G7K;8jK=W`v7^OmgELCmH3r#cntvc&{nrkzn>KK&f7!B7!8)wDK6nvtFItL>>jQYH899Ij;fFlHy0GRzl~+)>%N((REokU^(A}DhOj=bdA!a#Rk65U7hq_nAZ)p}h znKic^_$4lBt`hR9cM~#ajoEE8&?F{RF}VTwO-&&u(zdqT3K~n3eyVD_jDOuGZ;9&J z&Y_?$hEG?9Yrn(n1pUWMga??J7*^snouD*T2z5%}choz$l>htpHIjF*#^ESzeMV** z&q%#b{iaN7LY>}a42;a}2=M$-C#ussZ}W)qH|%sH)voqU%cQY|Kr5YC#c>vtp54zG z_V#a74kxMx*3n>%)wM4QrA8<_hRWLM@VVb1Ch(7a1aXrMQ)07n=|aH~*QA{J`++Es zP#z#?DNLfHx09RtkbUp!hgQD)_xjh|mS%{sN%w4-&t?haYwhMi0=|YENKGt+4?i}x zm!UT)qWkluQ~F-b+HRW<6<$Vz=^~#XI_GaYVZY#l^6a--yp&B10ta zOHc{-dJWg-?ghm9=|p74x0XCy-}kC(Dn>8dnBa^C*1xIXZjHCv8v3IQ4q&l zX62sSM23N<)kIiq=peUCYdY^-Cc%Nn)Md?=09Biy-hMUg1!K3d2qFr*$d}^%^}slC zDBw5OOjX&@fOspRaZNMkF^b+c#lC!l>i>b#UKif|~Y@hA^?oWSDZY7{f@L+@<3sy8} zBs(G~I>Pyq=|>bA8cuRFBj#8~G>28`Jl^)6n>5ta7!i#y+*bj5!#N~48Q$^CasJ{f z{|J;3E)`mmztrYa@z7^Gklo7wfQsxZ^oRNB=Aa`)G&-l!UVqMpxRULWxd;@4S%_LB zPtk_#)2B~`?A1|*-Dn|uw5*A-sOB8IGh1V+*hBxclpx;x`1986lxk!9+C`iFwQuNs zPcW@Xh5~f{SY9m*eBD2G$X!$cO@V}X0-9lSG#&mlk>YRpd3d_ z?{Ora$q1Gxo3jy`tSBpUk4!sX+d8)+VL!SM42dqX_CV))Z}$4)tj&mLmOnC!-PFpA zi=l_0K6JtaFR|noN;I`5)3SUa(x=duz)kyCefIJjU`@C^HDS<6U^WqklAlJ~X9T7} zAP}{=g@tu)N_TNxMsT0E8f%EInkpeqH|XT7tHxWgYy-gLbCz@uC4Gj3=TL@(h_Pf^ zsq=PVOX#uMeIR%8)w!?%{eag=wA5VfhsAtn7nhbcI74W(6j{$2$$L9;*wB>Wz?t?# z0ZtHMa*qdF2|Wk6MBiw$6u#7WD#j|Juqz*0hm#`^ysz!3G{LH_~p=!NEU9paRth(T0?qsm_wj6_>lmRg116sLz5C?I* zJ*AwolFnI|rJ>Lp9OWoiW(+8)YQwX1OP`s|A+W?o_U6&Gm;)HsPIEGEHkc8IJ;K(k z8v*H%u}FR#tqLH8qqoh5*nUEn^4rz`c@ln%bWecpB~8}(gk{fUbZ*@rd%Pnm6#~O+ znzN6{FNp~x>vhPb0=5NxIDgi(BooJ|!GwZ2B4%H_{+xEkCLn~8=NVsFQ z_z`Ma&K6sQeTWtGWMd9<6%~pm0Wd}nuzypx$zQ`l!D+A za@fzIm8{YzT^PlMiPGQC>H%Z|D8?b0xZ4!SZYNxt>Y8G@U1&nkO&58RPi||g4bZRm zmgPbm5zn;I(X6>vHs^=vl)zLC1kbJ9)AphHLde?BixIvdp=FZ%FnQ{-NBGYe;cUUh z%t1*}>*_udiD{6G*MVa8a~gH9Xj`@@qwQtgnJxiR8}X;+JE?Qr*`#Af^tAN6W?J!a z28@v&O|If{{pk8-lGEhT+`a!%bxqNZMIjF{u--(WOfrYRV0tN{Dr2ET#+-Stg1z7f zY(0Ql>zsP5izhTM8gd9>i*Nrgxc#}95kGK~ab!U(!t8i3eo|xA3#px% z+&a0Ev*BDS$0h%CJ+0;ksD@O?!dH0` zsF>e3kr!Qw(l(8yUevOaN(bJ+RG>DAl%~F8oi=t`LHsO{HwW2H82LGn7@74czWHsy zr-@x)I{z+)1Wfvbe*j8iufg+%hjug?77ZXyCh_k53}gy+G%0^E2xZJne6lD_)$aQn zp{%2kMxDVbFP?E3cNuk`#!f7Zk7=!Jc%vsiqd4W}}U0^$MVC z?Gt>%e|3 z9N1Tn7sQms6Vb1qI!cL&k+qS2*Y(sGQBV5|jQ1UCtvjlUQArTZWAkxNPo6~|4DIXw zE_AwU-@Yw1MK;s$sW-$g84o7-pn(FNxDV!JxE;l~RN=`houXAM`py2=T42(4=68@BF{SoTX?)jtdW1#o*+c#Pt<+ns917Smu}d3%mw|^GX`&k34igY0q7ZeB__RTa^EP#F*$H9v!qD z@Dfsd={fSXIA`q38}i;YX5mqW*ppU*(JTtdBR%1k3Y3U~7+MK8ZfPYZhCeOQf26N( z37ijzM+2(~&!#Wd#e zr872@${Xo}^~6;MCq|8x1vjgx=w-Z6Vg8NEmb)E{s7P7x{VV|=o#`)t=9FW_xN=U= zyZSIawWXH^$45Hm9y|XeW3~?mpZ)^~h}xPv7{vuwaA^*yD$ETfMs*~_#W105!b0Qr-#Zn+ zZ~ZE@A{_@Pu|NHaZwsMdKCn1up7|FdQYXx;D@8Vbpd8NBJC>!qb9-7*C@HbYw#6za zR$3~sJ*?_;^pqSS&8*We*<#=4>v0j0w~H~dqR~p0g#P?r!Rp#0tx$tbCnq`#@=jxv zQ-N-0nMc^EWEy%Xt3DOq21B3H<|TD zgf*mQ$Ga(sw_UCGdKvx2&nG%!;tY9ST1BqkKS}X8KWEMtU`BLOtn5dw%m2s(8b4Ga zsF8KhDq=pF#*9XcwE3vB=SbXXNal@xZ}N@O`P^nCJI4N+)1`@|(#@PAEU;Cl4CD2| zWx^j6mdIrjnRNlLzD9h0S!|)MA*i_$pr{@Bs5HYSfZ<$su)e+;mG~f8=3yf<9A(s? zaacz{3Us3D^&P%-_^ov&PU`LF0zf&Vt}j?tyoyr;hZ?~+NLRwTJJMMNmX@aC-hR>N z3s#d0O_DfEy;NF#+&GQAQ#3luxh7Kk!)NUV2Zu$qxvIuE3woqmwJ##6KJNn9?t&e2 z1aUn+?;OO;&@@rJeJ#{%4n;_U;L(NHjyh3G@yPe;D(%t;LpYye_eT-{Z`Q_9Y zd#U^PTO3Zm`9%4swto$3`w*N^^0l^cQ`vJ`Ku^sIw4XNJ)Hu z2kyCaF6>hC^^;9Q>a113)dmHfrBabm!I#gH)PasXVdBPJd0t!Kdq^;CY-|} z8yyDewJB!P)iG9}Y%}5Sz&*G*B&wK2HFf=&r8&wNF;-T!H=t$xSM^H@ik{6DKZriC z^Q#L{53rmS6{{Z5)eavm?MScqdY)NPfr~D%#p+`~ZGx6vt-APeEpQ^TPEUgF;9hC+{gwA|NlMOBnt}z~kY83nFZe=XUTEYK_Jk`mtZYG56h^1`u;3(gsca-6H$1C(89ncE~bb#93aP`KhM=H zBwqZUsuS^JiSR(K`1PL7<0CTmLI+49I4f54O}7IK;7oc{Y_->r-xWfXot{XXclo1uyx7cg)y{~ViW z+#Thbbxxgev?U7hI8$r7BXQZ-4f>ZPgi~W7!|612^YF@l+AcEeR4aqUfmd?kIusOj zqL%X(y#R3?M0d3sm0D^DZr02JSM$1Co^qsbv1;f}%p--i8#UyL`IcfV*JpvWxHpEZ z#C(*~tcc@P)3yPNF)%Q=OTwPe{z8rm5-1MrE@U#SvfywUQo21|od2#v2srkWYUEvy zlM^2*k!ta-u+m9biYb5frbXZ;UP!-K>~ar`*aPV@7g`hS_ySR&h-g7yC!L%HlXU5= z%Y1Q7L9Ct;_)mUFmB-@7LLoU;mHQr2dMO^i!Hr_gGmmsS@xk%s`{XJIQBfDX9Om35 z%gO`%&PBwvfkE2-x@d=Tc#(p zlf3F*@~KjSfMhxS4M<^Ohhsug$z`sJ`V3yrlle0m^l<5yDycvfLShncGGnVqgG;r8 z#R&d|^a+46>8hu?fbG-GgFk@@yqZAM{uv!NFlA%01j>>qL$ESJ9j`Xan;*VkcW9`q zis}L}+=Xg4)eKf`m`6H{)+=&z+XavR%2LJ0edozZ$YOR;KxGPLzmRUeF0L7PIId{W z+Kjv5HHWI?-9uhuUlJo^h0*~UEoiWVfeL%usA}|1=Cus5AVRwHN%ivB90)#?i7OeH zo2Nk*zr~Qgv55KE3OrZO?f8&THL#v$4h-KC^5zeQ%53&*o@M$uBHOHH#R%r9Oh+53 ztR5rbX~24X}3lH%M@|m zkKF#zOlPfs+WxsjdInY+JTq4$$p^HcjvHdO&$+l;asT?Q83~~$b`rQ>JvoGo;45H@ zNBXya#QDrV_XEUMqxvIH3kc<(xn6hhUXt-bGnYhKUFk?@c^)bi|1Pt43%niaM?v=ThWA6qHG6?4H1lzsG4HOLS2 ztm>O4;rQYvZq^LY_0*jq*r*RAp)_NAZPd{7n$^8F@#w{$mG@k+2x^^eE|iwjZ>MxS z`gl5v%RR;$SY?D0FCOkz@m7aRRea~l<@}F^GXpcI5eM88sk3H72}t}IAXs2gb!N*~ zbNljgZKTq4(@OJ};W!VCc^d_kBAQazhq7XO!d8|<%xMi2iPp)=_)%0y_#+T$44^)G zqV%~vzxA%I>sN(ou5a-vIdiQR!-)1;1DWs=2=0vaJTN@hlr)qrntaUg>}+rAB+z9# zcQ1&vg+4P$pPT)j9GFIoY>UrrF?--4^P!@W%QHC5^tSTi zckTWt%#Bbu0n;XKVmV0Aa_g}!Udd{s5qASi7V2%9q5wLF%a~*mAs!iE!z=7etry?mqZHZ^j-PMY5Kv+rsv8?NJxm&M!>3a zW?+bwbpmE}eyX;I(+D;!es}o&BW~MkR)Q1c3{r>Vc?wd0SgG^+L{#?PN0C`Ud-Bw^ z{$YM%`@--NgP$wDw-3J$YfUKmR6Nw1m`B-#qaXF%rA z-QPy_oKyOxf57@V=rr;;O&=zMTP?{K*G+8mGczpN!Rr=7D-Gh84wwB+o#wf@ln-70 z%o1S)Cqo?SZyqA!hP!XeKl864NDU~{3 zb9uWZ$X6(+fcLNUn2GZlovn(BR^WRwiSFOlRT9m=_nJm@ym1SEd(pyKZR~>BfBIxY zHdgP5{p>|0fHJdES9p@o7;zcha=eYM>{GSj(HW5T8}n?ptXJ7EA?bGT1zN_M>In^E zvb~|&r$Db{dxNU@vx0ct>_Y6|k1iFZJqo_cC(X(JI$T zgLD%J$gHcFN1GcPw5J3cYKiWcdAs8EYu7$z*(P_gYThXx`%Pdq5!fl=7~U^EC@D*b zElcNpQn&{>MOqV=E03?Q7#YZNxGn9N;0Rc(-W@|jh88*DSJ&6qPqOgAxDAbWCjgM- zr9I+0AIYDW?K||*qy&V735mPU0!K_v*R6y|c^C+Ku&ac$%E!KJ=^-Hc zjM+dHXUXHgLiTbd(foYv5q*@3J1tI82Nw3s`GGOjj>O42K%@K-+n{kJWo%RZfFX)U zSoLn(#r2@>0t2@DW2BCqBp@Mrk6HlI97aKDf4h3mr@sLWK5L!ZyxyKy|Lt?y12*-x z)#mNhbOmUQW`GkFm!|f7-vN4AoQ%3ng_7ZE$O|ycLPxu8#3(&9I&R~qvwDV+-mGhN z@jxbO7~0u-8}y_*IMTRXyrizj$*6g^cT#Y-W+MkO6)kBmNir1pggB;PpVtbtwd*8g z`#r-R+ywS~x@yIn>}ai7$df=-mi);g52#FRES#D$nnn{X4I86$Rm0GwoQ$y0p4D3A z;Vyxe^TRfn2Aik%*Y3RGUnm>%2!T*C0PB1FnwvJywgHG-L-3bg?;3U5(i@yi3Lu56 z>N#hWphr&c$x#-hqj2Ku?|bwHrE#y|&WQSzq9=yMI97gD+z4Gy!1K6yF6KDi;E}Gv zO-?4!3*w1<-NF8rx=7q8$L+1J?(YGca6|wS`ET>%v86oN|ES}HH5idXBZJdV);Iu7 zCGc?&H-O?V2F00|SU+kO@O##SlIq_-JPtGLBEGn`NV<)0sJfv9{(52P)`Oiy?1!Vr zde*NjHYC)4zUQD$D@c>*9Va{bIHwn>-Ln49LAmaDj}G$(pPCIZ-bskLh{5EUoo^JA z{w&mP*#zDzFXNq+a`oQT^I@NNPft|MorvZCB$6nIm+*ou({+6KK0NazpICe`oTMSL zD9E|CZD*e9xV7I2@FuH15e`>)#n-cmG6?iqvVBZ)DxD zZs4FYB1%qT@}HHaz5^QYxP}KBB}^2O68q+7n0DsxnV!u3ZQ`q!3cA(KqXZArWKlL* zdFT8^XWsjO@+4xfhZ{IduB4)(f})Sg1F8GMqpm?a)_d!op)36YW6qAe8D@+!JTvQy zZ^@b}nEx}o(SWMHe72+!c3Gk|@+|S4ZWm>39ZPe)=E(L+O&$)#tnJ+wzLGB-;aE|& zQDUcBs#TVi19X;ZWczaD%-Hhd3@?s00m;qKLG;H>HnE0*0+N)L%Ttc^D|##GDXdd6 zJq(i>f7~NER;HJc6%eE1Tif0Bm@+J& zj7}n1*qa+w^Qq8ooW%>mt8S{pg%W0`AaLtHVI=;T^>4a=B*uef1$>FS5-=V@MpYkw(7e6;gRaX6en`mi`XITJUz2#Hn!9*+M&hNbX0@;eD%_-s*2rHLe5 zv@AfoYTxO)62hsZRHPNznImi&_&Q!`Zj4x@M=cK$4vat<-&8-)`eTSdh;v9;Lv5)M z-h!$RImqU~*%`LbI1?Fr@1_9LGuC^<7=nxhMd-(eF<=T3_N8NUe+f{cCXO4q)Zt*5 z#8DhZ!W1~H)Pj8RFmxWfv#~w==rXxTeYeeG5ooo)!dh}+PCz@ldh3L9+OC&&VQQZB zrcd6IWK47Lgdgkfjd-TZs^Ti3Cjg>VWuaMhTn$XsjgjqE|EsPukB2&H|GtV!B4jBl z5@KvAvag}++YA|7mM~+>p1ri%%f9c%%!tV{WN$+#!b}*ULbgyCvJB6e(fxaV_w#x^ z{xsWnIp1@xb6ubJ=PFNMTNOr=a7%_yioVqC1&C_}3_i@zX*%NuDlgHXTpqcb&)BxI zh9{i+nIQ!<#-C<+utRoxYP)@)VD0+%&}IL;x#s$O+X`ZKWv6hBB8wX@7cM8O0M4(g zfR5+V6~z(E82np?{#vh}_RY#J4cAtz7-?M5=48fOXsV4x4kzZ#@2&YA0lbs8HunvQ zZ81pW(!$2wo*gcgnkbQIT#4*_6k1SxZpP3gKv^WFII&xa*hcOUDeP~Puskhon2-T? zmU;?s7xGM2>`O;*rO8>1E|q*dex`O|{|ZUa3R z-LI6YqVc^#V{5ZPRTj?UszZeLt0?PZ^S6K9y2LcVA*m4Dc>jjg={H74)}$wf*eIWXoYK%&~R# z2`s55b{OGU5EjI89H&MFwa+(%C@&b1!=+)?2WwyqPH&AW4a5QNn)n%>z zI$)%bt0djb98$_f!#J}8NEKY6DnU>B^JPt`w z(2iaa-d%5!+rm}s=&Un?q?4%rw)oryv~(;c+neO}=84x@EqkGbBp_s&xuJ7+<3cG7@I9(ac8=>T$c-KzSKr`Ww1G3Iw? zA0bnBkgo4rH9_*>HX>groL&~yWeidGDb9&Gu6wRH>Dm~br~tgYpj+UT&XuCF3UKl8 zt-R+x;p?3y6TXL1V!|Xgk2D0j2N+x^^?c!f!L2BpVv`$baOOYXNU>o;+FZ~jcSxO= zi1#INa7~YB6XWdL&Db?tybv0x@uIbfKG%(t`N626Y#UVMqBxlHqqy`>1IacGTSGsY z2a6qg;SCTpJU>3g@eBl%Rs((c1sy`D=@=8J4^C)zK;YtZ(!7orD1JQO3FCx{BH?h8 zQqxCU@SJ}0ljgW<8V{H!*a$xX>KdqHBwK;_z1}FcGWG{WeD)jZ;a|FHZ7i6&#a zhdCPs=XLA(W~%6#%;9_pk%;l94MR+?_NGRT-D3@*wvFE_7HIY(S)XP)QX(X?(%OwJOJ zB!staPbD7vAAAm4detJWXI_8x!wpHX&Hwq8i&0sE(h~Kgf|#&RyhFO6};E3{7e@kUyE#G*7*PySPZ%Pp==FUj)ln#v36Gp&~ z&zYKP8xIPibh)AWv2Gp9B|A<^32$Q%3JOG7Q{skKF{Lp6#Ad?_o?I*&mP@xHE&s*S z%9h6oa)9-s4NA(#qe#;GS{r9W^F03?t3%`gY}j-aBp;vlRf|m}pxqxpcjf`T!lov< zaw)@+7su9aI=6mV32E_dTxgGe3##~>yOUVl-<8eTI=-~>19sqrmh(QnD$_LkM~#Rg!}Fwjzji2(|wf3tb; zN47dAfj(^q6E!`GrjcJOn6e^P7-VA|;VfhWVzw0mXP#`FY$nz?u;C_-Z1LWj7q~U! z2h@;W8o3!6zbog+w=i7Ty!uHMFAX9-7>G+huY|BFz;FW%x!jwBrFIH`1HUbx4WkDX zA~srFm5$EFU&T2Y5+iyO7{{3k#)A{Jsh$Ns*%mD<-v)k z<~z(ruPx^{pHMd;7&qNj-8f&SU_+haN20PUr8$#~-GB2vN^yZ1OtM0)V_<^Ny~-oe zo(({J8HIh@bozGM(1SY^!+H*s(XrCJP``lVsnJ@^prEtHkmF zR*vk$@?Eaa2G2->Njl#~gZTm~iH@(!`;()?cafJfMTHQ9Nvdj_FX1 z_+m<;#PZehp|XTvcT3bl4qOoyj~fpdo^kI_M1-(oN+{lO#4Lt9f4)9TaAwn7(`KaR2V-NMPkmJt9-b75eff~nJhW0((z@>Bc4L|XxrTM{?-Z0sf_KNSy2@TN zDNY&G13zR^V&=EF7!uU^y9EHzX*&T7L1#5BNDRR6$k_@^s_4U71%v2vz*~?hJv1(5w0_>QUH%E|+DuB%7&1n?438>r zi`Umbr;{}|82f-Jx-;)5%BWjYkPsg)+ss}(Y0_z#^q#OQY-~gna0g3N@#xasLHHOi z$cpsDbmq2J)}Bz}hIKwG6SCHi9sG1~DEv`G8Vgv*bnA@f#)* zu5fP_D~OR>YR3Ew8lUqlZpVMmK`I8>E=QCH1jQpDY%-#t2M7G`oo4=N)cHK>ww!bK zjKz7k;?YV_t(bCV^ZPS)F%k+8%T9%c$(SNbq?3^U$G-#0my@zN#B?!~vBq=H;c50V z)gen?8}{s!&+U3883TM>fdg7-S|H4JwO;kptKfPdkeiT^u4o5xSLO2qm#bBgkW{gX z`M-q%SPRKN*GK#aQ!Sf{tX6);g;>H4KnKxG9uoo9q)W105`!&{$Kp7~pyK3>Qx zxIMxXXf_uRpginHJRwu@;0jN40g1gWrUdjCFUU1X3DYdUiqd zmr);Zg)mhaRTP3fwg>ZMMpxQQ4*j**v17-}ha|vv z{n*o17K7Lv+H1|g$OnsI_*mRc$#R`CDp65UaW~Yb4VVt?3H=fj0n#sqpc0Mp)v;;WX+~5-#;+g2tCWUWUBt8? z5Cf)6eMn0&G$O)pye0jb(8U~y-LY%b7g$ulI!TH87TS2kqK4phI7=hWMVo4WtM9Sp zZSy^4Mc=0L%4&h;bAQcDs&OITGc@CDOE}$=UC(*elgZE-+WOMhcVUs|K$rTm^u~DT za-=;TNo=$6Y3JNCGgIHRzc`o4K6wZzcwZJ^*{k8(EIn)>LzI;~Z)h^PCF-9oGcbbZj4tK%m-M5O?bx z<%4w9ygzN~nQN(G~`uHT%Z>eDES;8>Be7|2UsEw5 zD{_C#%bmM_il**1;j9mb;$v>XJ~tXtYWUF=*qG}E$xoUzS^Xc*sT3!2P}jh5z}y#l z2MX5N&)QG7*jZbLIxLU3*c8*?7FGf>YQ7g`N%Vl1c7U4WDQyFVBM*_> z43uI?CS$`l6<eDJVlrG)#UlFD2Cvil>+q4ZLnkm!^_wmyv@6PNe%3kZ@Fji z7%B+CYv;G<+eU|l+7#<7cDzUen7!1{KOmKrkfk3(mLVHo_G)_Zf{It(d{gj~G}>@y ze<`WE{VdvP-l~Zz24!(C-ZmQJ{WUZH*hGx`7avuJd++P_W7hb?JM7Sf`$HomnWSS* z8_VIqUc@ld38%AgP}*?!Qx;swP?SrRK_cz)8ik#3Y1>2v>d7~+^Ba^pfAP}Py!5g$ zc^JfIXzDU|*(K~fokvnUPH^`aR!0)Nqobqu0|q6_JZ=}H-MUrqIMuu-prtD4cEJ~K zI;tA^nbrE@=nOYABFm_>=y>=TYSHceEqqKQaP82$a8zmZtaNaF3p?r-;8%BG$|%?K_iBeOH^M^roTO zMll(@@M_$KEZ^NJCD+nm=ZAU``^S!l6JPRrVlDpUrxm@Fr-${Mg^q=+aI+2mRS1|* zv7ar|+nm{;Tqf*_qz+zKZe6zA)`#+j+Xk?{v@i$WkCI`(-yGSeD(;099-h{?sKwx^ zn|fFyl}>A{$Ly^@%DYq3?iWzsN9sJYBY!>S9Q5^tUMT;^-sTRsgzN)h97_+; z@F=Wi5`bP(w+W()0jfq;TI$oSY+Fn8*9MKs*LE_Q!n}6&-huMn<7?*WGF@Lz!Pxw zdihuPsV0+|71s(jR2K52jJ@n!6!tdh)eQCms>=ZgQ6oaSUuOk8a%!Vo`W<1`pY2Rg zjRdjy_zYG0@p}RNmTK*>b9e_Hf2)m-hR~+wJ=0*o*A_tHHB;%Svqm5AlBLW>er7{K zP-X;ZpU=hnRKtz&Aq(J(luQiKNk6CH`;c;griIs_$Jf^nMIKV|pEYS;R*BfT`z;Jc zEu_Ph@C-~`cSr5E3oL}%4ojfNlE2s8yNo@n2J(Zi?)0~>w&V{1_f^?|!}}M2p3`L* zdR99l#g#|K9`-h?u5Bphc9tl(0hi6J2&J0aw}2+GYB7{^{1Ze6xxKxO`LGWmzhWTf zzBd;;%Rd)cF6anwHrBy26&%NpAHTa@1k6s{U+_)0Mu2BBq8ts(cOWbK(CUlYIcD-l z-XLpYmu%@KmN;-ANfOO-{d7Bl@4bx5HkdRjlI&NP-YvPprl=6_uDjP*W2z@J?W|2_ zZezO}vI?;I&Y#`f&rz$ zNAWdq$pI4_>hM{dMOUQLvYxTb!dM?t;p_W}2CzM2aeOwb*Xy zn?BV93K{?J>wkz5Eu(qysLhzGVGTjnTFK`dY6Q&&EpDfa<~CTb?hnPg&LqMdoL5}F;d;0{u!7i-K52RU>6Ki^L(_Sv;W?s zOF6!W^y}^|-CB|}EeY?5AgavbK>}_)|pmZs`FQ_W}v!cK^>2=^fu`E~^ zr~t-r-ZD5ByMRvviTKl+2FbR=9NL9R2@_OqnhadKG8z$Xw43ovOk;6Y{-oi6{0HRf zJ95hx?De57h>IHtxXn#>d|K$vvM?5 zPMUK{jGQvlZV0&Yoh-Td%Q@s9iOe7o3U{tb^KUf05e`kb#iM;j+VF5w;NnVb+EVk( z0egdZ@JxTkRj0pR0#=EOhiQisTmV&cXG9ts8$;4xt2QCjlU>A-cpjwP*>U0S@fIt9i=%w~{WVo}i+l_uWSubiUSlpw?yNObvs1W^=sUfB9fKzv5{RFl$9&i7j8Cv>z^ zcLT+k>hsh*#4TRUc92)W^(k4n7@iYT+bwUa&^KUatYDl6+F)~HDEI!<{qV-x#>NqB zO4^yYxVXOx_pz-myqcxT)Bg*Dy&EwhrSgV(pzPmA9_YW+NL!RhG>O7OJnGKhWXn?0 zvrsX3_Y@<&yJh{TSGPYNnZ>a`!yTgqS+F+y)ZZKx_rBLH!-4CdT&CDDX<56_)w|zg zwC8@cFx>+VP7hh3auB%th@BZSsxf%grOv@fGuzi#+-);g-A!~V96|De>^J`)c(e#QDwSYBOvyu6b0#1`LFkx90X9QQ_$31 zfDmz`jBz$ph(%wW(^F!D1Tu0_drg<^xM_erD*@Go$=*Aq1q3)9KAlOuZEMx9M;p^} z<^$H2fj!nSDD|W6jP?TayKV1BNKny%a=ZF}(C7z7pq^e~$`1(*6_YFkt~l{AqM$%I zf7X5OWQ>jK#>)NAzF57`9;u2lsyf+HIz`(+Vg}mpzYb~*z*cRFwSH(CAid^O1Wt2Z zvtm0Y|j+1{bUg;t20mo0rMDDQ@y*wDfhSY`|Pa9Ki8XQo!y=%wXz3_ zMa>#nQXLfvO>K(x+GRX;FGP_}T~+y5lu!2Bu=d{0+S|Fb-CzD$>L&*H)Z2^{GLBOGDmFtoKw0eZyR){9`|wM5;Z=LTpLVCLrrRKE6>sf1xBheH zh$$%N*T#aw)ICEqwZ3v@dt-TnX%cJb<6EZssmb~N1k_%|pm;bEq-z3tcg+{X{{5!9 z$9vjcN;szizxnc8+#Rej;+blVemV{4gfq*w+CmY5DtuN-bVFshltw^z}&pm`fxjzIB5CjAyq6O1ha)<90c;h z(3Kyc=0f#dyDZhRmZat>f^eKaHm@zp2Azqoe0lfJk6~*FX0Am`9!uk^clt9u7azG- zQgYOoyDO;l+)N7M_OwxQb? zdZ6RurlNR8k20=;g`HXdxe2A|oM4?ri8FCk)3jGU!g9I}X?=6*@<$n|WOEp)K3}dU z{Zj!Aa~NB@0R>O=XmT%DZm9N(s>m4CcZl9RVQEiP0g2awVU>pUy zbo_e9NJksG?2pHHgbw&bBLITaX7X^cCX++sEHAJ7t4_>{iV(Vj%lz7?hC;q;NM#*& zD{zBtb3<61m6M{GK@3u!v{1f&*!3yXZCA;m+Yf169YKw(e$2Z%_KNgmPJNCcXC({TLN$s7inPuP1I zARiGlbdsFhvC`!WfN$xz5?6G4s-S&D(Ak9{YYWOUc8~r!SoUGguzg;66al7>oTmMF zH$a-Wg0R_qP?@7=0o5{Bth|hins4qGs{Y$4Y=Jp~_zZqJYi$U-W7!^AVRQh1)4Eq? z_IYLJqq-(n+6nPFNKtA+{n|$R$EX6N7J|JU+Oq{5cT}#BF%>OKRJR5~#ZGF2 zKQbjg?u&sF3$pyV;KtgT7O-^yDcm!&t9^DGuDdcKazi5(pYzR8si{ha-7yseEB?wq zl^{5vQ~&tG!LiY!oosk=5RM+!-i*V3qgipYrM_weFiL$6gp<(xA+hxIQ-B=%`XV10 z{%_!zaki5CVs~p@(ekHL%YeNCY;cY zmGC_+NG?jtf$)q+jEmb}ePBVIE+LPrpJJwSDuHRYC4zf@q;##D3Zs2CWGl){^z`eK zOtc57l|l#L6DSph-E$Az(!gZ=^r>qaICc2Qk?>6DHOeI#`8!IQucXf8>9|*K(uw~! ztwE>Zc`nIpS`dhIooI8>RkM`91yB3cd_L65#DB#Yy|-y|*@vux-lf?aARi%Bm-)!# zDI%CK-z|Kz0-{sWTi`1ai-`5iT20Wyv;85Tc)y6+J!RWa9Ho(7FW0uo3D zdv&(pQ3xr_w#v=N@p|k2I-(_l{?z+N%V5y5Yhr9{(G%BjJ8Npe&piQ$G4|oCL9~s? zh{k`1WgXi-vL7shJ?|5dA#;U%l9wk~@|Kq)`laAmu;Sh9(~hhfg3fa1s~5-4wHCPvEF~NOS+1`^ z6XC8rWaAT{u|lnG41FV0L_@G`+@WNBXs>$GXUS8e@TAY6@=LJd4 zfEN;Q;3YL;0Qp0{mwWu|AT3cNT2}1^mWC3{tdNlg-VH-fO#2JaqH2&(*}M5vfZ<)L z`82P-9vLsE%$5Ig=Pb)$u8%&>KC5a=#09w z{b-@qaE2N!h?R zwC7p9NIm~l;Hr0#YQgri8Zjtrf0&bU+?utNz|xWyuT@dT)@Ikk^T+(|ai9LNG0)DO z0ITQbR)ODvOZs0GV3$1*HxU+YM*oj7`$fX{cq`N)KPlpVwB|9I>M`FDGS}bUf`1OP z;3Sa0`ZHZHC={hKp;P{BR2xzg4d&4Wc4VxHUw#C_~9nmn9pnLDx!GDc#+x}Ta42A?Ol;~-TC&{6+uq@XBh!l3$rRveHEv#r zkh`TVO$qoyYdcZ3Mn`A$7E+&0%QHR~K|+$(^+9c8tlbcQmzFaW!Ml_Q@MX3C{rjqG z?mqC>FE=QsyC*IgRAJlng`4naXhPG#FG87`xX>>+p}dm&dE2Jl3_0M9YXEteI$0S` zS4~nc_*@{x0T6Z$*AJ zlaf}EGTs{DGP?^A68EXy2taOj^(6<;V^O^-wQ9!0Bd7+#F*~4>UA1kYkQ;~B7oOjv zldD_rRJTX^%&Jb%Q7IfI7CzNq(WRDMY7Hl-j*$i7yYq!k5!$;%OM6@Sh#mRSlW-j{ z2X)N}0bz>5);rSZ=-v%>IXY*~`1;z-1ykymL;!o-?~JJR!iO~$b}LKyEubI3!cE11 zd5%#wI4Qb_TDwo`e*$Oa01YSJvmCi+VCmTu#Uld;(Cl``EO7B-nt{lUM1l$@_+^m$ z!F+gBf7Mn$Uh%ki<9P4zz(O^o%x-+{W9Ah# zGdnJ&v$XMn(=YvkoR1ngJANIu&L@B8-r}L??)2V}R*XtSsancOR=O3a$t?zHB6tQr zaU+>;!#>9twXF6kd2rw0i21=iy@r3$gBgn3>%Y!-yYrB`Bm)`io)+<91`s~R1OdH+ zuXi5{Iw}k#D?bZRIQy9|WD!4<6m*QPfs?Sb;7#@aWVk2D^;>~rsFoa{;3@S}^5w$= zbPe2uHdWt);I;SC($Wr&TMMEJ!OF(v$LT)Q6iC`N4||I~%s8k%V3I#pl%tx)t*}Vs zQ;yu-QS$}8PtNssKaa<2864n8*y?~ytbvhKeo}F#nkoJSU9k5cbsFq2Kd5e2zBZAQ zRMTle`HrQZR0j=F=x!ValZbFx(6pfuZh$WW7>4ve;{*TaKaiswJn(*PBRR}hkA*L? zjG5XKkcHa)?jF|_MMWg&&?2f3{(>xw5{Iun-$MA9P`|GBF_;RuLGjtZ2$!8S*{O!S zAhMZuh}wIlK-Mk9)zsjGLD%M_WD(c{(a}XmXRS}$8o3&*SbN6(`QyU^`nb^D6Q=H} zzt$yUc~n}~N$zSt=%@|u+|JEsIbYLwnw1w`YrN7&5&?To_9N8Zlj_NzFFh;D*gYns zvQcHq`*Wp7s%)9sf=~VA=UL~AL;iGUDR-CVCfp}MCyMAp)aI1@E+C9CG_b#>-J_XQfz_Y<9q?f~NA*P|T_5r}1&}d;VZMd59VOho2vW^+J6zsOxR0>xfCO ziPqc))c+S8rna0^VwkU)bzVzUlX_f&_zarl(3vol^|u}?2r-+a?2py_?6E{x*k;GdbUU!TsIqa7FM$-zAur8lUzeB}eM2sF@Z zx8RUIuYj)21ZQ;bOnt1`pTR?J4sWr4L9G+KEBM>H6Kdk136fcAev~RY@}+4R*#7?b z1`g!jM_`m2tr@hjH!)6mpym76=S(`K_~Kz@R&l`_&uZT?)V+K;>=i4)<#CY9F7vXc z_`{=?B{v*=ZaKWZ<&b^zXyEfxmoUl$55+XuqXfAQ50o4|Pn-(>>5^u8kg+p&sWM+G zEVKPfP{u^_@~ZNx(K!QmJSqQY2Fu^{l7Z28%YXW^va@^qSCR$0Ocy@n=jHW2K(yHH z3EA>RM?UDw?!xuxVE$@GwHqV}KB1gydm$x}u#z}HE*zG#$=#voh<5G>>iTjd{E6Kf z*wAkIUTS`BwXe6=1>pN!3c5*Wvc?87wEQPewF!;KcS!G9PD>)2#(I1E`XoY<1QlN9 z<>agd=`*PX#i@lTO9q)1a|MKlt28w?`yYBH*mYmJn|0{Rm#spX+iCWLc(IOn$v+)` zbWL&3KlSyw9yxNv>u{1_@XYnUN=iy2A3qu>2+S}0Q$#k^!9ZISxYm|FZV(~HeN8;>Cch>`Hz{na zP$nz4$f1c{FVbizNLxl(WZpCq`Vmo}uwWmb=b)>oEmJ8NFMWe}OOKob zLxE-&N>rt|dk6$*U1MVw@SSTYypc4eKa{Mqc?&nxBP=YuRaiUXp(>^+`a6Hk>;?sO zx%K?snfZ>6$I?*nwUNOgAz6_`jE66e*yC9_o_MK&<+@jo($B{{&*zZkx5D2?`uSZ^ zQdJFHGfoopbJCjr{@p>fvYPY_s?fN1>sR|uz_-+wIXkr$b%llM^_DEQtWPc^XZ(1os`}uZP=u)xPZ^rH)xYvVm9jWm#l5OK%9C@)QdvAE zGan^a!sq>%m>p1F)x#6mG}b%cOPqmBuwy63vAsJ}R$E|u^Hz{cTN$QMm{auUeZPAB?!Nd3e`}?-Od4&DL VgX)MM&DzxW=xQ5jRchXf`ak(E8k+zB literal 29100 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 Hng9O)11 + + + + + +extended + + +Normal Hierarchical Deterministic (HD) Key Derivation (BIP32) +cluster_parent + + +parent_private_key + +Parent Private Key + + +child_private_key + +Child Private Key + + +parent_private_key->child_private_key + + + + +hmac + + + + + +One-Way Hash + + + +parent_chain_code + +Parent Chain Code + + +parent_chain_code->hmac + + + + +parent_public_key + +Parent Public Key + + +child_public_key + +Child Public Key + + +parent_public_key->child_public_key + + + + +parent_public_key->hmac + + + + +rel2 +Derived +Mathematical +Relationship + + +child_private_key->rel2 + + + + +child_chain_code + +Child Chain Code + + + +child_public_key->rel2 + + + + +i_norm + +Index Number + + +i_norm->hmac + + + + +hmac->child_private_key + + + + +hmac->child_chain_code + + + + +hmac->child_public_key + + + + +rel1 +Mathematical +Relationship + + +rel1->parent_private_key + + + + + +rel1->parent_public_key + + + + + diff --git a/images/en-hd-root-keys.svg b/images/en-hd-root-keys.svg new file mode 100644 index 00000000..f5c623cf --- /dev/null +++ b/images/en-hd-root-keys.svg @@ -0,0 +1,111 @@ + + + + + + +extended + +Creation Of The Master Keys +cluster_y + +cluster_x + + +entropy + +128, 256, +Or 512 Bits +Of Entropy +(The Seed) + + +hmac + + + + + +512-Bit +One-Way +Hash + + +entropy->hmac + + + + +private_key + +Master +Private Key + + +hmac->private_key + + +256 Bits + + +chain_code + +Master +Chain Code + + +hmac->chain_code + + +256 Bits + + +public_key + +Master +Public Key + + +private_key->public_key + + + + +extended_private_key + +Master +Extended +Private Key + + +private_key->extended_private_key + + + + +chain_code->extended_private_key + + + + +extended_public_key + +Master +Extended +Public Key + + +chain_code->extended_public_key + + + + +public_key->extended_public_key + + + + + From c3a755a721282bc00db81c99b16fdabe73be4f4b Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Mon, 22 Sep 2014 21:38:31 -0400 Subject: [PATCH 087/102] fixes --- ch04.asciidoc | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/ch04.asciidoc b/ch04.asciidoc index ad84e979..6a7204e5 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -540,19 +540,19 @@ HD wallets offer two major advantages over random (non-deterministic) keys. Firs The second advantage of HD wallets is that users can create a sequence of public keys without having access to the corresponding private keys. This allows HD wallets to be used on an insecure server or in a receive-only capacity, issuing a different public key for each transaction. The public keys do not need to be pre-loaded or derived in advance, yet the server doesn't have the private keys that can spend the funds. -===== Creating an HD wallet from a seed +===== HD wallet creation from a seed HD wallets are created from a single _root seed_, which is a 128, 256 or 512 bit random number. Everything else in the HD wallet is deterministically derived from this root seed, which makes it possible to re-create the entire HD wallet from that seed in any compatible HD wallet. This makes it easy to backup, restore, export and import HD wallets containing thousands or even millions of keys by simply transferring only the root seed. The root seed is most often represented by a _mnemonic word sequence_, as described in the previous section <>, to make it easier for people to transcribe and store it. The process of creating the master keys and master chain code for an HD wallet is shown below: [[HDWalletFromSeed]] -.Hierarchical Deterministic Wallet: Creating master keys and chain code from a root seed +.Creating master keys and chain code from a root seed image::images/HDWalletFromRootSeed.svg["HDWalletFromRootSeed"] The root seed is input into the HMAC-SHA512 algorithm and the resulting hash is used to create a _master private key_ (m) and a _master chain code_. The master private key (m) then generates a corresponding master public key (M), using the normal elliptic curve multiplication process +m * G+ that we saw previously in this chapter. The chain code is used to introduce entropy in the function that creates child keys from parent keys, as we will see in the next section. -===== Deriving child private keys +===== Private child key derivation Hierarchical Deterministic wallets use a _child key derivation_ (CKD) function to derive children keys from parent keys. @@ -569,12 +569,12 @@ These three items are combined and hashed to generate children keys, as follows: The parent public key, chain code and the index number are combined and hashed with the HMAC-SHA512 algorithm to produce a 512 bit hash. The resulting hash is split into two halfs. The right-half 256 bits of the hash output become the chain code for the child. The left-half 256 bits of the hash and the index number are added to the parent private key to produce the child private key. In the diagram below, we see this illustrated with the index set to 0 to produce the 0'th (first by index) child of the parent. [[CKDpriv]] -.Hierarchical Deterministic Wallet: Extending a parent private key to create a child private key +.Extending a parent private key to create a child private key image::images/ChildPrivateDerivation.svg["ChildPrivateDerivation"] Changing the index allows us to extend the parent and create the other children in the sequence, e.g. Child 0, Child 1, Child 2 etc. Each parent key can have 2 billion children keys. -Repeating the process one level down the tree, each child can become a parent and in combination with the child chain code and an index can create it's own children, in an infinite number of generations. +Repeating the process one level down the tree, each child can in turn become a parent and create it's own children, in an infinite number of generations. ===== Using derived child keys @@ -597,13 +597,13 @@ Think of an extended key as the root of a branch in the tree structure of the HD [TIP] ==== -An extended key consists of a key and chain code and is the root of one of the branches in an HD wallet tree structure. With an extended key you can derive all the nodes in that branch. +An extended key consists of a private or public key and chain code. An extended key can create children generating its own branch in the tree structure. Sharing an extended key gives access to the entire branch. ==== [[public_key_derivation]] -===== Deriving child public keys +===== Public child key derivation -As mentioned above, a very useful characteristic of hierarchical deterministic wallets is the ability to derive public child keys from public parent keys, _without_ having the private keys. A child public key derived directly from the parent public key is exactly the same as if you first derived the child private key from the parent private key and then computed the child public key corresponding to it. +As mentioned above, a very useful characteristic of hierarchical deterministic wallets is the ability to derive public child keys from public parent keys, _without_ having the private keys. This gives us two ways to derive a child public key: either from the child private key, or directly from the parent public key. An extended public key can be used, therefore, to derive all of the _public_ keys (and only the public keys) in that branch of the HD wallet structure. @@ -614,38 +614,42 @@ One common application of this solution is to install an extended public key on Another common application of this solution is for cold-storage or hardware wallets. In that scenario, the extended private key can be stored on a paper wallet or hardware device (such as a Trezor hardware wallet), while the extended public key can be kept online. The user can create "receive" addresses at will, while the private keys are safely stored offline. To spend the funds, they can use the extended private key on an offline signing bitcoin client or sign transactions on the hardware wallet device (e.g. Trezor). [[CKDpub]] -.Hierarchical Deterministic Wallet: Extending a parent public key to create a child public key +.Extending a parent public key to create a child public key image::images/ChildPublicDerivation.svg["ChildPublicDerivation"] -===== Hardened derivation and notation +===== Hardened child key derivation The ability to derive a branch of public keys from an extended public key is very useful, but it comes with a potential risk. Access to an extended public key does not give access to child private keys. However, because the extended public key contains the chain code, if a child private key is known, or somehow leaked, it can be used with the chain code to derive all the other child private keys. A single leaked child private key, together with a parent chain code, reveals all the private keys of all the children. Worse, the child private key together with a parent chain code can be used to deduce the parent private key. To counter this risk, HD wallets use an alternative derivation function called _hardened derivation_, which "breaks" the relationship between parent public key and child chain code. The hardened derivation function uses the parent private key to derive the child chain code, instead of the parent public key. This creates a "firewall" in the parent/child sequence, with a chain code that cannot be used to compromise a parent or sibling private key. The hardened derivation function looks almost identical to the normal child private key derivation, except that the parent private key is used as input to the hash function, instead of the parent public key, as shown in the diagram below: [[CKDprime]] -.Hierarchical Deterministic Wallet: Hardened derivation of a child key, omits the parent public key +.Hardened derivation of a child key, omits the parent public key image::images/ChildHardPrivateDerivation.svg["ChildHardPrivateDerivation"] -When the hardened private derivation function is used, the resulting child private key and chain code are completely different from what would result from the normal derivation function. The resulting "branch" of keys can be used to produce extended public keys which are not vulnerable, since the chain code they contain cannot be exploited to reveal any private keys. Hardened derivation is therefore used to create a "gap" in the tree above the level where extended public keys are used. In simple terms, if you want to use the convenience of an extended public key to derive branches of public keys, without exposing yourself to the risk of a leaked chain code, you should derive it from a hardened parent, rather than a normal parent. As a best practice, the level-1 children of the master keys are always derived through the hardened derivation, to prevent compromise of the master keys. +When the hardened private derivation function is used, the resulting child private key and chain code are completely different from what would result from the normal derivation function. The resulting "branch" of keys can be used to produce extended public keys which are not vulnerable, since the chain code they contain cannot be exploited to reveal any private keys. Hardened derivation is therefore used to create a "gap" in the tree above the level where extended public keys are used. + +In simple terms, if you want to use the convenience of an extended public key to derive branches of public keys, without exposing yourself to the risk of a leaked chain code, you should derive it from a hardened parent, rather than a normal parent. As a best practice, the level-1 children of the master keys are always derived through the hardened derivation, to prevent compromise of the master keys. ===== Index numbers for normal and hardened derivation -The index number used int he derivation function is a 32-bit integer. To easily distinguish between keys derived through the normal derivation function versus keys derived through hardened derivation, this index number is split into two ranges. Index numbers between 0 and 2^31^ (0x0 to 0x80000000) are used _only_ for normal derivation. Index numbers between 2^31^ and 2^32^ (0x80000000 to 0x8FFFFFFF) are used _only_ for hardened derivation. Therefore, if the index number is less than 2^31^, that means the child is normal, whereas if the index number is above 2^31^, the child is hardened. +The index number used in the derivation function is a 32-bit integer. To easily distinguish between keys derived through the normal derivation function versus keys derived through hardened derivation, this index number is split into two ranges. Index numbers between 0 and 2^31^ (0x0 to 0x80000000) are used _only_ for normal derivation. Index numbers between 2^31^ and 2^32^ (0x80000000 to 0x8FFFFFFF) are used _only_ for hardened derivation. Therefore, if the index number is less than 2^31^, that means the child is normal, whereas if the index number is above 2^31^, the child is hardened. -To make the index number easier to read and display, the index number for hardened children is displayed starting from zero, but with a prime symbol ('). The first normal child key is therefore displayed as 0, whereas the first hardened child (index 0x80000000) is displayed as 0'. In sequence then, the second hardened key would have index 0x80000001 and would be displayed as 1', and so on. When you see an HD wallet index i', that means 2^31^+i +To make the index number easier to read and display, the index number for hardened children is displayed starting from zero, but with a prime symbol. The first normal child key is therefore displayed as 0, whereas the first hardened child (index 0x80000000) is displayed as 0'. In sequence then, the second hardened key would have index 0x80000001 and would be displayed as 1', and so on. When you see an HD wallet index i', that means 2^31^+i -===== HD key identifier (path) +===== HD wallet key identifier (path) -Keys in an HD wallet are identified using a "path" naming convention, with each level of the tree separated by a slash (/) character. Private keys derived from the master private key start with "m". Public keys derived from the master public key start with "M". Each level of the tree shows the index number of the child key. The key identified by the path is the right most index with its "ancestry" read from right to left up to the master key from which it was derived. For example, identifier m/x/y/z describes the key which is the z-th child of key m/x/y, which is the y-th child of key m/x, which is the x-th child of m. +Keys in an HD wallet are identified using a "path" naming convention, with each level of the tree separated by a slash (/) character. Private keys derived from the master private key start with "m". Public keys derived from the master public key start with "M". Therefore, the first child private key of the master private key is m/0. The first child public key is M/0. The second grandchild of the first child is m/0/1 and so on. + +The "ancestry" of a key is read from right to left, until you reach the master key from which it was derived. For example, identifier m/x/y/z describes the key which is the z-th child of key m/x/y, which is the y-th child of key m/x, which is the x-th child of m. -.HD wallet path indicating derived keys +.HD wallet path examples |======= | m/0 | The first (0) child private key from the master private key (m) -| m/0/0 | The first grandchild private key of the first child. +| m/0/0 | The first grandchild private key of the first child (m/0) | m/0'/0 | The first normal grandchild of the first _hardened_ child (m/0') -| m/1/0 | The first grandchild private key of the second child (m/1). -| M/23/17/0/0 | The first great-great-grandchild public key of the first great-grandchild of the 18th grandchild of the 24th child. +| m/1/0 | The first grandchild private key of the second child (m/1) +| M/23/17/0/0 | The first great-great-grandchild public key of the first great-grandchild of the 18th grandchild of the 24th child |======= ===== Navigating the HD wallet tree structure From b58da2bca0810ad8c2d9c6e0c4f4700a9b146b39 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Mon, 22 Sep 2014 23:26:35 -0400 Subject: [PATCH 088/102] replaced SVG with PNG --- ch04.asciidoc | 8 +- images/ChildHardPrivateDerivation.png | Bin 0 -> 36671 bytes images/ChildHardPrivateDerivation.svg | 4 - images/ChildPrivateDerivation.png | Bin 0 -> 38102 bytes images/ChildPrivateDerivation.svg | 4 - images/ChildPublicDerivation.png | Bin 0 -> 28169 bytes images/ChildPublicDerivation.svg | 4 - images/HDWalletFromRootSeed.png | Bin 0 -> 31959 bytes images/HDWalletFromRootSeed.svg | 4 - images/en-hd-overview.svg | 135 -------------------------- images/en-hd-root-keys.svg | 111 --------------------- 11 files changed, 4 insertions(+), 266 deletions(-) create mode 100644 images/ChildHardPrivateDerivation.png delete mode 100644 images/ChildHardPrivateDerivation.svg create mode 100644 images/ChildPrivateDerivation.png delete mode 100644 images/ChildPrivateDerivation.svg create mode 100644 images/ChildPublicDerivation.png delete mode 100644 images/ChildPublicDerivation.svg create mode 100644 images/HDWalletFromRootSeed.png delete mode 100644 images/HDWalletFromRootSeed.svg delete mode 100644 images/en-hd-overview.svg delete mode 100644 images/en-hd-root-keys.svg diff --git a/ch04.asciidoc b/ch04.asciidoc index 6a7204e5..4b041452 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -548,7 +548,7 @@ The process of creating the master keys and master chain code for an HD wallet i [[HDWalletFromSeed]] .Creating master keys and chain code from a root seed -image::images/HDWalletFromRootSeed.svg["HDWalletFromRootSeed"] +image::images/HDWalletFromRootSeed.png["HDWalletFromRootSeed"] The root seed is input into the HMAC-SHA512 algorithm and the resulting hash is used to create a _master private key_ (m) and a _master chain code_. The master private key (m) then generates a corresponding master public key (M), using the normal elliptic curve multiplication process +m * G+ that we saw previously in this chapter. The chain code is used to introduce entropy in the function that creates child keys from parent keys, as we will see in the next section. @@ -570,7 +570,7 @@ The parent public key, chain code and the index number are combined and hashed w [[CKDpriv]] .Extending a parent private key to create a child private key -image::images/ChildPrivateDerivation.svg["ChildPrivateDerivation"] +image::images/ChildPrivateDerivation.png["ChildPrivateDerivation"] Changing the index allows us to extend the parent and create the other children in the sequence, e.g. Child 0, Child 1, Child 2 etc. Each parent key can have 2 billion children keys. @@ -615,7 +615,7 @@ Another common application of this solution is for cold-storage or hardware wall [[CKDpub]] .Extending a parent public key to create a child public key -image::images/ChildPublicDerivation.svg["ChildPublicDerivation"] +image::images/ChildPublicDerivation.png["ChildPublicDerivation"] ===== Hardened child key derivation @@ -625,7 +625,7 @@ To counter this risk, HD wallets use an alternative derivation function called _ [[CKDprime]] .Hardened derivation of a child key, omits the parent public key -image::images/ChildHardPrivateDerivation.svg["ChildHardPrivateDerivation"] +image::images/ChildHardPrivateDerivation.png["ChildHardPrivateDerivation"] When the hardened private derivation function is used, the resulting child private key and chain code are completely different from what would result from the normal derivation function. The resulting "branch" of keys can be used to produce extended public keys which are not vulnerable, since the chain code they contain cannot be exploited to reveal any private keys. Hardened derivation is therefore used to create a "gap" in the tree above the level where extended public keys are used. diff --git a/images/ChildHardPrivateDerivation.png b/images/ChildHardPrivateDerivation.png new file mode 100644 index 0000000000000000000000000000000000000000..2817314951fd6326bcb1cdf88824892e16f18247 GIT binary patch literal 36671 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 literal 0 HcmV?d00001 diff --git a/images/ChildHardPrivateDerivation.svg b/images/ChildHardPrivateDerivation.svg deleted file mode 100644 index 38821215..00000000 --- a/images/ChildHardPrivateDerivation.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/images/ChildPrivateDerivation.png b/images/ChildPrivateDerivation.png new file mode 100644 index 0000000000000000000000000000000000000000..519b33b2dd9c5f580440aa5a6aa129c63fc31754 GIT binary patch literal 38102 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�^NI}2u?&fz!|CD%1H(fD}v=___pRT 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 AqW}N^ literal 0 HcmV?d00001 diff --git a/images/ChildPrivateDerivation.svg b/images/ChildPrivateDerivation.svg deleted file mode 100644 index 05575877..00000000 --- a/images/ChildPrivateDerivation.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/images/ChildPublicDerivation.png b/images/ChildPublicDerivation.png new file mode 100644 index 0000000000000000000000000000000000000000..7466659d1a0290f22e1eb5651118a47bba595084 GIT binary patch literal 28169 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

k>TK9@nWIOq4`!+Mt1_{9l%nX&u z1L|2mn%mz#{u2{Qa#&Te6C9&=3Qcem-`IJCt+6&g?RXzQpfEw!@@6{&r|dFby1z)M z#f-OI+DskyZ3b7J7uijRqMD@P;w8OQ%S3IIog1P>L^K--<%0tadjCuWgt#+e(JK_K z^h~Oh1YYEX&+9cdlyrn~n7z69Y*W@PsPigfMgYm`d^JEHiBP8>s38638a#L^nzXSu zhmem?pzN2?aEDO}v|h0fk#JqJU{d|(@P{_mG-uiOj1xWMb2J~)Sg88lrT-g}z+bR! zAjitSsl{irEqh_+AWiuDKamG4Z?O|E7G3oJO;Z0gvw^>{(-yFh|9!5*UIEMp)*_Hd z>|B-ys^T_d;M?V*wMD}4>SNI{^(s?OWvoeeU!jcyNrfL96(rc@=l{h|1OH4e^@(8o V3yGZtu*KV@+sax>WeTXE{|DxFH0uBW literal 0 HcmV?d00001 diff --git a/images/ChildPublicDerivation.svg b/images/ChildPublicDerivation.svg deleted file mode 100644 index 7d3518fd..00000000 --- a/images/ChildPublicDerivation.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/images/HDWalletFromRootSeed.png b/images/HDWalletFromRootSeed.png new file mode 100644 index 0000000000000000000000000000000000000000..ce59af81f02002237300689e5e026ccb438afb0c GIT binary patch literal 31959 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 - - - diff --git a/images/en-hd-overview.svg b/images/en-hd-overview.svg deleted file mode 100644 index f9d8cb5c..00000000 --- a/images/en-hd-overview.svg +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - -extended - - -Normal Hierarchical Deterministic (HD) Key Derivation (BIP32) -cluster_parent - - -parent_private_key - -Parent Private Key - - -child_private_key - -Child Private Key - - -parent_private_key->child_private_key - - - - -hmac - - - - - -One-Way Hash - - - -parent_chain_code - -Parent Chain Code - - -parent_chain_code->hmac - - - - -parent_public_key - -Parent Public Key - - -child_public_key - -Child Public Key - - -parent_public_key->child_public_key - - - - -parent_public_key->hmac - - - - -rel2 -Derived -Mathematical -Relationship - - -child_private_key->rel2 - - - - -child_chain_code - -Child Chain Code - - - -child_public_key->rel2 - - - - -i_norm - -Index Number - - -i_norm->hmac - - - - -hmac->child_private_key - - - - -hmac->child_chain_code - - - - -hmac->child_public_key - - - - -rel1 -Mathematical -Relationship - - -rel1->parent_private_key - - - - - -rel1->parent_public_key - - - - - diff --git a/images/en-hd-root-keys.svg b/images/en-hd-root-keys.svg deleted file mode 100644 index f5c623cf..00000000 --- a/images/en-hd-root-keys.svg +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -extended - -Creation Of The Master Keys -cluster_y - -cluster_x - - -entropy - -128, 256, -Or 512 Bits -Of Entropy -(The Seed) - - -hmac - - - - - -512-Bit -One-Way -Hash - - -entropy->hmac - - - - -private_key - -Master -Private Key - - -hmac->private_key - - -256 Bits - - -chain_code - -Master -Chain Code - - -hmac->chain_code - - -256 Bits - - -public_key - -Master -Public Key - - -private_key->public_key - - - - -extended_private_key - -Master -Extended -Private Key - - -private_key->extended_private_key - - - - -chain_code->extended_private_key - - - - -extended_public_key - -Master -Extended -Public Key - - -chain_code->extended_public_key - - - - -public_key->extended_public_key - - - - - From 43c0b0357f08e2e2514ae5d89efc2487387f768d Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Tue, 23 Sep 2014 18:45:35 -0400 Subject: [PATCH 089/102] bip32 examples, xpub, xprv encoding --- ch04.asciidoc | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/ch04.asciidoc b/ch04.asciidoc index 4b041452..026cd4b2 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -600,6 +600,19 @@ Think of an extended key as the root of a branch in the tree structure of the HD An extended key consists of a private or public key and chain code. An extended key can create children generating its own branch in the tree structure. Sharing an extended key gives access to the entire branch. ==== +Extended keys are encoded using Base58Check, to easily export and import between different BIP0032 compatible wallets. The Base58Check coding for extended keys uses a special version number that results in the prefix "xprv" and "xpub" when encoded in base 58 characters, to make them easily recognizable. Since the extended key is 512 or 513 bits, it is also much longer than other Base58Check encoded strings we have seen previously. + +Here's an example of an extended private key, encoded in Base58Check: +---- +xprv9tyUQV64JT5qs3RSTJkXCWKMyUgoQp7F3hA1xzG6ZGu6u6Q9VMNjGr67Lctvy5P8oyaYAL9CAWrUE9i6GoNMKUga5biW6Hx4tws2six3b9c +---- + +Here's the corresponding extended public key, also encoded in Base58Check: +---- +xpub67xpozcx8pe95XVuZLHXZeG6XWXHpGq6Qv5cmNfi7cS5mtjJ2tgypeQbBs2UAR6KECeeMVKZBPLrtJunSDMstweyLXhRgPxdp14sk9tJPW9 +---- + + [[public_key_derivation]] ===== Public child key derivation @@ -677,6 +690,29 @@ On the fourth level "change", an HD wallet has two sub-trees, one for creating r | m/44'/2'/0'/0/1 | The first private key in the Litecoin main account, for signing transactions |======= +===== Experimenting with HD wallets using sx-tools + +Using the command line tool +sx+, introduced in chapter 3, you can experiment with generating and extending BIP0032 deterministic keys, as well as displaying them in different formats: + +==== +[source, bash] +---- +$ sx hd-seed > m # create a new master private key from a seed and store in file "m" +$ cat m # show the master extended private key +xprv9s21ZrQH143K38iQ9Y5p6qoB8C75TE71NfpyQPdfGvzghDt39DHPFpovvtWZaRgY5uPwV7RpEgHs7cvdgfiSjLjjbuGKGcjRyU7RGGSS8Xa +$ cat m | sx hd-pub 0 # generate the M/0 extended public key +xpub67xpozcx8pe95XVuZLHXZeG6XWXHpGq6Qv5cmNfi7cS5mtjJ2tgypeQbBs2UAR6KECeeMVKZBPLrtJunSDMstweyLXhRgPxdp14sk9tJPW9 +$ cat m | sx hd-priv 0 # generate the m/0 extended private key +xprv9tyUQV64JT5qs3RSTJkXCWKMyUgoQp7F3hA1xzG6ZGu6u6Q9VMNjGr67Lctvy5P8oyaYAL9CAWrUE9i6GoNMKUga5biW6Hx4tws2six3b9c +$ cat m | sx hd-priv 0 | sx hd-to-wif # show the private key of m/0 as a WIF +L1pbvV86crAGoDzqmgY85xURkz3c435Z9nirMt52UbnGjYMzKBUN +$ cat m | sx hd-pub 0 | sx hd-to-address # show the bitcoin address of M/0 +1CHCnCjgMNb6digimckNQ6TBVcTWBAmPHK +$ cat m | sx hd-priv 0 | sx hd-priv 12 --hard | sx hd-priv 4 # generate m/0/12'/4 +xprv9yL8ndfdPVeDWJenF18oiHguRUj8jHmVrqqD97YQHeTcR3LCeh53q5PXPkLsy2kRaqgwoS6YZBLatRZRyUeAkRPe1kLR1P6Mn7jUrXFquUt +---- +==== + === Advanced Keys and Addresses ==== Encrypted Private Keys (BIP0038) From 9bbc27c9de312fc7d5b9f3845be477ad1df2b85b Mon Sep 17 00:00:00 2001 From: "andreas@antonopoulos.com" Date: Tue, 23 Sep 2014 15:49:06 -0700 Subject: [PATCH 090/102] Updated book.asciidoc --- book.asciidoc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/book.asciidoc b/book.asciidoc index 5f71ab85..7ca0d98b 100644 --- a/book.asciidoc +++ b/book.asciidoc @@ -20,4 +20,6 @@ include::ch07.asciidoc[] include::ch08.asciidoc[] -include::ch09.asciidoc[] \ No newline at end of file +include::ch09.asciidoc[] + +include::appdx-scriptops.asciidoc[] \ No newline at end of file From bd66bdc814679091c1d20ce019961fdce9be58ba Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Wed, 24 Sep 2014 09:09:31 -0700 Subject: [PATCH 091/102] Light copy editing of some of the recent commits --- ch04.asciidoc | 8 ++++---- ch08.asciidoc | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ch04.asciidoc b/ch04.asciidoc index 026cd4b2..f520ce15 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -574,13 +574,13 @@ image::images/ChildPrivateDerivation.png["ChildPrivateDerivation"] Changing the index allows us to extend the parent and create the other children in the sequence, e.g. Child 0, Child 1, Child 2 etc. Each parent key can have 2 billion children keys. -Repeating the process one level down the tree, each child can in turn become a parent and create it's own children, in an infinite number of generations. +Repeating the process one level down the tree, each child can in turn become a parent and create its own children, in an infinite number of generations. ===== Using derived child keys Child private keys are indistinguishable from non-deterministic (random) keys. Because the derivation function is a one way function, the child key cannot be used to find the parent key. The child key can also not be used to find any siblings. If you have the n~th~ child, you cannot find its siblings, such as the n-1 child or the n+1 child, or any other children that are part of the sequence. Only the parent key and chain code can derive all the children. Without the child chain code, the child key cannot be used to derive any grandchildren either. You need both the child private key and the child chain code to start a new branch and derive grandchildren. -So what can the child private key be used for, on its own? It can be used to make a public key and a bitcoin address. Then, it can be used to sign transactions to spend anything paid to that address. +So what can the child private key be used for on its own? It can be used to make a public key and a bitcoin address. Then, it can be used to sign transactions to spend anything paid to that address. [TIP] ==== @@ -648,7 +648,7 @@ In simple terms, if you want to use the convenience of an extended public key to The index number used in the derivation function is a 32-bit integer. To easily distinguish between keys derived through the normal derivation function versus keys derived through hardened derivation, this index number is split into two ranges. Index numbers between 0 and 2^31^ (0x0 to 0x80000000) are used _only_ for normal derivation. Index numbers between 2^31^ and 2^32^ (0x80000000 to 0x8FFFFFFF) are used _only_ for hardened derivation. Therefore, if the index number is less than 2^31^, that means the child is normal, whereas if the index number is above 2^31^, the child is hardened. -To make the index number easier to read and display, the index number for hardened children is displayed starting from zero, but with a prime symbol. The first normal child key is therefore displayed as 0, whereas the first hardened child (index 0x80000000) is displayed as 0'. In sequence then, the second hardened key would have index 0x80000001 and would be displayed as 1', and so on. When you see an HD wallet index i', that means 2^31^+i +To make the index number easier to read and display, the index number for hardened children is displayed starting from zero, but with a prime symbol. The first normal child key is therefore displayed as 0, whereas the first hardened child (index 0x80000000) is displayed as 0'. In sequence then, the second hardened key would have index 0x80000001 and would be displayed as 1', and so on. When you see an HD wallet index i', that means 2^31^+i. ===== HD wallet key identifier (path) @@ -677,7 +677,7 @@ BIP0044 specifies the structure as consisting of five pre-defined tree levels: +m / purpose' / coin_type' / account' / change / address_index+ -The first level "purpose" is always set to +44'+. The second level "coin_type" specifies the type of crypto-currency coin, allowing for multi-currency HD wallets where each currency has it's own subtree under the second level. There are three currencies defined for now: Bitcoin is m/44'/0', Bitcoin Testnet is m/44'/1' and Litecoin is m/44'/2'. +The first level "purpose" is always set to +44'+. The second level "coin_type" specifies the type of crypto-currency coin, allowing for multi-currency HD wallets where each currency has its own subtree under the second level. There are three currencies defined for now: Bitcoin is m/44'/0', Bitcoin Testnet is m/44'/1' and Litecoin is m/44'/2'. The third level of the tree is "account", which allows users to subdivide their wallets into separate logical sub-accounts, for accounting or organizational purposes. For example, an HD wallet might contain two bitcoin "accounts": m/44'/0'/0' and m/44'/0'/1'. Each account is the root of its own sub-tree. diff --git a/ch08.asciidoc b/ch08.asciidoc index 1f64a080..e428edbb 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -800,7 +800,7 @@ Let's examine a practical example of a 51% attack. In the first chapter we looke In our example, malicious attacker Mallory goes to Carol's gallery and purchases a beautiful triptych painting depicting Satoshi Nakamoto as Prometheus. Carol sells "The Great Fire" paintings for $250,000 in bitcoin, to Mallory. Instead of waiting for six or more confirmations on the transaction, Carol wraps and hands the paintings to Mallory after only one confirmation. Mallory works with an accomplice, Paul, who operates a large mining pool and the accomplice launches a 51% attack as soon as Mallory's transaction is included in a block. Paul directs the mining pool to re-mine the same block height as the block containing Mallory's transaction replacing Mallory's payment to Carol with a transaction that double-spends the same input as Mallory's payment. The double-spend transaction consumes the same UTXO and pays it back to Mallory's wallet, instead of paying it to Carol, essentially allowing Mallory to keep the bitcoin. Paul then directs the mining pool to mine an additional block, so as to make the chain containing the double-spend transaction longer than the original chain (causing a fork below the block containing Mallory's transaction). When the blockchain fork resolves in favor of the new (longer) chain, the double-spent transaction replaces the original payment to Carol. Carol is now missing the three paintings and also has no bitcoin payment. Throughout all this activity, Paul's mining pool participants may remain blissfully unaware of the double-spend attempt, as they mine with automated miners and cannot monitor every transaction or block. -To protect against this kind of attack, a merchant selling large-value items must wait at least six confirmations before giving the product to the buyer. Alternatively, the merchant should use an escrow multi-signature account, again waiting for several confirmations after the escrow account is funded. The more confirmations elapse, the harder it becomes to invalidate a transaction with a 51% attack. For large-value items, payment by bitcoin will still be convenient and efficient even if the buyer has to wait 24 hrs for delivery, which would ensure 144 confirmations. +To protect against this kind of attack, a merchant selling large-value items must wait at least six confirmations before giving the product to the buyer. Alternatively, the merchant should use an escrow multi-signature account, again waiting for several confirmations after the escrow account is funded. The more confirmations elapse, the harder it becomes to invalidate a transaction with a 51% attack. For large-value items, payment by bitcoin will still be convenient and efficient even if the buyer has to wait 24 hours for delivery, which would ensure 144 confirmations. In addition to a double-spend attack, the other scenario for a consensus attack is to deny service to specific bitcoin participants (specific bitcoin addresses). An attacker with a majority of the mining power can simply ignore specific transactions. If they are included in a block mined by another miner the attacker can deliberately fork and re-mine that block, again excluding the specific transactions. This type of attack can result in a sustained denial of service against a specific address or set of addresses for as long as the attacker controls the majority of the mining power. From 59b2b890dbde222981c8b0ecd9723ff4f45b4b8c Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Wed, 24 Sep 2014 09:28:58 -0700 Subject: [PATCH 092/102] I believe m/44'/2'/0'/0/1 is the *second* private key not the first --- ch04.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch04.asciidoc b/ch04.asciidoc index f520ce15..0f4971f7 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -687,7 +687,7 @@ On the fourth level "change", an HD wallet has two sub-trees, one for creating r |======= | M/44'/0'/0'/0/2 | The third receiving public key for the primary bitcoin account | M/44'/0'/3'/1/14 | The fifteenth change-address public key for the fourth bitcoin account -| m/44'/2'/0'/0/1 | The first private key in the Litecoin main account, for signing transactions +| m/44'/2'/0'/0/1 | The second private key in the Litecoin main account, for signing transactions |======= ===== Experimenting with HD wallets using sx-tools From e294098edad7f7ddc77855ce22a0fd814f0e3ff0 Mon Sep 17 00:00:00 2001 From: "Minh T. Nguyen" Date: Wed, 24 Sep 2014 09:41:55 -0700 Subject: [PATCH 093/102] Being specific about the exclusiveness of the end points for normal vs. hardened key ranges and fixing some hexadecimal conversions --- ch04.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch04.asciidoc b/ch04.asciidoc index 0f4971f7..39ed62f6 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -646,7 +646,7 @@ In simple terms, if you want to use the convenience of an extended public key to ===== Index numbers for normal and hardened derivation -The index number used in the derivation function is a 32-bit integer. To easily distinguish between keys derived through the normal derivation function versus keys derived through hardened derivation, this index number is split into two ranges. Index numbers between 0 and 2^31^ (0x0 to 0x80000000) are used _only_ for normal derivation. Index numbers between 2^31^ and 2^32^ (0x80000000 to 0x8FFFFFFF) are used _only_ for hardened derivation. Therefore, if the index number is less than 2^31^, that means the child is normal, whereas if the index number is above 2^31^, the child is hardened. +The index number used in the derivation function is a 32-bit integer. To easily distinguish between keys derived through the normal derivation function versus keys derived through hardened derivation, this index number is split into two ranges. Index numbers between 0 and 2^31^-1 (0x0 to 0x7FFFFFFF) are used _only_ for normal derivation. Index numbers between 2^31^ and 2^32^-1 (0x80000000 to 0xFFFFFFFF) are used _only_ for hardened derivation. Therefore, if the index number is less than 2^31^, that means the child is normal, whereas if the index number is equal or above 2^31^, the child is hardened. To make the index number easier to read and display, the index number for hardened children is displayed starting from zero, but with a prime symbol. The first normal child key is therefore displayed as 0, whereas the first hardened child (index 0x80000000) is displayed as 0'. In sequence then, the second hardened key would have index 0x80000001 and would be displayed as 1', and so on. When you see an HD wallet index i', that means 2^31^+i. From 8235b51ca85f6b82770cf3586ad1d0e1daecde22 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Thu, 25 Sep 2014 12:02:07 -0400 Subject: [PATCH 094/102] review comments from Allyson MacDonald --- appdx-sx.asciidoc | 132 ++++++++++ ch01.asciidoc | 12 +- ch02.asciidoc | 20 +- ch03.asciidoc | 441 +++++++++++++++++++--------------- ch04.asciidoc | 81 +++++-- ch05.asciidoc | 79 ++++-- ch06.asciidoc | 9 +- ch07.asciidoc | 16 +- ch08.asciidoc | 85 ++++--- ch09.asciidoc | 11 +- code/hash_example.py | 15 +- code/proof-of-work-example.py | 21 +- preface.asciidoc | 6 +- 13 files changed, 621 insertions(+), 307 deletions(-) create mode 100644 appdx-sx.asciidoc mode change 100644 => 100755 code/proof-of-work-example.py diff --git a/appdx-sx.asciidoc b/appdx-sx.asciidoc new file mode 100644 index 00000000..8d9f18b6 --- /dev/null +++ b/appdx-sx.asciidoc @@ -0,0 +1,132 @@ +[[sx_cmds]] +== Appendix: Available commands with sx tools + +---- +The sx commands are: + +DEPRECATED + ELECTRUM STYLE DETERMINISTIC KEYS AND ADDRESSES + genaddr Generate a Bitcoin address deterministically from a wallet + seed or master public key. + genpriv Generate a private key deterministically from a seed. + genpub Generate a public key deterministically from a wallet + seed or master public key. + mpk Extract a master public key from a deterministic wallet seed. + newseed Create a new deterministic wallet seed. + +EXPERIMENTAL + APPS + wallet Experimental command line wallet. + +OFFLINE BLOCKCHAIN + HEADERS + showblkhead Show the details of a block header. + +OFFLINE KEYS AND ADDRESSES + BASIC + addr See Bitcoin address of a public or private key. + embed-addr Generate an address used for embedding record of data into the blockchain + get-pubkey Get the pubkey of an address if available + newkey Create a new private key. + pubkey See the public part of a private key. + validaddr Validate an address. + BRAIN STORAGE + brainwallet Make 256 bit bitcoin private key from an arbitrary passphrase. + mnemonic Make 12 word mnemonic out of 128 bit electrum or bip32 seed. + HD / BIP32 + hd-priv Create an private HD key from another HD private key. + hd-pub Create an HD public key from another HD private or public key. + hd-seed Create a random new HD key. + hd-to-address Convert an HD public or private key to a Bitcoin address. + hd-to-wif Convert an HD private key to a WIF private key. + MULTISIG ADDRESSES + scripthash Create BIP 16 script hash address from raw script hex. + STEALTH + stealth-addr See a stealth address from given input. + stealth-initiate Initiate a new stealth payment. + stealth-newkey Generate new stealth keys and an address. + stealth-show-addr Show details for a stealth address. + stealth-uncover Uncover a stealth address. + stealth-uncover-secret Uncover a stealth secret. + +OFFLINE TRANSACTIONS + SCRIPTING + mktx Create an unsigned tx. + rawscript Create the raw hex representation from a script. + set-input Set a transaction input. + showscript Show the details of a raw script. + showtx Show the details of a transaction. + sign-input Sign a transaction input. + unwrap Validates checksum and recovers version byte and original data from hexstring. + validsig Validate a transaction input's signature. + wrap Adds version byte and checksum to hexstring. + +ONLINE (BITCOIN P2P) + BLOCKCHAIN UPDATES + sendtx-node Send transaction to a single node. + sendtx-p2p Send tx to bitcoin network. + +ONLINE (BLOCKCHAIN.INFO) + BLOCKCHAIN QUERIES (blockchain.info) + bci-fetch-last-height Fetch the last block height using blockchain.info. + bci-history Get list of output points, values, and their spends + from blockchain.info + BLOCKCHAIN UPDATES + sendtx-bci Send tx to blockchain.info/pushtx. + +ONLINE (BLOCKEXPLORER.COM) + BLOCKCHAIN QUERIES (blockexplorer.com) + blke-fetch-transaction Fetches a transaction from blockexplorer.com + +ONLINE (OBELISK) + BLOCKCHAIN QUERIES + balance Show balance of a Bitcoin address in satoshis. + fetch-block-header Fetch raw block header. + fetch-last-height Fetch the last block height. + fetch-stealth Fetch a stealth information using a network connection to + make requests against the obelisk load balancer backend. + fetch-transaction Fetch a raw transaction using a network connection to + make requests against the obelisk load balancer backend. + fetch-transaction-index Fetch block height and index in block of transaction. + get-utxo Get enough unspent transaction outputs from a given set of + addresses to pay a given number of satoshis + history Get list of output points, values, and their spends for an + address. grep can filter for just unspent outputs which can + be fed into mktx. + validtx Validate a transaction. + BLOCKCHAIN UPDATES + sendtx-obelisk Send tx to obelisk server. + BLOCKCHAIN WATCHING + monitor Monitor an address. + watchtx Watch transactions from the network searching for a certain hash. + OBELISK ADMIN + initchain Initialize a new blockchain. + +UTILITY + EC MATH + ec-add-modp Calculate the result of INTEGER + INTEGER. + ec-multiply Multiply an integer and a point together. + ec-tweak-add Calculate the result of POINT + INTEGER * G. + FORMAT (BASE 58) + base58-decode Convert from base58 to hex + base58-encode Convert from hex to base58 + FORMAT (BASE58CHECK) + base58check-decode Convert from base58check to hex + base58check-encode Convert from hex to base58check + decode-addr Decode a address from base58check form to internal RIPEMD representation + encode-addr Encode an address from internal RIPEMD representation to base58check form + FORMAT (WIF) + secret-to-wif Convert a secret exponent value to Wallet Import Format + wif-to-secret Convert a Wallet Import Format to secret exponent value. + HASHES + ripemd-hash RIPEMD hash data from STDIN. + sha256 Perform SHA256 hash of data. + MISC + qrcode Generate Bitcoin QR codes offline. + SATOSHI MATH + btc Convert Satoshis into Bitcoins. + satoshi Convert Bitcoins into Satoshis. + +See 'sx help COMMAND' for more information on a specific command. + +---- \ No newline at end of file diff --git a/ch01.asciidoc b/ch01.asciidoc index 55e159d5..5cb2fb66 100644 --- a/ch01.asciidoc +++ b/ch01.asciidoc @@ -17,7 +17,8 @@ Behind the scenes, bitcoin is also the name of the protocol, a network and a dis In this chapter we'll get started by explaining some of the main concepts and terms, getting the necessary software and using bitcoin for simple transactions. In following chapters we'll start unwrapping the layers of technology that make bitcoin possible and examine the inner workings of the bitcoin network and protocol. -=== Before Bitcoin +.Digital Currencies Before Bitcoin +**** The emergence of viable digital money is closely linked to developments in cryptography. This is not surprising when one considers the fundamental challenges involved with using bits to represent value that can be exchanged for goods and services. Two fundamental questions for anyone accepting digital money are: @@ -37,6 +38,8 @@ Bitcoin represents the culmination of decades of research in cryptography and di * A de-centralized mathematical and deterministic currency issuance (distributed mining), and; * A de-centralized transaction verification system (transaction script). +**** + === History of Bitcoin Bitcoin was invented in 2008 by Satoshi Nakamoto with the publication of a paper titled "Bitcoin: A Peer-to-Peer Electronic Cash System". Satoshi Nakamoto combined several prior inventions such as b-money and HashCash to create a completely de-centralized electronic cash system that does not rely on a central authority for currency issuance or settlement and validation of transactions. The key innovation was to use a distributed computation system (called a "Proof-Of-Work" algorithm) to conduct a global "election" every 10 minutes, allowing the de-centralized network to arrive at _consensus_ about the state of transactions. This elegantly solves the issue of double-spend where a single currency unit can be spent twice. Previously, the double-spend problem was a weakness of digital currency and was addressed by clearing all transactions through a central clearinghouse. @@ -91,7 +94,7 @@ Web Client:: Web-clients are accessed through a web browser and store the user's .Mobile Bitcoin **** -Mobile clients for smartphones, such as those based on the Android system, can either operate as full clients, light clients or web clients. Some mobile clients are synchronized with a web or desktop client, providing a multi-platform wallet across multiple devices but with a common source of funds. See <> +Mobile clients for smartphones, such as those based on the Android system, can either operate as full clients, light clients or web clients. Some mobile clients are synchronized with a web or desktop client, providing a multi-platform wallet across multiple devices but with a common source of funds. **** The choice of bitcoin client depends on how much control the user wants over funds. A full client will offer the highest level of control and independence for the user, but in turn puts the burden of backups and security on the user. On the other end of the range of choices, a web client is the easiest to set up and use, but the tradeoff with a web client is that counterparty risk is introduced because security and control is shared by the user and the owner of the web service. If a web-wallet service is compromised, as many have been, the users can lose all their funds. Conversely, if a user has a full client without adequate backups, they may lose their funds through a computer mishap. @@ -152,9 +155,10 @@ There are three other methods for getting bitcoins as a new user: Alice was introduced to bitcoin by a friend and so she has an easy way of getting her first bitcoin while she waits for her account on a California currency market to be verified and activated. -==== Sending and receiving bitcoins +[[sending_receiving]] +==== Sending and receiving bitcoins -Alice has created her bitcoin wallet and she is now ready to receive funds. Her wallet application randomly generated a bitcoin address together with its corresponding key (an elliptic curve private key, described in more detail in <>). At this point, her bitcoin address is not known to the bitcoin network or "registered" with any part of the bitcoin system. Her bitcoin address is simply a number that corresponds to a key that she can use to control access to the funds. There is no account or association between that address and an account. Until the moment this address is referenced as the recipient of value in a transaction posted on the bitcoin ledger (the blockchain), it is simply part of the vast number of possible addresses that are "valid" in bitcoin. Once it has been associated with a transaction, it becomes part of the known addresses in the network and Alice can check its balance on the public ledger. +Alice has created her bitcoin wallet and she is now ready to receive funds. Her wallet application randomly generated a private key (described in more detail in <>) together with its corresponding bitcoin address. At this point, her bitcoin address is not known to the bitcoin network or "registered" with any part of the bitcoin system. Her bitcoin address is simply a number that corresponds to a key that she can use to control access to the funds. There is no account or association between that address and an account. Until the moment this address is referenced as the recipient of value in a transaction posted on the bitcoin ledger (the blockchain), it is simply part of the vast number of possible addresses that are "valid" in bitcoin. Once it has been associated with a transaction, it becomes part of the known addresses in the network and Alice can check its balance on the public ledger. Alice meets her friend Joe who introduced her to bitcoin at a local restaurant so they can exchange some US dollars and put some bitcoins into her account. She has brought a printout of her address and the QR code as displayed in her bitcoin wallet. There is nothing sensitive, from a security perspective, about the bitcoin address. It can be posted anywhere without risking the security of her account. diff --git a/ch02.asciidoc b/ch02.asciidoc index 48e0b37a..560258b0 100644 --- a/ch02.asciidoc +++ b/ch02.asciidoc @@ -19,15 +19,16 @@ Each of these has a search function that can take an address, transaction hash o ==== Bitcoin Overview -In the overview diagram below, we see that the bitcoin system consists of users with wallets containing keys, transactions which are propagated across the network and miners who produce (through competitive computation) the consensus blockchain, the authoritative ledger of all transactions. In this chapter, we will trace a single transaction as it travels across the network and examine the interactions between each part of the bitcoin system, at a high level. Subsequent chapters will delve deeper into the technology behind wallets, mining and merchant systems. +In the overview diagram below, we see that the bitcoin system consists of users with wallets containing keys, transactions which are propagated across the network and miners who produce (through competitive computation) the consensus blockchain, the authoritative ledger of all transactions. In this chapter, we will trace a single transaction as it travels across the network and examine the interactions between each part of the bitcoin system, at a high level. Subsequent chapters will delve into the technology behind wallets, mining and merchant systems. [[bitcoin-overview]] .Bitcoin Overview image::images/Bitcoin_Overview.png["Bitcoin Overview"] +[[cup_of_coffee]] ==== Buying a cup of coffee -Alice, introduced in the previous chapter, is a new user who has just acquired her first bitcoin. In <>, Alice met with her friend Joe to exchange some cash for bitcoin. The transaction created by Joe, funded Alice's wallet with 0.10 BTC. Now Alice will make her first retail transaction, buying a cup of coffee at Bob's coffee shop in Palo Alto, California. Bob's coffee shop recently started accepting bitcoin payments, by adding a bitcoin option to his point-of-sale system (see <> for information on using bitcoin for merchants/retail). The prices at Bob's Cafe are listed in the local currency (US dollars) but at the register, customers have the option of paying in either dollars or bitcoin. Alice places her order for a cup of coffee and Bob enters the transaction at the register. The point-of-sale system will convert the total price from US dollars to bitcoins at the prevailing market rate and display the prices in both currencies, as well as showing a QR code containing a _payment request_ for this transaction: +Alice, introduced in the previous chapter, is a new user who has just acquired her first bitcoin. In <>, Alice met with her friend Joe to exchange some cash for bitcoin. The transaction created by Joe, funded Alice's wallet with 0.10 BTC. Now Alice will make her first retail transaction, buying a cup of coffee at Bob's coffee shop in Palo Alto, California. Bob's coffee shop recently started accepting bitcoin payments, by adding a bitcoin option to his point-of-sale system. The prices at Bob's Cafe are listed in the local currency (US dollars) but at the register, customers have the option of paying in either dollars or bitcoin. Alice places her order for a cup of coffee and Bob enters the transaction at the register. The point-of-sale system will convert the total price from US dollars to bitcoins at the prevailing market rate and display the prices in both currencies, as well as showing a QR code containing a _payment request_ for this transaction: .Displayed on Bob's cash register ---- @@ -59,7 +60,7 @@ A description for the payment: "Purchase at Bob's Cafe" [TIP] ==== -Unlike a QR code that simply contains a destination bitcoin address, a "payment request" is a QR encoded URL that contains a destination address, a payment amount and a generic description such as "Bob's Cafe". This allows a bitcoin wallet application to pre-fill the information used to send the payment while showing a human-readable description to the user. See <>, for more details. You can scan the QR code above with a bitcoin wallet application to see what Alice would see. +Unlike a QR code that simply contains a destination bitcoin address, a "payment request" is a QR encoded URL that contains a destination address, a payment amount and a generic description such as "Bob's Cafe". This allows a bitcoin wallet application to pre-fill the information used to send the payment while showing a human-readable description to the user. You can scan the QR code above with a bitcoin wallet application to see what Alice would see. ==== Bob says "That's one-dollar-fifty, or fifteen milliBits". @@ -70,7 +71,7 @@ In the following sections we will examine this transaction in more detail, see h [NOTE] ==== -The bitcoin network can transact in fractional values, e.g. from millibitcoins (1/1000th of a bitcoin) down to 1/100,000,000th of a bitcoin, which is known as a Satoshi. Throughout this book we’ll use the term “bitcoins” to refer to any quantity of bitcoin currency, from the smallest unit (1 Satoshi) to the total number (21,000,000) of all bitcoins that will ever be mined. +The bitcoin network can transact in fractional values, e.g. from milli-bitcoins (1/1000th of a bitcoin) down to 1/100,000,000th of a bitcoin, which is known as a Satoshi. Throughout this book we’ll use the term “bitcoins” to refer to any quantity of bitcoin currency, from the smallest unit (1 Satoshi) to the total number (21,000,000) of all bitcoins that will ever be mined. ==== @@ -125,14 +126,17 @@ Alice's wallet application contains all the logic for selecting appropriate inpu ==== Getting the right inputs -Alice's wallet application will first have to find inputs that can pay for the amount she wants to send to Bob. Most wallet applications keep a small database of "unspent transaction outputs" that are locked (encumbered) with the wallet's own keys. Therefore, Alice's wallet would contain a copy of the transaction output from Joe's transaction which was created in exchange for cash (see <>). A bitcoin wallet application that runs as a full-index client actually contains a copy of every unspent output from every transaction in the blockchain. This allows a wallet to construct transaction inputs as well as to quickly verify incoming transactions as having correct inputs. However, since a full-index client takes up a lot of disk space, most user wallets run "lightweight" clients that track only the user's own unspent outputs. +Alice's wallet application will first have to find inputs that can pay for the amount she wants to send to Bob. Most wallet applications keep a small database of "unspent transaction outputs" that are locked (encumbered) with the wallet's own keys. Therefore, Alice's wallet would contain a copy of the transaction output from Joe's transaction which was created in exchange for cash (see <>). A bitcoin wallet application that runs as a full-index client actually contains a copy of every unspent output from every transaction in the blockchain. This allows a wallet to construct transaction inputs as well as to quickly verify incoming transactions as having correct inputs. However, since a full-index client takes up a lot of disk space, most user wallets run "lightweight" clients that track only the user's own unspent outputs. If the wallet application does not maintain a copy of unspent transaction outputs, it can query the bitcoin network to retrieve this information, using a variety of APIs available by different providers, or by asking a full-index node using the bitcoin JSON RPC API. Below we see an example of a RESTful API request, constructed as an HTTP GET command to a specific URL. This URL will return all the unspent transaction outputs for an address, giving any application the information it needs to construct transaction inputs for spending. We use the simple command-line HTTP client _cURL_ to retrieve the response: .Look up all the unspent outputs for Alice's bitcoin address +[source,bash] ---- $ curl https://blockchain.info/unspent?active=1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK - +---- +[source,json] +---- { "unspent_outputs":[ @@ -151,7 +155,7 @@ $ curl https://blockchain.info/unspent?active=1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK } ---- -The response above shows that the bitcoin network knows of one unspent output (one that has not been redeemed yet) under the ownership of Alice's address _+1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK+_. The response includes the reference to the transaction in which this unspent output is contained (the payment from Joe) and its value in Satoshis, at 10 million, equivalent to 0.10 bitcoin. With this information, Alice's wallet application can construct a transaction to transfer that value to new owner addresses. +The response above shows that the bitcoin network knows of one unspent output (one that has not been redeemed yet) under the ownership of Alice's address +1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK+. The response includes the reference to the transaction in which this unspent output is contained (the payment from Joe) and its value in Satoshis, at 10 million, equivalent to 0.10 bitcoin. With this information, Alice's wallet application can construct a transaction to transfer that value to new owner addresses. [TIP] ==== @@ -242,7 +246,7 @@ image::images/Blockchain_height_and_depth.png["Alice's transaction included in a === Spending the transaction -Now that Alice's transaction has been embedded in the blockchain as part of a block, it is part of the distributed ledger of bitcoin and visible to all bitcoin applications. Each bitcoin client can independently verify the transaction as valid and spendable. Full-index clients can track the source of the funds from the moment the bitcoins were first generated in a block, incrementally from transaction to transaction, until they reach Bob's address. Lightweight clients can do a Simplified Payment Verification (See SPV:<>) by confirming that the transaction is in the blockchain and has several blocks mined after it, thus providing assurance that the network accepts it as valid. +Now that Alice's transaction has been embedded in the blockchain as part of a block, it is part of the distributed ledger of bitcoin and visible to all bitcoin applications. Each bitcoin client can independently verify the transaction as valid and spendable. Full-index clients can track the source of the funds from the moment the bitcoins were first generated in a block, incrementally from transaction to transaction, until they reach Bob's address. Lightweight clients can do a Simplified Payment Verification (See <>) by confirming that the transaction is in the blockchain and has several blocks mined after it, thus providing assurance that the network accepts it as valid. Bob can now spend the output from this and other transactions, by creating his own transactions that reference these outputs as their inputs and assign them new ownership. For example, Bob can pay a contractor or supplier by transferring value from Alice's coffee cup payment to these new owners. Most likely, Bob's bitcoin software will aggregate many small payments into a larger payment, perhaps concentrating all the day's bitcoin revenue into a single transaction. This would move the various payments into a single address, utilized as the store's general "checking" account. For a diagram of an aggregating transaction, see <>. diff --git a/ch03.asciidoc b/ch03.asciidoc index f1f9b0a0..1ff1c195 100644 --- a/ch03.asciidoc +++ b/ch03.asciidoc @@ -1,9 +1,9 @@ [[ch03_bitcoin_client]] == The Bitcoin Client -=== Bitcoin Core - The Reference Implementation, aka Satoshi Client +=== Bitcoin Core - The reference implementation -You can download the Reference Client, also known as _Bitcoin Core_ from bitcoin.org. The reference client implements all aspects of the bitcoin system, including wallets, a transaction verification engine with a full copy of the entire transaction ledger (blockchain) and a full network node in the peer-to-peer bitcoin network. +You can download the Reference Client _Bitcoin Core_, also known as the "Satoshi client", from bitcoin.org. The reference client implements all aspects of the bitcoin system, including wallets, a transaction verification engine with a full copy of the entire transaction ledger (blockchain) and a full network node in the peer-to-peer bitcoin network. Go to http://bitcoin.org/en/choose-your-wallet and select "Bitcoin Core" to download the reference client. Depending on your operating system, you will download an executable installer. For Windows, this is either a ZIP archive or an EXE executable. For Mac OS it is a DMG disk image. Linux versions include a PPA package for Ubuntu or a TAR.GZ archive. @@ -11,7 +11,7 @@ Go to http://bitcoin.org/en/choose-your-wallet and select "Bitcoin Core" to down .Bitcoin - Choose A Bitcoin Client image::images/bitcoin-choose-client.png["bitcoin choose client"] -==== Bitcoin Core - Running the client for the first time +==== Running Bitcoin Core for the first time If you download an installable package, such as an EXE, DMG or PPA, you can install it the same way as any application on your operating system. For Windows, run the EXE and follow the step-by-step instructions. For Mac OS, launch the DMG and drag the Bitcoin-QT icon into your Applications folder. For Ubuntu, double-click on the PPA in your File Explorer and it will open the package manager to install the package. Once you have completed installation you should have a new application "Bitcoin-Qt" in your application list. Double-click on the icon to start the bitcoin client. @@ -27,10 +27,11 @@ Bitcoin Core keeps a full copy of the transaction ledger (blockchain), with ever image::images/bitcoin-qt-firstload.png["bitcoin-qt first run"] -==== Bitcoin Core - Compiling the client from the source code +==== Compiling Bitcoin Core from the source code For developers, there is also the option to download the full source code as a ZIP archive or by cloning the authoritative source repository from Github. Go to https://github.com/bitcoin/bitcoin and select "Download ZIP" from the sidebar. Alternatively, use the git command line to create a local copy of the source code on your system. In the example below, we are cloning the source code from a unix-like command-line, in Linux or Mac OS: +[source,bash] ---- $ git clone https://github.com/bitcoin/bitcoin.git Cloning into 'bitcoin'... @@ -49,12 +50,14 @@ The instructions and resulting output may vary from version to version. Follow t When the git cloning operation has completed, you will have a complete local copy of the source code repository in the directory _bitcoin_. Change to this directory by typing +cd bitcoin+ at the prompt: +[source,bash] ---- $ cd bitcoin ---- By default, the local copy will be synchronized with the most recent code, which may be an unstable or "beta" version of bitcoin. Before compiling the code, we want to select a specific version by checking out a release _tag_. This will synchronize the local copy with a specific snapshot of the code repository identified by a keyword tag. Tags are used by the developers to mark specific releases of the code by version number. First, to find the available tags, we use the +git tag+ command: +[source,bash] ---- $ git tag v0.1.5 @@ -75,6 +78,7 @@ v0.9.0rc1 The list of tags shows all the released versions of bitcoin. By convention, _release candidates_, which are intended for testing, have the suffix "rc". Stable releases that can be run on production systems have no suffix. From the list above, we select the highest version release, which at this time is v0.9.0rc1. To synchronize the local code with this version, we use the +git checkout+ command: +[source,bash] ---- $ git checkout v0.9.0rc1 Note: checking out 'v0.9.0rc1'. @@ -90,9 +94,10 @@ Carefully review the build pre-requisites which are in the first part of the bui [TIP] ==== -The bitcoind build process was changed to use the autogen/configure/make system starting with version 0.9. Older versions use a simple Makefile and work slightly differently from the example below. Follow the instructions for the version you want to compile. The autogen/configure/make introduced in 0.9 is likely to be the build system used for all future versions of the code and is the system demonstrated in the examples below. +The Bitcoin Core build process was changed to use the autogen/configure/make system starting with version 0.9. Older versions use a simple Makefile and work slightly differently from the example below. Follow the instructions for the version you want to compile. The autogen/configure/make introduced in 0.9 is likely to be the build system used for all future versions of the code and is the system demonstrated in the examples below. ==== +[source,bash] ---- $ ./autogen.sh configure.ac:12: installing `src/build-aux/config.guess' @@ -105,6 +110,7 @@ $ The +autogen.sh+ script creates a set of automatic configuration scripts that will interrogate your system to discover the correct settings and ensure you have all the necessary libraries to compile the code. The most important of these is the +configure+ script that offers a number of different options to customize the build process. Type +./configure --help+ to see the various options: +[source,bash] ---- $ ./configure --help @@ -142,6 +148,7 @@ $ The +configure+ script allows you to enable or disable certain features of bitcoind through the use of the +--enable-FEATURE+ and +--disable-FEATURE+ flags, where +FEATURE+ is replaced by the feature name, as listed in the help output above. In this chapter, we will build the bitcoind client with all the default features. We won't be using the configuration flags, but you should review them to understand what optional features are part of the client. Next, we run the +configure+ script to automatically discover all the necessary libraries and create a customized build script for our system: +[source,bash] ---- $ ./configure checking build system type... x86_64-unknown-linux-gnu @@ -172,6 +179,7 @@ $ If all goes well, the +configure+ command will end by creating the customized build scripts that will allow us to compile bitcoind. If there are any missing libraries or errors, the +configure+ command will terminate with an error instead of creating the build scripts as shown above. If an error occurs, it is most likely a missing or incompatible library. Review the build documentation again and make sure you install the missing pre-requisites. Then run +configure+ again and see if that fixes the error. Next, we will compile the source code, a process that can take up to an hour to complete. During the compilation process you should see output every few seconds or every few minutes, or an error if something goes wrong. The compilation process can be resumed at any time if interrupted. Type +make+ to start compiling: +[source,bash] ---- $ make Making all in src @@ -203,6 +211,7 @@ $ If all goes well, bitcoind is now compiled. The final step is to install the bitcoind executable into the system path using the +make+ command: +[source,bash] ---- $ sudo make install Making install in src @@ -216,15 +225,20 @@ make install-am $ ---- -We can confirm that bitcoin is correctly installed, as follows: +We can confirm that bitcoin is correctly installed, by asking the system for the path of the two executables, as follows: +[source,bash] ---- $ which bitcoind /usr/local/bin/bitcoind + +$ which bitcoin-cli +/usr/local/bin/bitcoin-cli ---- The default installation of bitcoind puts it in +/usr/local/bin+. When we first run bitcoind it will remind us to create a configuration file with a strong password for the JSON-RPC interface. We run it by typing +bitcoind+ into the terminal: +[source,bash] ---- $ bitcoind Error: To use the "-server" option, you must set a rpcpassword in the configuration file: @@ -241,19 +255,50 @@ for example: alertnotify=echo %s | mail -s "Bitcoin Alert" admin@foo.com Edit the configuration file in your preferred editor and set the parameters, replacing the password with a strong password as recommended by bitcoind. Do *not* use the password shown below. Create a file inside the +.bitcoin+ directory so that it is named +.bitcoin/bitcoin.conf+ and enter a username and password: +[source,ini] ---- rpcuser=bitcoinrpc rpcpassword=2XA4DuKNCbtZXsBQRRNDEwEY2nM6M4H9Tx5dFjoAVVbK ---- -=== Using bitcoind from the command line +While you're editing this configuration file, you may want to set a few other options, such as +txindex+ (See <>). For a full listing of the available options type +bitcoind --help+. -The reference client bitcoind offers a number of commands that can be run from the command line. These are the same commands as those offered via the JSON-RPC API, so the command line allows us to experiment interactively with the capabilities that are also available programmatically. To start, we can invoke the +help+ command to see a list of the available bitcoin commands: +Now, run the Bitcoin Core client. The first time you run it, it will rebuild the bitcoin blockchain by downloading all the blocks. This is a multi-gigabyte file and will take on average 2 days to download in full. You can shorten the blockchain initialization time by downloading a partial copy of the blockchain using a bittorrent client from +http://sourceforge.net/projects/bitcoin/files/Bitcoin/blockchain/+. +Run bitcoind in the background with the option +-daemon+: + +[source,bash] +---- +$ bitcoind -daemon + +Bitcoin version v0.9.0rc1-beta (2014-01-31 09:30:15 +0100) +Using OpenSSL version OpenSSL 1.0.1c 10 May 2012 +Default data directory /home/bitcoin/.bitcoin +Using data directory /bitcoin/ +Using at most 4 connections (1024 file descriptors available) +init message: Verifying wallet... +dbenv.open LogDir=/bitcoin/database ErrorFile=/bitcoin/db.log +Bound to [::]:8333 +Bound to 0.0.0.0:8333 +init message: Loading block index... +Opening LevelDB in /bitcoin/blocks/index +Opened LevelDB successfully +Opening LevelDB in /bitcoin/chainstate +Opened LevelDB successfully + +[... more startup messages ...] + +---- + +=== Using Bitcoin Core's JSON-RPC API from the command line + +The Bitcoin Core client implements a JSON-RPC interface that can also be accessed using the command line helper +bitcoin-cli+. The command line allows us to experiment interactively with the capabilities that are also available programmatically via the API. To start, we can invoke the +help+ command to see a list of the available bitcoin commands: [[bitcoind_commands]] -.Bitcoind command list +.Bitcoin Core RPC commands +[source,bash] ---- +$ bitcoin-cli help addmultisigaddress nrequired ["key",...] ( "account" ) addnode "node" "add|remove|onetry" backupwallet "destination" @@ -263,7 +308,6 @@ decoderawtransaction "hexstring" decodescript "hex" dumpprivkey "bitcoinaddress" dumpwallet "filename" -encryptwallet "passphrase" getaccount "bitcoinaddress" getaccountaddress "account" getaddednodeinfo dns ( "node" ) @@ -271,6 +315,7 @@ getaddressesbyaccount "account" getbalance ( "account" minconf ) getbestblockhash getblock "hash" ( verbose ) +getblockchaininfo getblockcount getblockhash index getblocktemplate ( "jsonrequestobject" ) @@ -282,6 +327,7 @@ getinfo getmininginfo getnettotals getnetworkhashps ( blocks height ) +getnetworkinfo getnewaddress ( "account" ) getpeerinfo getrawchangeaddress @@ -293,6 +339,7 @@ gettransaction "txid" gettxout "txid" n ( includemempool ) gettxoutsetinfo getunconfirmedbalance +getwalletinfo getwork ( "data" ) help ( "command" ) importprivkey "bitcoinprivkey" ( "label" rescan ) @@ -323,43 +370,24 @@ submitblock "hexdata" ( "jsonparametersobject" ) validateaddress "bitcoinaddress" verifychain ( checklevel numblocks ) verifymessage "bitcoinaddress" "signature" "message" +walletlock +walletpassphrase "passphrase" timeout +walletpassphrasechange "oldpassphrase" "newpassphrase" ---- -==== Running bitcoind +==== Getting information on the Bitcoin Core client status -Commands: -daemon, getinfo +Commands: getinfo -Now, run the bitcoin client. The first time you run it the bitcoin blockchain will be rebuilt. This is a multi-gigabyte file and will take on average 2 days to download in full. You can shorten the blockchain initialization time by downloading a partial copy of the blockchain using bittorrent from +http://sourceforge.net/projects/bitcoin/files/Bitcoin/blockchain/+. - -Run bitcoind in the background with the option +-daemon+: +Bitcoin's +getinfo+ RPC command shows us basic information about the status of the bitcoin network node, the wallet and the blockchain database. We use bitcoin-cli to run it: +[source,bash] ---- -$ bitcoind -daemon -$ -Bitcoin version v0.9.0rc1-beta (2014-01-31 09:30:15 +0100) -Using OpenSSL version OpenSSL 1.0.1c 10 May 2012 -Default data directory /home/bitcoin/.bitcoin -Using data directory /bitcoin/ -Using at most 4 connections (1024 file descriptors available) -init message: Verifying wallet... -dbenv.open LogDir=/bitcoin/database ErrorFile=/bitcoin/db.log -Bound to [::]:8333 -Bound to 0.0.0.0:8333 -init message: Loading block index... -Opening LevelDB in /bitcoin/blocks/index -Opened LevelDB successfully -Opening LevelDB in /bitcoin/chainstate -Opened LevelDB successfully - -[... more startup messages ...] - +$ bitcoin-cli getinfo ---- - -Bitcoin's +getinfo+ command shows us basic information about the status of the bitcoin network node, the wallet and the blockchain database: - +[source,json] ---- -$ bitcoind getinfo { "version" : 90000, "protocolversion" : 70002, @@ -387,24 +415,28 @@ It will take some time, perhaps more than a day, for the bitcoind client to "cat ==== Wallet setup and encryption -Commands: bitcoind encryptwallet, walletpassphrase +Commands: encryptwallet, walletpassphrase Before we proceed with creating keys and other commands, we will first encrypt the wallet with a password. For this example, we use the +encryptwallet+ command with the password "foo". Obviously, replace "foo" with a strong and complex password! ---- -$ bitcoind encryptwallet foo +$ bitcoin-cli encryptwallet foo wallet encrypted; Bitcoin server stopping, restart to run with encrypted wallet. The keypool has been flushed, you need to make a new backup. $ ---- We can verify the wallet has been encrypted by running +getinfo+ again. This time you will notice a new entry +unlocked_until+ that is a counter showing how long the wallet decryption password will be stored in memory, keeping the wallet unlocked. At first this will be set to zero, meaning the wallet is locked: +[source,bash] +---- +$ bitcoin-cli getinfo +---- +[source,json] ---- -$ bitcoind getinfo { "version" : 90000, -[... other information...] +#[... other information...] "unlocked_until" : 0, "errors" : "" @@ -415,18 +447,22 @@ $ To unlock the wallet, we issue the +walletpassphrase+ command that takes two parameters, the password and a number of seconds until the wallet is locked again automatically (a time counter): ---- -$ bitcoind walletpassphrase foo 360 +$ bitcoin-cli walletpassphrase foo 360 $ ---- Confirm the wallet is unlocked and see the timeout by running +getinfo+ again: +[source,bash] +---- +$ bitcoin-cli getinfo +---- +[source,json] ---- -$ bitcoind getinfo { "version" : 90000, -[... other information ...] +#[... other information ...] "unlocked_until" : 1392580909, "errors" : "" @@ -439,22 +475,25 @@ Commands: backupwallet, importwallet, dumpwallet Next, we will practice creating a wallet backup file and then restoring the wallet from the backup file. Use the +backupwallet+ command to backup, providing the file name as the parameter. Here we backup the wallet to the file +wallet.backup+: +[source,bash] ---- -$ bitcoind backupwallet wallet.backup +$ bitcoin-cli backupwallet wallet.backup $ ---- Now, to restore the backup file, use the +importwallet+ command. If your wallet is locked, you will need to unlock it first (see +walletpassphrase+ above) in order to import the backup file: +[source,bash] ---- -$ bitcoind importwallet wallet.backup +$ bitcoin-cli importwallet wallet.backup $ ---- The +dumpwallet+ command can be used to dump the wallet into a text file that is human-readable: +[source,bash] ---- -$ bitcoind dumpwallet wallet.txt +$ bitcoin-cli dumpwallet wallet.txt $ more wallet.txt # Wallet dump created by Bitcoin v0.9.0rc1-beta (2014-01-31 09:30:15 +0100) # * Created on 2014-02- 8dT20:34:55Z @@ -474,8 +513,9 @@ Commands: getnewaddress, getreceivedbyaddress, listtransactions, getaddressesbya The bitcoin reference client maintains a pool of addresses, the size of which is displayed by +keypoolsize+ when you use the command +getinfo+. These addresses are generated automatically and can then be used as public receiving addresses or change addresses. To get one of these addresses, you can use the +getnewaddress+ command: +[source,bash] ---- -$ bitcoind getnewaddress +$ bitcoin-cli getnewaddress 1hvzSofGwT8cjb8JU7nBsCSfEVQX5u9CL ---- @@ -483,22 +523,28 @@ Now, we can use this address to send a small amount of bitcoin to our bitcoind w We can now query the bitcoind client for the amount received by this address, and specify how many confirmations are required before an amount is counted in that balance. For this example, we will specify zero confirmations. A few seconds after sending the bitcoin from another wallet, we will see it reflected in the wallet. We use +getreceivedbyaddress+ with the address and the number of confirmations set to zero (0): +[source,bash] ---- -$ bitcoind getreceivedbyaddress 1hvzSofGwT8cjb8JU7nBsCSfEVQX5u9CL 0 +$ bitcoin-cli getreceivedbyaddress 1hvzSofGwT8cjb8JU7nBsCSfEVQX5u9CL 0 0.05000000 ---- If we omit the zero from the end of this command, we will only see the amounts that have at least +minconf+ confirmations, where +minconf+ is the setting for the minimum number of confirmations before a transaction is listed in the balance. The +minconf+ setting is specified in the bitcoind configuration file. Since the transaction sending this bitcoin was only sent in the last few seconds, it has still not confirmed and therefore we will see it list a zero balance: +[source,bash] ---- -$ bitcoind getreceivedbyaddress 1hvzSofGwT8cjb8JU7nBsCSfEVQX5u9CL +$ bitcoin-cli getreceivedbyaddress 1hvzSofGwT8cjb8JU7nBsCSfEVQX5u9CL 0.00000000 ---- The transactions received by the entire wallet can also be displayed using the +listtransactions+ command: +[source,bash] +---- +$ bitcoin-cli listtransactions +---- +[source,json] ---- -$ bitcoind listtransactions [ { "account" : "", @@ -516,8 +562,12 @@ $ bitcoind listtransactions We can list all addresses in the entire wallet using the +getaddressesbyaccount+ command: +[source,bash] +---- +$ bitcoin-cli getaddressesbyaccount "" +---- +[source,json] ---- -$ bitcoind getaddressesbyaccount "" [ "1LQoTPYy1TyERbNV4zZbhEmgyfAipC6eqL", "17vrg8uwMQUibkvS2ECRX4zpcVJ78iFaZS", @@ -537,8 +587,9 @@ $ bitcoind getaddressesbyaccount "" Finally, the command +getbalance+ will show the total balance of the wallet, adding up all transactions confirmed with at least +minconf+ confirmations: +[source,bash] ---- -$ bitcoind getbalance +$ bitcoin-cli getbalance 0.05000000 ---- @@ -553,8 +604,12 @@ Commands: gettransaction, getrawtransaction, decoderawtransaction We'll now explore the incoming transaction that was listed above using the +gettransaction+ command. We can retrieve a transaction by its transaction hash, shown at +txid+, above with the +gettransaction+ command: +[source,bash] +---- +$ bitcoin-cli gettransaction 9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3 +---- +[source,json] ---- -$ bitcoind gettransaction 9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3 { "amount" : 0.05000000, "confirmations" : 0, @@ -579,15 +634,20 @@ Transaction IDs are not authoritative until a transaction has been confirmed. Ab The transaction form shown above with the command +gettransaction+ is the simplified form. To retrieve the full transaction code and decode it we will use two commands, +getrawtransaction+ and +decoderawtransaction+. First, +getrawtransaction+ takes the _transaction hash (txid)_ as a parameter and returns the full transaction as a "raw" hex string, exactly as it exists on the bitcoin network: +[source,bash] ---- -$ bitcoind getrawtransaction 9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3 +$ bitcoin-cli getrawtransaction 9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3 0100000001d717279515f88e2f56ce4e8a31e2ae3e9f00ba1d0add648e80c480ea22e0c7d3000000008b483045022100a4ebbeec83225dedead659bbde7da3d026c8b8e12e61a2df0dd0758e227383b302203301768ef878007e9ef7c304f70ffaf1f2c975b192d34c5b9b2ac1bd193dfba2014104793ac8a58ea751f9710e39aad2e296cc14daa44fa59248be58ede65e4c4b884ac5b5b6dede05ba84727e34c8fd3ee1d6929d7a44b6e111d41cc79e05dbfe5ceaffffffff02404b4c00000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac1f312906000000001976a914107b7086b31518935c8d28703d66d09b3623134388ac00000000 ---- To decode this hex string, we can use the +decoderawtransaction+ command. Copy and paste the hex as the first parameter of +decoderawtransaction+ to get the full contents interpreted as a JSON data structure (for formatting reasons the hex string is shortened in the example below): +[source,bash] +---- +$ bitcoin-cli decoderawtransaction 0100000001d717...388ac00000000 +---- +[source,json] ---- -$ bitcoind decoderawtransaction 0100000001d717...388ac00000000 { "txid" : "9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3", "version" : 1, @@ -597,8 +657,14 @@ $ bitcoind decoderawtransaction 0100000001d717...388ac00000000 "txid" : "d3c7e022ea80c4808e64dd0a1dba009f3eaee2318a4ece562f8ef815952717d7", "vout" : 0, "scriptSig" : { - "asm" : "3045022100a4ebbeec83225dedead659bbde7da3d026c8b8e12e61a2df0dd0758e227383b302203301768ef878007e9ef7c304f70ffaf1f2c975b192d34c5b9b2ac1bd193dfba201 04793ac8a58ea751f9710e39aad2e296cc14daa44fa59248be58ede65e4c4b884ac5b5b6dede05ba84727e34c8fd3ee1d6929d7a44b6e111d41cc79e05dbfe5cea", - "hex" : "483045022100a4ebbeec83225dedead659bbde7da3d026c8b8e12e61a2df0dd0758e227383b302203301768ef878007e9ef7c304f70ffaf1f2c975b192d34c5b9b2ac1bd193dfba2014104793ac8a58ea751f9710e39aad2e296cc14daa44fa59248be58ede65e4c4b884ac5b5b6dede05ba84727e34c8fd3ee1d6929d7a44b6e111d41cc79e05dbfe5cea" + "asm" : "3045022100a4ebbeec83225dedead659bbde7da3d026c8b8e12e61a2df0dd0\ + 758e227383b302203301768ef878007e9ef7c304f70ffaf1f2c975b192d34c5b9b2ac1b\ + d193dfba201 04793ac8a58ea751f9710e39aad2e296cc14daa44fa59248be58ede65e4\ + c4b884ac5b5b6dede05ba84727e34c8fd3ee1d6929d7a44b6e111d41cc79e05dbfe5cea", + "hex" : "483045022100a4ebbeec83225dedead659bbde7da3d026c8b8e12e61a2df0d\ + d0758e227383b302203301768ef878007e9ef7c304f70ffaf1f2c975b192d34c5b9b2ac\ + 1bd193dfba2014104793ac8a58ea751f9710e39aad2e296cc14daa44fa59248be58ede6\ + 5e4c4b884ac5b5b6dede05ba84727e34c8fd3ee1d6929d7a44b6e111d41cc79e05dbfe5cea" }, "sequence" : 4294967295 } @@ -608,7 +674,8 @@ $ bitcoind decoderawtransaction 0100000001d717...388ac00000000 "value" : 0.05000000, "n" : 0, "scriptPubKey" : { - "asm" : "OP_DUP OP_HASH160 07bdb518fa2e6089fd810235cf1100c9c13d1fd2 OP_EQUALVERIFY OP_CHECKSIG", + "asm" : "OP_DUP OP_HASH160 07bdb518fa2e6089fd810235cf1100c9c13d1fd2\ + OP_EQUALVERIFY OP_CHECKSIG", "hex" : "76a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac", "reqSigs" : 1, "type" : "pubkeyhash", @@ -621,7 +688,8 @@ $ bitcoind decoderawtransaction 0100000001d717...388ac00000000 "value" : 1.03362847, "n" : 1, "scriptPubKey" : { - "asm" : "OP_DUP OP_HASH160 107b7086b31518935c8d28703d66d09b36231343 OP_EQUALVERIFY OP_CHECKSIG", + "asm" : "OP_DUP OP_HASH160 107b7086b31518935c8d28703d66d09b36231343\ + OP_EQUALVERIFY OP_CHECKSIG", "hex" : "76a914107b7086b31518935c8d28703d66d09b3623134388ac", "reqSigs" : 1, "type" : "pubkeyhash", @@ -640,8 +708,12 @@ We can further explore the blockchain by examining the previous transaction refe Once the transaction we received has been confirmed by inclusion in a block, the +gettransaction+ command will return additional information, showing the _block hash (identifier)_ in which the transaction was included: +[source,bash] +---- +$ bitcoin-cli gettransaction 9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3 +---- +[source,json] ---- -$ bitcoind gettransaction 9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3 { "amount" : 0.05000000, "confirmations" : 1, @@ -664,14 +736,24 @@ $ bitcoind gettransaction 9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309ac Above, we see the new information in the entries +blockhash+, the hash of the block in which the transaction was included, and +blockindex+ with value 18, indicating that our transaction was the 18th transaction in that block. +[[txindex]] +.Transaction database index and txindex option +**** +By default, Bitcoin Core builds a database containing _only_ the transactions related to the user's wallet. If you want to be able to access _any_ transaction with commands like +gettransaction+, you need to configure Bitcoin Core to build a complete transaction index, which can be achieved with the +txindex+ option. Set +txindex=1+ in the Bitcoin Core configuration file (usually found in your home directory under +.bitcoin/bitcoin.conf+). Once you change this parameter, you need to restart bitcoind and wait for it to rebuild the index. +**** + ==== Exploring blocks Commands: getblock, getblockhash Now that we know which block our transaction was included in, we can query that block. We use the +getblock+ command with the block hash as the parameter: +[source,bash] +---- +$ bitcoin-cli getblock 000000000000000051d2e759c63a26e247f185ecb7926ed7a6624bc31c2a717b true +---- +[source,bash] ---- -$ bitcoind getblock 000000000000000051d2e759c63a26e247f185ecb7926ed7a6624bc31c2a717b true { "hash" : "000000000000000051d2e759c63a26e247f185ecb7926ed7a6624bc31c2a717b", "confirmations" : 2, @@ -700,7 +782,7 @@ $ bitcoind getblock 000000000000000051d2e759c63a26e247f185ecb7926ed7a6624bc31c2a "e57a4c70f91c8d9ba0ff0a55987ea578affb92daaa59c76820125f31a9584dfc", "9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3", -[... many more transactions ...] +#[... many more transactions ...] ], "time" : 1392660808, @@ -717,15 +799,20 @@ The block contains 367 transactions and as you see above, the 18th transaction l We can also retrieve a block by its block height using the +getblockhash+ command, which takes the block height as the parameter and returns the block hash for that block: +[source,bash] ---- -$ bitcoind getblockhash 0 +$ bitcoin-cli getblockhash 0 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f ---- Above, we retrieve the block hash of the "genesis block", the first block mined by Satoshi Nakamoto, at height zero. Retrieving this block shows: +[source,bash] +---- +$ bitcoin-cli getblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f +---- +[source,json] ---- -$ bitcoind getblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f { "hash" : "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "confirmations" : 286388, @@ -756,8 +843,12 @@ Bitcoin's transactions are based on the concept of spending "outputs", which are First, we use the +listunspent+ command to show all the unspent *confirmed* outputs in our wallet: +[source,bash] +---- +$ bitcoin-cli listunspent +---- +[source,json] ---- -$ bitcoind listunspent [ { "txid" : "9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3", @@ -775,8 +866,12 @@ We see that the transaction +9ca8f9...+ created an output (with vout index 0) as First, let's look at the specific output in more detail. We use the +gettxout+ to get the details of this unspent output above. Transaction outputs are always referenced by txid and vout, and these are the parameters we pass to +gettxout+: +[source,bash] +---- +$ bitcoin-cli gettxout 9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3 0 +---- +[source,json] ---- -$ bitcoind gettxout 9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3 0 { "bestblock" : "0000000000000001405ce69bd4ceebcdfdb537749cebe89d371eb37e13899fd9", "confirmations" : 7, @@ -797,8 +892,9 @@ $ bitcoind gettxout 9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c1 What we see above is the output that assigned 50 millibits to our address +1hvz...+. To spend this output we will create a new transaction. First, let's make an address to which we will send the money: +[source,bash] ---- -$ bitcoind getnewaddress +$ bitcoin-cli getnewaddress 1LnfTndy3qzXGN19Jwscj1T8LR3MVe3JDb ---- @@ -806,19 +902,31 @@ We will send 25 millibits to the new address +1LnfTn...+ we just created in our We use the +createrawtransaction+ to create the transaction described above. As parameters to +createrawtransaction+ we provide the transaction input (the 50 millibit unspent output from our confirmed transaction) and the two transaction outputs (money sent to the new address and change sent back to the previous address): +[source,bash] ---- -bitcoind createrawtransaction - '[{"txid" : "9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3", "vout" : 0}]' -'{"1LnfTndy3qzXGN19Jwscj1T8LR3MVe3JDb": 0.025, +$ bitcoin-cli createrawtransaction \ +'[{"txid" : "9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3", "vout" : 0}]' \ +'{"1LnfTndy3qzXGN19Jwscj1T8LR3MVe3JDb": 0.025, \ "1hvzSofGwT8cjb8JU7nBsCSfEVQX5u9CL": 0.0245}' -0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000 +0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c\ +0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd6810756\ +4a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d\ +1fd288ac00000000 ---- The +createrawtransaction+ command produces a raw hex string that encodes the transaction details we supplied. Let's confirm everything is correct by decoding this raw string using the +decoderawtransaction+ command: +[source,bash] +---- +$ bitcoin-cli decoderawtransaction \ +0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c\ +0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd6810756\ +4a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d\ +1fd288ac00000000 +---- +[source,json] ---- -$ bitcoind decoderawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000 { "txid" : "0793299cb26246a8d24e468ec285a9520a1c30fcb5b6125a102e3fc05d4f3cba", "version" : 1, @@ -839,7 +947,8 @@ $ bitcoind decoderawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db "value" : 0.02500000, "n" : 0, "scriptPubKey" : { - "asm" : "OP_DUP OP_HASH160 d90d36e98f62968d2bc9bbd68107564a156a9bcf OP_EQUALVERIFY OP_CHECKSIG", + "asm" : "OP_DUP OP_HASH160 d90d36e98f62968d2bc9bbd68107564a156a9bcf\ + OP_EQUALVERIFY OP_CHECKSIG", "hex" : "76a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac", "reqSigs" : 1, "type" : "pubkeyhash", @@ -852,7 +961,8 @@ $ bitcoind decoderawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db "value" : 0.02450000, "n" : 1, "scriptPubKey" : { - "asm" : "OP_DUP OP_HASH160 07bdb518fa2e6089fd810235cf1100c9c13d1fd2 OP_EQUALVERIFY OP_CHECKSIG", + "asm" : "OP_DUP OP_HASH160 07bdb518fa2e6089fd810235cf1100c9c13d1fd2\ + OP_EQUALVERIFY OP_CHECKSIG", "hex" : "76a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac", "reqSigs" : 1, "type" : "pubkeyhash", @@ -874,9 +984,10 @@ As you may notice, the transaction contains an empty +scriptSig+ because we have An encrypted wallet must be unlocked before a transaction is signed because signing requires access to the secret keys in the wallet. ==== +[source,bash] ---- -$ bitcoind walletpassphrase foo 360 -$ bitcoind signrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000 +$ bitcoin-cli walletpassphrase foo 360 +$ bitcoin-cli signrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000 { "hex" : "0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000", "complete" : true @@ -885,8 +996,19 @@ $ bitcoind signrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f The +signrawtransaction+ command returns another hex encoded raw transaction. We decode it to see what changed, with +decoderawtransaction+: +[source,bash] +---- +$ bitcoin-cli decoderawtransaction\ +0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c\ +000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76\ +d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051\ +a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ff\ +ffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88a\ +c50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac000000\ +00 +---- +[source,json] ---- -$ bitcoind decoderawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000 { "txid" : "ae74538baa914f3799081ba78429d5d84f36a0127438e9f721dff584ac17b346", "version" : 1, @@ -896,8 +1018,14 @@ $ bitcoind decoderawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db "txid" : "9ca8f969bd3ef5ec2a8685660fdbf7a8bd365524c2e1fc66c309acbae2c14ae3", "vout" : 0, "scriptSig" : { - "asm" : "304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a0601 03c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127", - "hex" : "47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127" + "asm" : "304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76\ + d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af5\ + 2051a0601 03c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71d\ + c5127", + "hex" : "47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b\ + 76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4a\ + f52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c\ + 71dc5127" }, "sequence" : 4294967295 } @@ -907,7 +1035,8 @@ $ bitcoind decoderawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db "value" : 0.02500000, "n" : 0, "scriptPubKey" : { - "asm" : "OP_DUP OP_HASH160 d90d36e98f62968d2bc9bbd68107564a156a9bcf OP_EQUALVERIFY OP_CHECKSIG", + "asm" : "OP_DUP OP_HASH160 d90d36e98f62968d2bc9bbd68107564a156a9bcf\ + OP_EQUALVERIFY OP_CHECKSIG", "hex" : "76a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac", "reqSigs" : 1, "type" : "pubkeyhash", @@ -920,7 +1049,8 @@ $ bitcoind decoderawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db "value" : 0.02450000, "n" : 1, "scriptPubKey" : { - "asm" : "OP_DUP OP_HASH160 07bdb518fa2e6089fd810235cf1100c9c13d1fd2 OP_EQUALVERIFY OP_CHECKSIG", + "asm" : "OP_DUP OP_HASH160 07bdb518fa2e6089fd810235cf1100c9c13d1fd2\ + OP_EQUALVERIFY OP_CHECKSIG", "hex" : "76a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac", "reqSigs" : 1, "type" : "pubkeyhash", @@ -937,16 +1067,29 @@ Now, the inputs used in the transaction contain a +scriptSig+, which is a digita Now it's time to submit the newly created transaction to the network. We do that with the command +sendrawtransaction+ which takes the raw hex string produced by +signrawtransaction+. This is the same string we just decoded above: +[source,bash] ---- -$ bitcoind sendrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000 +$ bitcoin-cli sendrawtransaction\ +0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c\ +000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76\ +d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051\ +a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ff\ +ffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88a\ +c50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac000000\ +00 ae74538baa914f3799081ba78429d5d84f36a0127438e9f721dff584ac17b346 ---- The command +sendrawtransaction+ returns a _transaction hash (txid)_ as it submits the transaction on the network. We can now query that transaction id with +gettransaction+: +[source,bash] +---- +$ bitcoin-cli gettransaction \ +ae74538baa914f3799081ba78429d5d84f36a0127438e9f721dff584ac17b346 +---- +[source,json] ---- -$ bitcoind gettransaction ae74538baa914f3799081ba78429d5d84f36a0127438e9f721dff584ac17b346 { "amount" : 0.00000000, "fee" : -0.00050000, @@ -999,9 +1142,12 @@ Alternative implementations include: * btcd, a Go language full node bitcoin client (https://opensource.conformal.com/wiki/btcd) * Bits of Proof (BOP), a Java enterprise-class implementation of bitcoin (https://bitsofproof.com) * picocoin, a C implementation of a light-weight client library for bitcoin (https://github.com/jgarzik/picocoin) +* pybitcointools, a Python bitcoin library (https://github.com/vbuterin/pybitcointools) +* pycoin, another Python bitcoin library (https://github.com/richardkiss/pycoin) Many more libraries exist in a variety of other programming languages and more are created all the time. +[[sx_tools]] ==== Libbitcoin and sx tools The libbitcoin library is a C++ scalable multi-threaded and modular implementation that supports a full-node client and a command-line toolset named "sx", which offers many of the same capabilities as the bitcoind client commands we illustrated in this chapter. The sx tools also offer some key management and manipulation tools that are not offered by bitcoind, including type-2 deterministic keys and key mnemonics. @@ -1010,122 +1156,19 @@ The libbitcoin library is a C++ scalable multi-threaded and modular implementati To install sx and the supporting library libbitcoin, download and run the online installer on a Linux system: +[source,bash] ---- $ wget http://sx.dyne.org/install-sx.sh $ sudo bash ./install-sx.sh ---- -You should now have the sx tools installed. Type +sx+ with no parameters to display the help text, which lists all the available commands: +You should now have the sx tools installed. Type +sx+ with no parameters to display the help text, which lists all the available commands (See <>) ----- -Usage: sx COMMAND [ARGS]... - - -c, --config Specify a config file - -The sx commands are: - -DETERMINISTIC KEYS AND ADDRESSES - genaddr Generate a Bitcoin address deterministically from a wallet - seed or master public key. - genpriv Generate a private key deterministically from a seed. - genpub Generate a public key deterministically from a wallet - seed or master public key. - mpk Extract a master public key from a deterministic wallet seed. - newseed Create a new deterministic wallet seed. - -TRANSACTION PARSING - showscript Show the details of a raw script. - showtx Show the details of a transaction. - -BLOCKCHAIN QUERIES (blockexplorer.com) - blke-fetch-transaction Fetches a transaction from blockexplorer.com - -FORMAT - base58-decode Convert from base58 to hex - base58-encode Convert from hex to base58 - base58check-decode Convert from base58check to hex - base58check-encode Convert from hex to base58check - decode-addr Decode an address to its internal RIPEMD representation. - embed-addr Generate an address used for embedding record of data into the blockchain. - encode-addr Encode an address to base58check form. - ripemd-hash RIPEMD hash data from STDIN. - unwrap Validates checksum and recovers version byte and original data from hexstring. - validaddr Validate an address. - wrap Adds version byte and checksum to hexstring. - -BRAINWALLET - brainwallet Make a private key from a brainwallet - mnemonic Work with Electrum compatible mnemonics (12 words wallet seed). - -BLOCKCHAIN WATCHING - monitor Monitor an address. - watchtx Watch transactions from the network searching for a certain hash. - -BLOCKCHAIN QUERIES (blockchain.info) - bci-fetch-last-height Fetch the last block height using blockchain.info. - bci-history Get list of output points, values, and their spends - from blockchain.info - -MISC - btc Convert Satoshis into Bitcoins. - initchain Initialize a new blockchain. - qrcode Generate Bitcoin QR codes offline. - satoshi Convert Bitcoins into Satoshis. - showblkhead Show the details of a block header. - wallet Experimental command line wallet. - -MULTISIG ADDRESSES - scripthash Create BIP 16 script hash address from raw script hex. - -LOOSE KEYS AND ADDRESSES - addr See Bitcoin address of a public or private key. - get-pubkey Get the pubkey of an address if available - newkey Create a new private key. - pubkey See the public part of a private key. - -STEALTH - secret-to-wif Convert a secret exponent value to Wallet. Import. Format. - stealth-new Generate a new master stealth secret. - stealth-recv Regenerate the secret from your master secret and provided nonce. - stealth-send Generate a new sending address and a stealth nonce. - -CREATE TRANSACTIONS - mktx Create an unsigned tx. - rawscript Create the raw hex representation from a script. - set-input Set a transaction input. - sign-input Sign a transaction input. - -VALIDATE - validsig Validate a transaction input's signature. - -BLOCKCHAIN QUERIES - balance Show balance of a Bitcoin address in satoshis. - fetch-block-header Fetch raw block header. - fetch-last-height Fetch the last block height. - fetch-transaction Fetch a raw transaction using a network connection to make requests against the obelisk load balancer backend. - fetch-transaction-index Fetch block height and index in block of transaction. - get-utxo Get enough unspent transaction outputs from a given set of - addresses to pay a given number of satoshis - history Get list of output points, values, and their spends for an - address. grep can filter for just unspent outputs which can - be fed into mktx. - validtx Validate a transaction. - -BLOCKCHAIN UPDATES - sendtx-bci Send tx to blockchain.info/pushtx. - sendtx-node Send transaction to a single node. - sendtx-obelisk Send tx to obelisk server. - sendtx-p2p Send tx to bitcoin network. - -See 'sx help COMMAND' for more information on a specific command. - -SpesmiloXchange home page: ----- - -===== Generating and manipulating keys with sxBitcoin Core +===== Generating and manipulating keys with sx Generate a new private key with the operating system's random number generator by using the +newkey+ command. We save the standard output into the file +private_key+: +[source,bash] ---- $ sx newkey > private_key $ cat private_key @@ -1134,6 +1177,7 @@ $ cat private_key Now, generate the public key from that private key using the +pubkey+ command. Pass the +private_key+ file into the standard input and save the standard output of the command into a new file +public_key+: +[source,bash] ---- $ sx pubkey < private_key > public_key $ cat public_key @@ -1141,6 +1185,8 @@ $ cat public_key ---- We can re-format the public_key as an address using the +addr+ command. We pass the +public_key+ into standard input: + +[source,bash] ---- $ sx addr < public_key 17re1S4Q8ZHyCP8Kw7xQad1Lr6XUzWUnkG @@ -1152,6 +1198,7 @@ The keys generated above are so called type-0 non-deterministic keys. That means First, we generate a "seed" that will be used as the basis to derive a chain of keys, compatible with the Electrum wallet and other similar implementations. We use the +newseed+ command to produce a seed value: +[source,bash] ---- $ sx newseed > seed $ cat seed @@ -1161,6 +1208,7 @@ eb68ee9f3df6bd4441a9feadec179ff1 The seed value can also be exported as a word mnemonic that is human readable and easier to store and type than a hexadecimal string using the +mnemonic+ command: +[source,bash] ---- $ sx mnemonic < seed > words $ cat words @@ -1169,6 +1217,7 @@ adore repeat vision worst especially veil inch woman cast recall dwell appreciat The mnemonic words can be used to reproduce the seed using the +mnemonic+ command again: +[source,bash] ---- $ sx mnemonic < words eb68ee9f3df6bd4441a9feadec179ff1 @@ -1176,6 +1225,7 @@ eb68ee9f3df6bd4441a9feadec179ff1 With the seed, we can now generate a sequence of private and public keys, a key chain. We use the +genpriv+ command to generate a sequence of private keys from a seed and the +addr+ command to generate the corresponding public key. +[source,bash] ---- $ sx genpriv 0 < seed 5JzY2cPZGViPGgXZ4Syb9Y4eUGjJpVt6sR8noxrpEcqgyj7LK7i @@ -1204,12 +1254,14 @@ One key difference between btcd and bitcoind is that btcd does not include walle To install btcd, for Windows, download and run the msi available at https://github.com/conformal/btcd/releases or run the following command on Linux, assuming you already have installed the Go language: +[source,bash] ---- $ go get github.com/conformal/btcd/... ---- To update btcd to the latest version, just run: +[source,bash] ---- $ go get -u -v github.com/conformal/btcd/... ---- @@ -1218,6 +1270,7 @@ $ go get -u -v github.com/conformal/btcd/... btcd has a number of configuration options, which can be viewed by running: +[source,bash] ---- $ btcd --help ---- @@ -1225,12 +1278,14 @@ $ btcd --help btcd comes prepacked with some goodies such as btcctl, a command line utility that can be used to both control and query btcd via RPC. btcd does not enable its RPC server by default; you must configure at minimum both an RPC username and password: * btcd.conf configuration file +[source,ini] ---- [Application Options] rpcuser=myuser rpcpass=SomeDecentp4ssw0rd ---- * btcctl.conf configuration file +[source,ini] ---- [Application Options] rpcuser=myuser @@ -1239,6 +1294,7 @@ rpcpass=SomeDecentp4ssw0rd Or if you want to override the configuration files from the command line: +[source,bash] ---- $ btcd -u myuser -P SomeDecentp4ssw0rd $ btcctl -u myuser -P SomeDecentp4ssw0rd @@ -1246,6 +1302,7 @@ $ btcctl -u myuser -P SomeDecentp4ssw0rd For a list of available options, run: +[source,bash] ---- $ btcctl --help ---- diff --git a/ch04.asciidoc b/ch04.asciidoc index 026cd4b2..f1af44b5 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -5,6 +5,10 @@ Ownership of bitcoin is established through _digital keys_, _bitcoin addresses_ and _digital signatures_. The digital keys are not actually stored in the network, but are instead created and stored by end-users in a file, or simple database, called a _wallet_. The digital keys in a user's wallet are completely independent of the bitcoin protocol and can be generated and managed by the user's wallet software without reference to the blockchain or access to the Internet. Keys enable many of the interesting properties of bitcoin, including de-centralized trust and control, ownership attestation and the cryptographic-proof security model. + +HNFUzKACoVNLnyx4PlW7hJg3dpko2UlDwttaxaUPan4afMmK9ZAtHMKB4PqJgYFe8VDIp0x7OpruTFugxA5hBTE= + + Every bitcoin transaction requires a valid signature to be included in the blockchain, which can only be generated with valid digital keys, therefore anyone with a copy of those keys has control of the bitcoin in that account. Keys come in pairs consisting of a private (secret) and public key. Think of the public key as similar to a bank account number and the private key as similar to the secret PIN number, or signature on a cheque that provides control over the account. These digital keys are very rarely seen by the users of bitcoin. For the most part, they are stored inside the wallet file and managed by the bitcoin wallet software. In the payment portion of a bitcoin transaction, the recipient's public key is represented by its digital fingerprint, called a _bitcoin address_, which is used in the same way as the beneficiary name on a cheque (i.e. "Pay to the order of"). In most cases, a bitcoin address is generated from and corresponds to a public key. However, not all bitcoin addresses represent public keys; they can also represent other beneficiaries such as scripts, as we will see later in this chapter. This way, bitcoin addresses abstract the recipient of funds, making transaction destinations flexible, similar to paper cheques: a single payment instrument that can be used to pay into people's accounts, company accounts, pay for bills or pay to cash. The bitcoin address is the only representation of the keys that users will routinely see, as this is the part they need to share with the world. @@ -36,6 +40,7 @@ A bitcoin wallet contains a collection of key pairs, each consisting of a privat .Private Key, Public Key and Bitcoin Address image::images/privk_to_pubK_to_addressA.png["privk_to_pubK_to_addressA"] +[[private_keys]] ==== Private Keys A +private key+ is simply a number, picked at random. Ownership and control over the private key is the root of user control over all funds associated with the corresponding bitcoin address. The private key is used to create signatures that are required to spend bitcoins by proving ownership of funds used in a transaction. The private key must remain secret at all times, as revealing it to a third party is equivalent to giving them control over the bitcoins secured by that key. The private key must also be backed up and protected from accidental loss, since if lost it cannot be recovered and the funds secured by it are forever lost too. @@ -91,7 +96,7 @@ $ sx newkey [[pubkey]] ==== Public Keys -The public key is calculated from the private key using elliptic curve multiplication, which is irreversible: latexmath:[\(K = k * G\)]+ where +k+ is the private key, +G+ is a constant point called the _Generator Point_ and +K+ is the resulting public key. The reverse operation, known as "finding the discrete logarithm" -- calculating +k+ if you know +K+ -- is as difficult as trying all possible values of +k+, i.e., a brute-force search. Before we demonstrate how to generate a public key from a private key, let's look at Elliptic Curve Cryptography in a bit more detail. +The public key is calculated from the private key using elliptic curve multiplication, which is irreversible: latexmath:[\(K = k * G\)] where +k+ is the private key, +G+ is a constant point called the _Generator Point_ and +K+ is the resulting public key. The reverse operation, known as "finding the discrete logarithm" -- calculating +k+ if you know +K+ -- is as difficult as trying all possible values of +k+, i.e., a brute-force search. Before we demonstrate how to generate a public key from a private key, let's look at Elliptic Curve Cryptography in a bit more detail. [[elliptic_curve]] @@ -111,7 +116,7 @@ Bitcoin uses a specific elliptic curve and set of mathematical constants, as def [latexmath] ++++ \begin{equation} -{y^2 = (x^3 \+ 7)} \text{over} \mathbb{F}_p +{y^2 = (x^3 \+ 7)} \text{over} \(\mathbb{F}_p\) \end{equation} ++++ or @@ -123,7 +128,7 @@ or \end{equation} ++++ -The +mod p+ (modulo prime number p) indicates that this curve is over a finite field of prime order +p+, also written as latexmath:[\(\mathbb{F}_p\)], where p = 2^256^ - 2^32^ - 2^9^ - 2^8^ - 2^7^ - 2^6^ - 2^4^ - 1\)], a very large prime number. +The +mod p+ (modulo prime number p) indicates that this curve is over a finite field of prime order +p+, also written as latexmath:[\(\mathbb{F}_p\)], where p = 2^256^ - 2^32^ - 2^9^ - 2^8^ - 2^7^ - 2^6^ - 2^4^ - 1, a very large prime number. Because this curve is defined over a finite field of prime order instead of over the real numbers it looks like a pattern of dots scattered in two dimensions, which makes it difficult to visualize. However, the math is identical as that of an elliptic curve over the real numbers shown above. As an example, below is the same elliptic curve over a much smaller finite field of prime order 17, showing a pattern of dots on a grid. The +secp256k1+ bitcoin elliptic curve can be thought of as a much more complex pattern of dots on a unfathomably large grid. @@ -133,7 +138,8 @@ image::images/ecc-over-F17-math.png["ecc-over-F17-math"] So for example, below is a point P with coordinates (x,y) that is a point on the secp256k1 curve. You can check this yourself using Python: ---- -P = (55066263022277343669578718895168534326250603453777594175500187360389116729240, 32670510020758816978083085130507043184471273380659243275938904335757337482424) +P = (55066263022277343669578718895168534326250603453777594175500187360389116729240,\ + 32670510020758816978083085130507043184471273380659243275938904335757337482424) ---- ==== @@ -270,9 +276,15 @@ To add extra security against typos or transcription errors, Base58Check is a Ba To convert data (a number) into a Base58Check format, we first add a prefix to the data, called the "version byte", which serves to easily identify the type of data that is encoded. For example, in the case of a bitcoin address the prefix is zero (0x00 in hex), whereas the prefix used when encoding a private key is 128 (0x80 in hex). A list of common version prefixes is shown below in <>. -Next compute the "double-SHA" checksum, meaning we apply the SHA256 hash-algorithm twice on the previous result (prefix and data): +checksum = SHA256(SHA256(prefix\+data))+ From the resulting 32-byte hash (hash-of-a-hash), we take only the first four bytes. These four bytes serve as the error-checking code, or checksum. The checksum is concatenated (appended) to the end. +Next compute the "double-SHA" checksum, meaning we apply the SHA256 hash-algorithm twice on the previous result (prefix and data): + +---- +checksum = SHA256(SHA256(prefix+data)) +---- -The result of the above is now a prefix, the data and a checksum, concatenated (bytewise). This result is encoded using the base-58 alphabet described in the section above. +From the resulting 32-byte hash (hash-of-a-hash), we take only the first four bytes. These four bytes serve as the error-checking code, or checksum. The checksum is concatenated (appended) to the end. + +The result of the above is now a prefix, the data and a checksum. This result is encoded using the base-58 alphabet described in the section above. [[base58check_encoding]] .Base58Check Encoding: A base-58, versioned and checksummed format for unambiguously encoding bitcoin data @@ -437,18 +449,31 @@ include::code/key-to-address-ecc-example.py[] ---- Here's the output from running this code: +[source,bash] ---- $ python key-to-address-ecc-example.py -Private Key (hex) is: 3aba4162c7251c891207b747840551a71939b0de081f85c4e44cf7c13e41daa6 -Private Key (decimal) is: 26563230048437957592232553826663696440606756685920117476832299673293013768870 -Private Key (WIF) is: 5JG9hT3beGTJuUAmCQEmNaxAuMacCTfXuw1R3FCXig23RQHMr4K -Private Key Compressed (hex) is: 3aba4162c7251c891207b747840551a71939b0de081f85c4e44cf7c13e41daa601 -Private Key (WIF-Compressed) is: KyBsPXxTuVD82av65KZkrGrWi5qLMah5SdNq6uftawDbgKa2wv6S -Public Key (x,y) coordinates is: (41637322786646325214887832269588396900663353932545912953362782457239403430124L, 16388935128781238405526710466724741593761085120864331449066658622400339362166L) -Public Key (hex) is: 045c0de3b9c8ab18dd04e3511243ec2952002dbfadc864b9628910169d9b9b00ec243bcefdd4347074d44bd7356d6a53c495737dd96295e2a9374bf5f02ebfc176 -Compressed Public Key (hex) is: 025c0de3b9c8ab18dd04e3511243ec2952002dbfadc864b9628910169d9b9b00ec -Bitcoin Address (b58check) is: 1thMirt546nngXqyPEz532S8fLwbozud8 -Compressed Bitcoin Address (b58check) is: 14cxpo3MBCYYWCgF74SWTdcmxipnGUsPw3 +Private Key (hex) is: + 3aba4162c7251c891207b747840551a71939b0de081f85c4e44cf7c13e41daa6 +Private Key (decimal) is: + 26563230048437957592232553826663696440606756685920117476832299673293013768870 +Private Key (WIF) is: + 5JG9hT3beGTJuUAmCQEmNaxAuMacCTfXuw1R3FCXig23RQHMr4K +Private Key Compressed (hex) is: + 3aba4162c7251c891207b747840551a71939b0de081f85c4e44cf7c13e41daa601 +Private Key (WIF-Compressed) is: + KyBsPXxTuVD82av65KZkrGrWi5qLMah5SdNq6uftawDbgKa2wv6S +Public Key (x,y) coordinates is: + (41637322786646325214887832269588396900663353932545912953362782457239403430124L, + 16388935128781238405526710466724741593761085120864331449066658622400339362166L) +Public Key (hex) is: + 045c0de3b9c8ab18dd04e3511243ec2952002dbfadc864b9628910169d9b9b00ec + 243bcefdd4347074d44bd7356d6a53c495737dd96295e2a9374bf5f02ebfc176 +Compressed Public Key (hex) is: + 025c0de3b9c8ab18dd04e3511243ec2952002dbfadc864b9628910169d9b9b00ec +Bitcoin Address (b58check) is: + 1thMirt546nngXqyPEz532S8fLwbozud8 +Compressed Bitcoin Address (b58check) is: + 14cxpo3MBCYYWCgF74SWTdcmxipnGUsPw3 ---- @@ -509,7 +534,8 @@ Here are some examples of mnemonic codes and the seeds they produce: |======= | entropy input (128 bits) | 0c1e24e5917779d297e14d45f14e1a1a | mnemonic (12 words) | army van defense carry jealous true garbage claim echo media make crunch -| seed (512 bits) | 3338a6d2ee71c7f28eb5b882159634cd46a898463e9d2d0980f8e80dfbba5b0fa0291e5fb888a599b44b93187be6ee3ab5fd3ead7dd646341b2cdb8d08d13bf7 +| seed (512 bits) | 3338a6d2ee71c7f28eb5b882159634cd46a898463e9d2d0980f8e80dfbba5b0fa0291e5fb88\ +8a599b44b93187be6ee3ab5fd3ead7dd646341b2cdb8d08d13bf7 |======= @@ -518,8 +544,8 @@ Here are some examples of mnemonic codes and the seeds they produce: | entropy input (256 bits) | 2041546864449caff939d32d574753fe684d3c947c3346713dd8423e74abcf8c | mnemonic (24 words) | cake apple borrow silk endorse fitness top denial coil riot stay wolf luggage oxygen faint major edit measure invite love trap field dilemma oblige -| seed (512 bits) | 3972e432e99040f75ebe13a660110c3e29d131a2c808c7ee5f1631d0a977 -fcf473bee22fce540af281bf7cdeade0dd2c1c795bd02f1e4049e205a0158906c343 +| seed (512 bits) | 3972e432e99040f75ebe13a660110c3e29d131a2c808c7ee5f1631d0a977fcf473bee22\ +fce540af281bf7cdeade0dd2c1c795bd02f1e4049e205a0158906c343 |======= [[hd_wallets]] @@ -699,17 +725,21 @@ Using the command line tool +sx+, introduced in chapter 3, you can experiment wi ---- $ sx hd-seed > m # create a new master private key from a seed and store in file "m" $ cat m # show the master extended private key -xprv9s21ZrQH143K38iQ9Y5p6qoB8C75TE71NfpyQPdfGvzghDt39DHPFpovvtWZaRgY5uPwV7RpEgHs7cvdgfiSjLjjbuGKGcjRyU7RGGSS8Xa +xprv9s21ZrQH143K38iQ9Y5p6qoB8C75TE71NfpyQPdfGvzghDt39DHPFpovvtWZaRgY5uPwV7RpEgHs7cvd\ +gfiSjLjjbuGKGcjRyU7RGGSS8Xa $ cat m | sx hd-pub 0 # generate the M/0 extended public key -xpub67xpozcx8pe95XVuZLHXZeG6XWXHpGq6Qv5cmNfi7cS5mtjJ2tgypeQbBs2UAR6KECeeMVKZBPLrtJunSDMstweyLXhRgPxdp14sk9tJPW9 +xpub67xpozcx8pe95XVuZLHXZeG6XWXHpGq6Qv5cmNfi7cS5mtjJ2tgypeQbBs2UAR6KECeeMVKZBPLrtJun\ +SDMstweyLXhRgPxdp14sk9tJPW9 $ cat m | sx hd-priv 0 # generate the m/0 extended private key -xprv9tyUQV64JT5qs3RSTJkXCWKMyUgoQp7F3hA1xzG6ZGu6u6Q9VMNjGr67Lctvy5P8oyaYAL9CAWrUE9i6GoNMKUga5biW6Hx4tws2six3b9c +xprv9tyUQV64JT5qs3RSTJkXCWKMyUgoQp7F3hA1xzG6ZGu6u6Q9VMNjGr67Lctvy5P8oyaYAL9CAWrUE9i6\ +GoNMKUga5biW6Hx4tws2six3b9c $ cat m | sx hd-priv 0 | sx hd-to-wif # show the private key of m/0 as a WIF L1pbvV86crAGoDzqmgY85xURkz3c435Z9nirMt52UbnGjYMzKBUN $ cat m | sx hd-pub 0 | sx hd-to-address # show the bitcoin address of M/0 1CHCnCjgMNb6digimckNQ6TBVcTWBAmPHK $ cat m | sx hd-priv 0 | sx hd-priv 12 --hard | sx hd-priv 4 # generate m/0/12'/4 -xprv9yL8ndfdPVeDWJenF18oiHguRUj8jHmVrqqD97YQHeTcR3LCeh53q5PXPkLsy2kRaqgwoS6YZBLatRZRyUeAkRPe1kLR1P6Mn7jUrXFquUt +xprv9yL8ndfdPVeDWJenF18oiHguRUj8jHmVrqqD97YQHeTcR3LCeh53q5PXPkLsy2kRaqgwoS6YZBLatRZR\ +yUeAkRPe1kLR1P6Mn7jUrXFquUt ---- ==== @@ -735,14 +765,14 @@ Test the following encrypted keys using bitaddress.org to see how you can get th |======= -[[p2sh]] +[[p2sh_addresses]] ==== Pay To Script Hash (P2SH) and Multi-Sig Addresses As we know, traditional bitcoin addresses begin with the number “1” and are derived from the public key, which is derived from the private key. While anyone can send bitcoin to a “1” address, that bitcoin can only be spent by presenting the corresponding private key signature and public key hash. Bitcoin addresses that begin with the number “3” are pay-to-script-hash (P2SH) addresses, sometimes erroneously called multi-signature or multi-sig addresses. They designate the beneficiary of a bitcoin transaction as the hash of a script, instead of the owner of a public key. The feature was introduced in January 2012 with Bitcoin Improvement Proposal 16 or BIP0016 (see <>) and is being widely adopted because it provides the opportunity to add functionality to the address itself. Unlike transactions that "send" funds to traditional “1” bitcoin addresses, also known as pay-to-public-key-hash (P2PKH), funds sent to “3” addresses require something more than the presentation of one public key hash and one private key signature as proof of ownership. The requirements are designated at the time the address is created, within the script, and all inputs to this address will be encumbered with the same requirements. -A pay-to-script-hash address is created from a transaction script, which defines who can spend a transaction output (for more detail, see <>). Encoding a pay-to-script hash address involves using the same double-hash function as used during creation of a bitcoin address, only applied on the script instead of the public key. +A pay-to-script-hash address is created from a transaction script, which defines who can spend a transaction output (for more detail, see <>). Encoding a pay-to-script hash address involves using the same double-hash function as used during creation of a bitcoin address, only applied on the script instead of the public key. ---- script hash = RIPEMD160(SHA256(script)) @@ -823,6 +853,7 @@ In both cases, one of the risks of using a single fixed address (rather than a s So does a vanity address increase security? If Eugenia generates the vanity address "1Kids33q44erFfpeXrmDSz7zEqG2FesZEN", users are likely to look at the vanity pattern word _and a few characters beyond_, for example noticing the "1Kids33" part of the address. That would force an attacker to generate a vanity address matching at least 6 characters (2 more), expending an effort that is 3,364 times (58 x 58) higher than the effort Eugenia expended for her 4 character vanity. Essentially, the effort Eugenia expends (or pays a vanity pool for) "pushes" the attacker into having to produce a longer pattern vanity. If Eugenia pays a pool to generate an 8 character vanity address, the attacker would be pushed into the realm of 10 characters which is infeasible on a personal computer and expensive even with a custom vanity-mining rig or vanity pool. What is affordable for Eugenia becomes unaffordable for the attacker, especially if the potential reward of fraud is not high enough to cover the cost of the vanity address generation. +[[paper_wallets]] ==== Paper Wallets Paper wallets are bitcoin private keys printed on paper. Often the paper wallet also includes the corresponding bitcoin address, for convenience, but this is not necessary since it can be derived from the private key. Paper wallets are a very effective way to create backups or offline bitcoin storage, also known as "cold storage". As a backup mechanism, a paper wallet can provide security against the loss of key due to a computer mishap such as a hard drive failure, theft, or accidental deletion. As a "cold storage" mechanism, if the paper wallet keys are generated offline and never stored on a computer system, they are much more secure against hackers, key-loggers and other online computer threats. diff --git a/ch05.asciidoc b/ch05.asciidoc index 6b41fb96..0109e89f 100644 --- a/ch05.asciidoc +++ b/ch05.asciidoc @@ -1,5 +1,6 @@ [[ch5]] -== Chapter 5 - Transactions +[[transactions]] +== Transactions [[ch5_intro]] === Introduction @@ -11,37 +12,39 @@ In this chapter we will examine all the various forms of transactions, what they [[tx_lifecycle]] === Transaction Lifecycle -A transaction's lifecycle starts with the transaction's creation, also known as origination. The transaction is then signed, with one or more signatures indicating the authorization to spend the funds referenced by the transaction. The transaction is then broadcast on the bitcoin network, where each network node (participant) validates and propagates the transaction until it reaches (almost) every node in the network. Finally, the transaction is verified by a mining node and included in a block of transactions that is recorded on the blockchain. Once recorded on the blockchain and confirmed by sufficient subsequent blocks (confirmations), the transaction is a permanent part of the bitcoin ledger and is accepted as valid by all participants. The funds allocated to a new owner by the transaction can then be spent in a new transaction, extending the chain of ownership and beginning the lifecycle of a transaction again. +A transaction's lifecycle starts with the transaction's creation, also known as origination. The transaction is then signed, with one or more signatures indicating the authorization to spend the funds referenced by the transaction. The transaction is then broadcast on the bitcoin network, where each network node (participant) validates and propagates the transaction until it reaches (almost) every node in the network. Finally, the transaction is verified by a mining node and included in a block of transactions that is recorded on the blockchain. + +Once recorded on the blockchain and confirmed by sufficient subsequent blocks (confirmations), the transaction is a permanent part of the bitcoin ledger and is accepted as valid by all participants. The funds allocated to a new owner by the transaction can then be spent in a new transaction, extending the chain of ownership and beginning the lifecycle of a transaction again. [[tx_origination]] ==== Creating Transactions -In some ways it helps to think of a transaction in the same way as a paper cheque. Like a cheque, a transaction is an instrument that expresses the intent to transfer money and is not visible to the financial system until it is submitted for execution. Like a cheque, the originator of the transaction does not have to be the one signing the transaction. Transactions can be created online or offline by anyone, even if the person creating the transaction is not an authorized signer on the account. For example an accounts payable clerk might process payable cheques for signature by the CEO. Similarly, an accounts payable clerk can create bitcoin transactions and then have the CEO apply digital signatures to make them valid. While a cheque references a specific account as the source of the funds, a bitcoin transaction references a specific previous transaction as its source, rather than an account. +In some ways it helps to think of a transaction in the same way as a paper cheque. Like a cheque, a transaction is an instrument that expresses the intent to transfer money and is not visible to the financial system until it is submitted for execution. Like a cheque, the originator of the transaction does not have to be the one signing the transaction. + +Transactions can be created online or offline by anyone, even if the person creating the transaction is not an authorized signer on the account. For example an accounts payable clerk might process payable cheques for signature by the CEO. Similarly, an accounts payable clerk can create bitcoin transactions and then have the CEO apply digital signatures to make them valid. While a cheque references a specific account as the source of the funds, a bitcoin transaction references a specific previous transaction as its source, rather than an account. Once a transaction has been created, it is signed by the owner (or owners) of the source funds. If it was properly formed and signed, the signed transaction is now valid and contains all the information needed to execute the transfer of funds. Finally, the valid transaction has to reach the bitcoin network so that it can be propagated until it reaches a miner for inclusion in the pubic ledger, the blockchain. [[tx_bcast]] ==== Broadcasting Transactions to the Bitcoin Network -First, a transaction needs to be delivered to the bitcoin network so that it can be propagated and be included in the blockchain. In essence, a bitcoin transaction is just 300-400 bytes of data and has to reach any one of tens of thousands of bitcoin nodes. The sender does not need to trust the nodes they use to broadcast the transaction, as long as they use more than one to ensure that it propagates. The nodes don't need to trust the sender or establish the sender's "identity". Since the transaction is signed and contains no confidential information, private keys or credentials, it can be publicly broadcast using any underlying network transport that is convenient. Unlike credit card transactions, for example, which contain sensitive information and can only be transmitted on encrypted networks, a bitcoin transaction can be sent over any network. As long as the transaction can reach a bitcoin node that will propagate it into the bitcoin network, it doesn't matter how it is transported to the first node. Bitcoin transactions can therefore be transmitted to the bitcoin network over insecure networks such as Wifi, Bluetooth, NFC, Chirp, barcodes or by copying and pasting into a web form. In extreme cases, a bitcoin transaction could be transmitted over packet radio, satellite relay or shortwave using burst transmission, spread spectrum or frequency hopping to evade detection and jamming. A bitcoin transaction could even be encoded as smileys (emoticons) and posted in a public forum or sent as a text message or Skype chat message. Bitcoin has turned money into a data structure, making it virtually impossible to stop anyone from creating and executing a bitcoin transaction. +First, a transaction needs to be delivered to the bitcoin network so that it can be propagated and be included in the blockchain. In essence, a bitcoin transaction is just 300-400 bytes of data and has to reach any one of tens of thousands of bitcoin nodes. The sender does not need to trust the nodes they use to broadcast the transaction, as long as they use more than one to ensure that it propagates. The nodes don't need to trust the sender or establish the sender's "identity". Since the transaction is signed and contains no confidential information, private keys or credentials, it can be publicly broadcast using any underlying network transport that is convenient. Unlike credit card transactions, for example, which contain sensitive information and can only be transmitted on encrypted networks, a bitcoin transaction can be sent over any network. As long as the transaction can reach a bitcoin node that will propagate it into the bitcoin network, it doesn't matter how it is transported to the first node. + +Bitcoin transactions can therefore be transmitted to the bitcoin network over insecure networks such as Wifi, Bluetooth, NFC, Chirp, barcodes or by copying and pasting into a web form. In extreme cases, a bitcoin transaction could be transmitted over packet radio, satellite relay or shortwave using burst transmission, spread spectrum or frequency hopping to evade detection and jamming. A bitcoin transaction could even be encoded as smileys (emoticons) and posted in a public forum or sent as a text message or Skype chat message. Bitcoin has turned money into a data structure, making it virtually impossible to stop anyone from creating and executing a bitcoin transaction. [[tx_propagation]] ==== Propagating Transactions on the Bitcoin Network -Once a bitcoin transaction is sent to any node connected to the bitcoin network, the transaction will be validated by that node. If valid, that node will propagate it to the other nodes to which it is connected and a success message will be returned synchronously to the originator. If the transaction is invalid, the node will reject it and synchronously return a rejection message to the originator. The bitcoin network is a peer-to-peer network meaning that each bitcoin node is connected to a few other bitcoin nodes that it discovers during startup through the peer-to-peer protocol. The entire network forms a loosely connected mesh without a fixed topology or any structure making all nodes equal peers. Messages, including transactions and blocks, are propagated from each node to the peers to which it is connected. A new validated transaction injected into any node on the network will be sent to 3 to 4 of the neighboring nodes, each of which will send it to 3 to 4 more nodes and so on. In this way, within a few seconds a valid transaction will propagate in an exponentially expanding ripple across the network until all connected nodes have received it. The bitcoin network is designed to propagate transactions and blocks to all nodes in an efficient and resilient manner that is resistant to attacks. To prevent spamming, denial of service attacks, or other nuisance attacks against the bitcoin system, every node will independently validate every transaction before propagating it further. A malformed transaction will not get beyond one node. The rules by which transactions are validated are explained in more detail in <>. +Once a bitcoin transaction is sent to any node connected to the bitcoin network, the transaction will be validated by that node. If valid, that node will propagate it to the other nodes to which it is connected and a success message will be returned synchronously to the originator. If the transaction is invalid, the node will reject it and synchronously return a rejection message to the originator. -[[tx_mining]] -==== Mining Transactions into Blocks - -Some of the nodes in the bitcoin network participate in "mining". Mining is the process creating new blocks of transactions that will become part of the blockchain. Miners collect transactions and group them into blocks, they then attempt to prove each block with the proof-of-work algorithm. Blocks with a valid proof of work are added to and extend the linked chain of blocks called the blockchain. Once a transaction is added to the blockchain, the new owner of the funds can reference it in a new transaction and spend the funds. - -The blockchain forms the authoritative ledger of all transactions since bitcoin's beginning in 2009. The blockchain is the subject of the next chapter, where we will examine the formation of the authoritative record through the competitive process of proof-of-work, also known as mining. +The bitcoin network is a peer-to-peer network meaning that each bitcoin node is connected to a few other bitcoin nodes that it discovers during startup through the peer-to-peer protocol. The entire network forms a loosely connected mesh without a fixed topology or any structure making all nodes equal peers. Messages, including transactions and blocks, are propagated from each node to the peers to which it is connected. A new validated transaction injected into any node on the network will be sent to 3 to 4 of the neighboring nodes, each of which will send it to 3 to 4 more nodes and so on. In this way, within a few seconds a valid transaction will propagate in an exponentially expanding ripple across the network until all connected nodes have received it. +The bitcoin network is designed to propagate transactions and blocks to all nodes in an efficient and resilient manner that is resistant to attacks. To prevent spamming, denial of service attacks, or other nuisance attacks against the bitcoin system, every node will independently validate every transaction before propagating it further. A malformed transaction will not get beyond one node. The rules by which transactions are validated are explained in more detail in <>. [[tx_structure]] === Transaction Structure -A transaction is a data structure that encodes a transfer of value from a source of funds, called an "input", to a destination, called an "output". Transaction inputs and outputs are not related to accounts or identities. Instead you should think of them as bitcoin amounts, chunks of bitcoin, being locked with a specific secret which only the owner, or person who knows the secret, can unlock. +A transaction is a _data structure_ that encodes a transfer of value from a source of funds, called an _input_, to a destination, called an _output_. Transaction inputs and outputs are not related to accounts or identities. Instead you should think of them as bitcoin amounts, chunks of bitcoin, being locked with a specific secret which only the owner, or person who knows the secret, can unlock. A transaction contains a number of fields, as follows: @@ -58,7 +61,10 @@ A transaction contains a number of fields, as follows: | 4 bytes | Locktime | A unix timestamp or block number |======= -Note: Locktime defines the earliest time that a transaction can be added to the blockchain. It is set to zero in most transactions to indicate immediate execution. If locktime is non-zero and below 500 million, it is interpreted as a block height, meaning the transaction is not included in the blockchain prior to the specified block height. If it is above 500 million, it is interpreted as a Unix Epoch timestamp (seconds since Jan-1-1970) and the transaction is not included in the blockchain prior to the specified time. The use of locktime is equivalent to post-dating a paper cheque. +.Transaction Locktime +**** +Locktime defines the earliest time that a transaction can be added to the blockchain. It is set to zero in most transactions to indicate immediate execution. If locktime is non-zero and below 500 million, it is interpreted as a block height, meaning the transaction is not included in the blockchain prior to the specified block height. If it is above 500 million, it is interpreted as a Unix Epoch timestamp (seconds since Jan-1-1970) and the transaction is not included in the blockchain prior to the specified time. The use of locktime is equivalent to post-dating a paper cheque. +**** [[tx_inputs_outputs]] === Transaction Outputs and Inputs @@ -72,7 +78,11 @@ There are no accounts or balances in bitcoin, there are only _unspent transactio A UTXO can have an arbitrary value denominated as a multiple of satoshis. Just like dollars can be divided down to two decimal places as cents, bitcoins can be divided down to eight decimal places as satoshis. While UTXO can be any arbitrary value, once created it is indivisible just like a coin that cannot be cut in half. If a UTXO is larger than the desired value of a transaction, it must still be consumed in its entirety and change must be generated in the transaction. In other words, if you have a 20 bitcoin UTXO and want to pay 1 bitcoin, your transaction must consume the entire 20 bitcoin UTXO and produce two outputs: one paying 1 bitcoin to your desired recipient and another paying 19 bitcoin in change back to your wallet. As a result, most bitcoin transactions will generate change. -In simple terms, transactions consume the sender's available UTXO and create new UTXO locked to the recipient's bitcoin address. Imagine a shopper buying a $1.50 beverage, reaching into their wallet and trying to find a combination of coins and bank notes to cover the $1.50 cost. The shopper will choose exact change if available (a dollar bill and two quarters), or a combination of smaller denominations (six quarters), or if necessary, a larger unit such as a five dollar bank note. If they hand too much money, say $5, to the shop owner they will expect $3.50 change, which they will return to their wallet and have available for future transactions. Similarly, a bitcoin transaction must be created from a user's UTXO in whatever denominations that user has available. They cannot cut a UTXO in half any more than they can cut a dollar bill in half and use it as currency. The user's wallet application will typically select from the user's available UTXO various units to compose an amount greater than or equal to the desired transaction amount. As with real life, the bitcoin application can use several strategies to satisfy the purchase amount: combining several smaller units, finding exact change, or using a single unit larger than the transaction value and making change. All of this complex assembly of spendable UTXO is done by the user's wallet automatically and is invisible to users. It is only relevant if you are programmatically constructing raw transactions from UTXO. +Imagine a shopper buying a $1.50 beverage, reaching into their wallet and trying to find a combination of coins and bank notes to cover the $1.50 cost. The shopper will choose exact change if available (a dollar bill and two quarters), or a combination of smaller denominations (six quarters), or if necessary, a larger unit such as a five dollar bank note. If they hand too much money, say $5, to the shop owner they will expect $3.50 change, which they will return to their wallet and have available for future transactions. + +Similarly, a bitcoin transaction must be created from a user's UTXO in whatever denominations that user has available. They cannot cut a UTXO in half any more than they can cut a dollar bill in half and use it as currency. The user's wallet application will typically select from the user's available UTXO various units to compose an amount greater than or equal to the desired transaction amount. + +As with real life, the bitcoin application can use several strategies to satisfy the purchase amount: combining several smaller units, finding exact change, or using a single unit larger than the transaction value and making change. All of this complex assembly of spendable UTXO is done by the user's wallet automatically and is invisible to users. It is only relevant if you are programmatically constructing raw transactions from UTXO. The UTXO consumed by a transaction are called transaction inputs, while the UTXO created by a transaction are called transaction outputs. This way, chunks of bitcoin value move forward from owner to owner in a chain of transactions consuming and creating UTXO. Transactions consume UTXO unlocking it with the signature of the current owner and create UTXO locking it to the bitcoin address of the new owner. @@ -164,7 +174,10 @@ If we run the select-utxo.py script without a parameter it will attempt to const ---- $ python select-utxo.py 50000000 For transaction amount 50000000 Satoshis (0.500000 bitcoin) use: -([<7dbc497969c7475e45d952c4a872e213fb15d45e5cd3473c386a71a1b0c136a1:0 with 25000000 Satoshis>, <7f42eda67921ee92eae5f79bd37c68c9cb859b899ce70dba68c48338857b7818:0 with 16100000 Satoshis>, <6596fd070679de96e405d52b51b8e1d644029108ec4cbfe451454486796a1ecf:0 with 16050000 Satoshis>], 'Change: 7150000 Satoshis') +([<7dbc497969c7475e45d952c4a872e213fb15d45e5cd3473c386a71a1b0c136a1:0 with 25000000 Satoshis>, \ + <7f42eda67921ee92eae5f79bd37c68c9cb859b899ce70dba68c48338857b7818:0 with 16100000 Satoshis>, \ + <6596fd070679de96e405d52b51b8e1d644029108ec4cbfe451454486796a1ecf:0 with 16050000 Satoshis>],\ + 'Change: 7150000 Satoshis') ---- ==== @@ -219,7 +232,11 @@ If you forget to add a change output in a manually constructed transaction you w Let's see how this works in practice, by looking at Alice's coffee purchase again. Alice wants to spend 0.015 bitcoin to pay for coffee. To ensure this transaction is processed promptly, she will want to include a transaction fee, say 0.001. That will mean that the total cost of the transaction will be 0.016. Her wallet must therefore source a set of UTXO that adds up to 0.016 bitcoin or more and if necessary create change. Let's say her wallet has a 0.2 bitcoin UTXO available. It will therefore need to consume this UTXO, create one output to Bob's Cafe for 0.015, and a second output with 0.184 bitcoin in change back to her own wallet, leaving 0.001 bitcoin unallocated, as an implicit fee for the transaction. -Now let's look at a different scenario. Eugenia, our children's charity director in the Philippines has completed a fundraiser to purchase school books for the children. She received several thousand small donations from people all around the world, totaling 50 bitcoin. Now she wants to purchase hundreds of school books from a local publisher, paying in bitcoin. The charity received thousands of small donations from all around the world. As Eugenia's wallet application tries to construct a single larger payment transaction, it must source from the available UTXO set which is composed of many smaller amounts. That means that the resulting transaction will source from more than a hundred small-value UTXO as inputs and only one output, paying the book publisher. A transaction with that many inputs will be larger than one kilobyte, perhaps 2-3 kilobytes in size. As a result, it will require a higher fee than the minimal network fee of 0.0001 bitcoin. Eugenia's wallet application will calculate the appropriate fee by measuring the size of the transaction and multiplying that by the per-kilobyte fee. Many wallets will overpay fees for larger transactions to ensure the transaction is processed promptly. The higher fee is not because Eugenia is spending more money, but because her transaction is more complex and larger in size - the fee is independent of the transaction's bitcoin value. +Now let's look at a different scenario. Eugenia, our children's charity director in the Philippines has completed a fundraiser to purchase school books for the children. She received several thousand small donations from people all around the world, totaling 50 bitcoin. Now she wants to purchase hundreds of school books from a local publisher, paying in bitcoin. The charity received thousands of small donations from all around the world, so her wallet is full of very small payments (UTXO). + +As Eugenia's wallet application tries to construct a single larger payment transaction, it must source from the available UTXO set which is composed of many smaller amounts. That means that the resulting transaction will source from more than a hundred small-value UTXO as inputs and only one output, paying the book publisher. A transaction with that many inputs will be larger than one kilobyte, perhaps 2-3 kilobytes in size. As a result, it will require a higher fee than the minimal network fee of 0.0001 bitcoin. + +Eugenia's wallet application will calculate the appropriate fee by measuring the size of the transaction and multiplying that by the per-kilobyte fee. Many wallets will overpay fees for larger transactions to ensure the transaction is processed promptly. The higher fee is not because Eugenia is spending more money, but because her transaction is more complex and larger in size - the fee is independent of the transaction's bitcoin value. [[tx_chains]] === Transaction Chaining and Orphan Transactions @@ -352,7 +369,8 @@ The locking script above can be satisfied with an unlocking script of the form: The two scripts together would form the combined validation script below: ---- - OP_DUP OP_HASH160 OP_EQUAL OP_CHECKSIG + OP_DUP OP_HASH160 \ + OP_EQUAL OP_CHECKSIG ---- When executed, this combined script will evaluate to TRUE if, and only if, the unlocking script matches the conditions set by the locking script. In other words, the result will be TRUE if the unlocking script has a valid signature from the Cafe's private key which corresponds to the public key hash set as an encumbrance. @@ -416,7 +434,8 @@ _Note: The prefix OP_0 is required because of a bug in the original implementati The two scripts together would form the combined validation script below: ---- -OP_0 2 3 OP_CHECKMULTISIG +OP_0 \ +2 3 OP_CHECKMULTISIG ---- When executed, this combined script will evaluate to TRUE if, and only if, the unlocking script matches the conditions set by the locking script. In this case, the condition is whether the unlocking script has a valid signature from the two private keys that correspond to two of the three public keys set as an encumbrance. @@ -452,7 +471,8 @@ In chapter 1 we introduced Mohammed, an electronics importer based in Dubai. Moh The resulting script is quite long and looks like this: ---- -2 5 OP_CHECKMULTISIG +2 \ + 5 OP_CHECKMULTISIG ---- While multi-signature scripts are a powerful feature, they are cumbersome to use. Given the script above, Mohammed would have to communicate this script to every customer prior to payment. Each customer would have to use special bitcoin wallet software with the ability to create custom transaction scripts and each customer would have to understand how to create a transaction using custom scripts. Furthermore, the resulting transaction would be about five times larger than a simple payment transaction, as this script contains very long public keys. The burden of that extra-large transaction would be borne by the customer in the form of fees. Finally, a large transaction script like this would be carried in the UTXO set in RAM in every full node, until it was spent. All of these issues make using complex output scripts difficult in practice. @@ -482,18 +502,25 @@ Let's look at Mohammed's company, their complex multi-signature script and the r First, the multi-signature script that Mohammed's company uses for all incoming payments from customers: ---- -2 5 OP_CHECKMULTISIG +2 \ + 5 OP_CHECKMULTISIG ---- If the placeholders above are replaced by actual public keys (shown below as 520 bit numbers starting with 04) you can see that this script becomes very long: ---- 2 -04C16B8698A9ABF84250A7C3EA7EEDEF9897D1C8C6ADF47F06CF73370D74DCCA01CDCA79DCC5C395D7EEC6984D83F1F50C900A24DD47F569FD4193AF5DE762C587 -04A2192968D8655D6A935BEAF2CA23E3FB87A3495E7AF308EDF08DAC3C1FCBFC2C75B4B0F4D0B1B70CD2423657738C0C2B1D5CE65C97D78D0E34224858008E8B49 -047E63248B75DB7379BE9CDA8CE5751D16485F431E46117B9D0C1837C9D5737812F393DA7D4420D7E1A9162F0279CFC10F1E8E8F3020DECDBC3C0DD389D9977965 -0421D65CBD7149B255382ED7F78E946580657EE6FDA162A187543A9D85BAAA93A4AB3A8F044DADA618D087227440645ABE8A35DA8C5B73997AD343BE5C2AFD94A5 -043752580AFA1ECED3C68D446BCAB69AC0BA7DF50D56231BE0AABF1FDEEC78A6A45E394BA29A1EDF518C022DD618DA774D207D137AAB59E0B000EB7ED238F4D800 -5 OP_CHECKMULTISIG +04C16B8698A9ABF84250A7C3EA7EEDEF9897D1C8C6ADF47F06CF73370\ +D74DCCA01CDCA79DCC5C395D7EEC6984D83F1F50C900A24DD47F569FD\ +4193AF5DE762C58704A2192968D8655D6A935BEAF2CA23E3FB87A3495\ +E7AF308EDF08DAC3C1FCBFC2C75B4B0F4D0B1B70CD2423657738C0C2B\ +1D5CE65C97D78D0E34224858008E8B49047E63248B75DB7379BE9CDA8\ +CE5751D16485F431E46117B9D0C1837C9D5737812F393DA7D4420D7E1\ +A9162F0279CFC10F1E8E8F3020DECDBC3C0DD389D99779650421D65CB\ +D7149B255382ED7F78E946580657EE6FDA162A187543A9D85BAAA93A4\ +AB3A8F044DADA618D087227440645ABE8A35DA8C5B73997AD343BE5C2\ +AFD94A5043752580AFA1ECED3C68D446BCAB69AC0BA7DF50D56231BE0\ +AABF1FDEEC78A6A45E394BA29A1EDF518C022DD618DA774D207D137AA\ +B59E0B000EB7ED238F4D800 5 OP_CHECKMULTISIG ---- The entire script above can instead be represented by a 20-byte cryptographic hash, by first applying the SHA256 hashing algorithm and then applying the RIPEMD160 algorithm on the result. The 20-byte hash of the above script is: diff --git a/ch06.asciidoc b/ch06.asciidoc index c5493ed7..81b8bebc 100644 --- a/ch06.asciidoc +++ b/ch06.asciidoc @@ -1,8 +1,7 @@ [[ch6]] +[[bitcoin_network]] == The Bitcoin Network -=== Introduction - === Peer-to-Peer Network Architecture Bitcoin is structured as a peer-to-peer network architecture on top of the Internet. The term peer-to-peer or P2P means that the computers that participate in the network are peers to each other, that they are all equal, that there are no "special" nodes and that all nodes share the burden of providing network services. The network nodes interconnect in a mesh network with a "flat" topology. There is no "server", no centralized service, and no hierarchy within the network. Nodes in a peer-to-peer network both provide and consume services at the same time with reciprocity acting as the incentive for participation. Peer-to-peer networks are inherently resilient, de-centralized, and open. The pre-eminent example of a P2P network architecture was the early Internet itself, where nodes on the IP network were equal. Today's Internet architecture is more hierarchical, but the Internet Protocol still retains its flat-topology essence. Beyond bitcoin, the largest and most successful application of P2P technologies is file sharing with Napster as the pioneer and bittorrent as the most recent evolution of the architecture. @@ -81,8 +80,13 @@ image::images/AddressPropagation.png["AddressPropagation"] A node must connect to a few different peers in order to establish diverse paths into the bitcoin network. Paths are not reliable, nodes come and go, and so the node must continue to discover new nodes as it loses old connections as well as assist other nodes when they bootstrap. Only one connection is needed to bootstrap, as the first node can offer introductions to its peer nodes and those peers can offer further introductions. It's also unnecessary and wasteful of network resources to connect to more than a handful of nodes. After bootstrapping, a node will remember its most recent successful peer connections, so that if it is rebooted it can quickly reestablish connections with its former peer network. If none of the former peers respond to its connection request, the node can use the seed nodes to bootstrap again. On a node running the Bitcoin Core client, you can list the peer connections with the command +getpeerinfo+: + +[source,bash] ---- $ bitcoin-cli getpeerinfo +---- +[source,json] +---- [ { "addr" : "85.213.199.39:8333", @@ -149,6 +153,7 @@ This process of comparing the local blockchain with the peers and retrieving any .Node synchronizing the blockchain by retrieving blocks from a peer image::images/InventorySynchronization.png["InventorySynchronization"] +[[spv_nodes]] === Simplified Payment Verification (SPV) Nodes Not all nodes have the ability to store the full blockchain. Many bitcoin clients are designed to run on space- and power-constrained devices, such as smartphones, tablets or embedded systems. For such devices, a _simplified payment verification_ (SPV) method is used to allow them to operate without storing the full blockchain. These types of clients are called SPV clients or lightweight clients. As bitcoin adoption surges, the SPV node is becoming the most common form of bitcoin node, especially for bitcoin wallets. diff --git a/ch07.asciidoc b/ch07.asciidoc index f227fe27..96ded401 100644 --- a/ch07.asciidoc +++ b/ch07.asciidoc @@ -1,8 +1,9 @@ [[ch7]] +[[blockchain]] == The Blockchain -[[blockchain]] -=== The Blockchain + +=== Introduction The blockchain data structure is an ordered back-linked list of blocks of transactions. The blockchain can be stored as a flat file, or in a simple database. The bitcoin core client stores the blockchain metadata using Google's LevelDB database. Blocks are linked "back", each referring to the previous block in the chain. The blockchain is often visualized as a vertical stack, with blocks layered on top of each other and the first block ever serving as the foundation of the stack. The visualization of blocks stacked on top of each other results in the use of terms like "height" to refer to the distance from the first block, and "top" or "tip" to refer to the most recently added block. @@ -72,6 +73,7 @@ The first block in the blockchain is called the _genesis block_ and was created Every node always starts with a blockchain of at least one block because the genesis block is statically encoded within the bitcoin client software, such that it cannot be altered. Every node always "knows" the genesis block's hash and structure, the fixed time it was created and even the single transaction within. Thus, every node has the starting point for the blockchain, a secure "root" from which to build a trusted blockchain. See the statically encoded genesis block inside the Bitcoin Core client, in chainparams.cpp: + https://github.com/bitcoin/bitcoin/blob/3955c3940eff83518c186facfec6f50545b5aab5/src/chainparams.cpp#L123 The genesis block has the identifier hash +000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f+. You can search for that block hash in any block explorer website, such as blockchain.info, and you will find a page describing the contents of this block, with a URL containing that hash: @@ -82,8 +84,12 @@ https://blockexplorer.com/block/000000000019d6689c085ae165831e934ff763ae46a2a6c1 Using the Bitcoin Core reference client on the command-line: +[source,bash] ---- $ bitcoind getblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f +---- +[source,json] +---- { "hash" : "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "confirmations" : 308321, @@ -111,6 +117,8 @@ Bitcoin nodes maintain a local copy of the blockchain, starting at the genesis b Let's assume, for example, that a node has 277,314 blocks in the local copy of the blockchain. The last block the node knows about is block 277,314, with a block header hash of +00000000000000027e7ba6fe7bad39faf3b5a83daed765f05f7d1b71a1632249+. The bitcoin node then receives a new block from the network, which it parses as follows: + +[source,json] ---- { "size" : 43560, @@ -125,7 +133,7 @@ The bitcoin node then receives a new block from the network, which it parses as "tx" : [ "257e7497fb8bc68421eb2c7b699dbab234831600e7352f0d9e6522c7cf3f6c77", - [... many more transactions omitted ...] + #[... many more transactions omitted ...] "05cfd38f6ae6aa83674cc99e4d75a1458c165b7ab84725eda41d018a09176634" ] @@ -175,7 +183,7 @@ The same method for constructing a tree from four transactions can be generalize .A Merkle Tree summarizing many data elements image::images/MerkleTreeLarge.png["merkle_tree_large"] -To prove that a specific transaction is included in a block, a node only needs to produce +log~2~(N)+ 32-byte hashes, constituting an _authentication path_ or _merkle path_ connecting the specific transaction to the root of the tree. This is especially important as the number of transactions increases, because the base-2 logarithm of the number of transactions increases much more slowly. This allows bitcoin nodes to efficiently produce paths of ten or twelve hashes (320-384 bytes) which can provide proof of a single transaction out of more than a thousand transactions in a megabyte sized block. In the example below, a node can prove that a transaction K is included in the block by producing a merkle path that is only four 32-byte hashes long (128 bytes total). The path consists of the four hashes H~L~, H~IJ~, H~MNOP~ and H~ABCDEFGH~. With those four hashes provided as an authentication path, any node can prove that H~K~ is included in the merkle root by computing four additional pair-wise hashes H~KL~, H~IJKL~ and H~IJKLMNOP~ that lead to the merkle root. +To prove that a specific transaction is included in a block, a node only needs to produce +log~2~(N)+ 32-byte hashes, constituting an _authentication path_ or _merkle path_ connecting the specific transaction to the root of the tree. This is especially important as the number of transactions increases, because the base-2 logarithm of the number of transactions increases much more slowly. This allows bitcoin nodes to efficiently produce paths of ten or twelve hashes (320-384 bytes) which can provide proof of a single transaction out of more than a thousand transactions in a megabyte sized block. In the example below, a node can prove that a transaction K is included in the block by producing a merkle path that is only four 32-byte hashes long (128 bytes total). The path consists of the four hashes (noted in blue in the diagram below) H~L~, H~IJ~, H~MNOP~ and H~ABCDEFGH~. With those four hashes provided as an authentication path, any node can prove that H~K~ (noted in green in the diagram below) is included in the merkle root by computing four additional pair-wise hashes H~KL~, H~IJKL~ and H~IJKLMNOP~ (outlined in a dotted line in the diagram below) that lead to the merkle root. [[merkle_tree_path]] .A Merkle Path used to prove inclusion of a data element diff --git a/ch08.asciidoc b/ch08.asciidoc index 1f64a080..b8455600 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -2,23 +2,31 @@ == Mining and Consensus [[mining]] -=== Introduction - Mining and Consensus +=== Introduction -Mining is the process by which new bitcoin is added to the money supply. Mining also serves to secure the bitcoin system against fraudulent transactions or transactions spending the same amount of bitcoin more than once, known as a double-spend. Miners provide processing power to the bitcoin network in exchange for the opportunity to be rewarded bitcoin. Miners validate new transactions and record them on the global ledger. A new block, containing transactions that occurred since the last block, is "mined" every 10 minutes, thereby adding those transactions to the blockchain. Transactions that become part of a block and added to the blockchain are considered "confirmed", which allows the new owners of bitcoin to spend the bitcoin they received in those transactions. Miners receive two types of reward for mining: new coins created with each new block and transaction fees from all the transactions included in the block. To earn this reward, the miners compete to solve a difficult mathematical problem based on a cryptographic hash algorithm. The solution to the problem, called the Proof-of-Work, is included in the new block and acts as proof that the miner expended significant computing effort. The competition to solve the Proof-of-Work algorithm to earn reward and the right to record transactions on the blockchain is the basis for bitcoin's security model. +Mining is the process by which new bitcoin is added to the money supply. Mining also serves to secure the bitcoin system against fraudulent transactions or transactions spending the same amount of bitcoin more than once, known as a double-spend. Miners provide processing power to the bitcoin network in exchange for the opportunity to be rewarded bitcoin. + +Miners validate new transactions and record them on the global ledger. A new block, containing transactions that occurred since the last block, is "mined" every 10 minutes, thereby adding those transactions to the blockchain. Transactions that become part of a block and added to the blockchain are considered "confirmed", which allows the new owners of bitcoin to spend the bitcoin they received in those transactions. + +Miners receive two types of reward for mining: new coins created with each new block and transaction fees from all the transactions included in the block. To earn this reward, the miners compete to solve a difficult mathematical problem based on a cryptographic hash algorithm. The solution to the problem, called the Proof-of-Work, is included in the new block and acts as proof that the miner expended significant computing effort. The competition to solve the Proof-of-Work algorithm to earn reward and the right to record transactions on the blockchain is the basis for bitcoin's security model. The process of new coin generation is called mining, because the reward is designed to simulate diminishing returns, just like mining for precious metals. Bitcoin's money supply is created through mining, similar to how a central bank issues new money by printing bank notes. The amount of newly created bitcoin a miner can add to a block decreases approximately every four years (or precisely every 210,000 blocks). It started at 50 bitcoin per block in January of 2009 and halved to 25 bitcoin per block in November of 2012. It will halve again to 12.5 bitcoin per block sometime in 2016. Based on this formula, bitcoin mining rewards decrease exponentially until approximately the year 2140 when all bitcoin (20.99999998 million) will have been issued. After 2140, no new bitcoins will be issued. Bitcoin miners also earn fees from transactions. Every transaction may include a transaction fee, in the form of a surplus of bitcoin between the transaction's inputs and outputs. The winning bitcoin miner gets to "keep the change" on the transactions included in the winning block. Today, the fees represent 0.5% or less of a bitcoin miner's income, the vast majority coming from the newly minted bitcoins. However, as the reward decreases over time and the number of transactions per block increases, a greater proportion of bitcoin mining earnings will come from fees. After 2140, all bitcoin miner earnings will be in the form of transaction fees. -The word "mining" is somewhat misleading. By evoking the extraction of precious metals, it focuses our attention on the reward for mining, the new bitcoins in each block. While mining is incentivized by this reward, the primary purpose of mining is not the reward or the generation of new coins. If you view mining only as the process by which coins are created you are mistaking the means (incentives) as a goal of the process. Mining is the main process of the de-centralized clearinghouse, by which transactions are validated and cleared. Mining secures the bitcoin system and enables the emergence of network-wide consensus without a central authority. Mining is the invention that makes bitcoin special, a de-centralized security mechanism that is the basis for peer-to-peer digital cash. The reward of newly minted coins and transaction fees is an incentive scheme that aligns the actions of miners with the security of the network, while simultaneously implementing the monetary supply. +The word "mining" is somewhat misleading. By evoking the extraction of precious metals, it focuses our attention on the reward for mining, the new bitcoins in each block. While mining is incentivized by this reward, the primary purpose of mining is not the reward or the generation of new coins. If you view mining only as the process by which coins are created you are mistaking the means (incentives) as a goal of the process. Mining is the main process of the de-centralized clearinghouse, by which transactions are validated and cleared. Mining secures the bitcoin system and enables the emergence of network-wide consensus without a central authority. + +Mining is the invention that makes bitcoin special, a de-centralized security mechanism that is the basis for peer-to-peer digital cash. The reward of newly minted coins and transaction fees is an incentive scheme that aligns the actions of miners with the security of the network, while simultaneously implementing the monetary supply. In this chapter, we will first examine mining as a monetary supply mechanism and then look at the most important function of mining, the de-centralized emergent consensus mechanism that underpins bitcoin's security. ==== Bitcoin Economics and Currency Creation -Bitcoins are "minted" during the creation of each block at a fixed and diminishing rate. Each block, generated on average every 10 minutes, contains entirely new bitcoins, created from nothing. Every 210,000 blocks or approximately every four years the currency issuance rate is decreased by 50%. For the first four years of operation of the network, each block contained 50 new bitcoin. In November of 2012, the new bitcoin issuance rate was decreased to 25 bitcoin per block and it will decrease again to 12.5 bitcoin at block 420,000, which will be mined sometime in 2016. The rate of new coins decreases like this exponentially over 64 "halvings", until block 13,230,000 (mined approximately in year 2137) when it reaches the minimum currency unit of 1 satoshi. Finally, after 13.44 million blocks, in approximately 2140, all 2,099,999,997,690,000 satoshis, or almost 21 million bitcoin will be issued. Thereafter, blocks will contain no new bitcoin, and miners will be rewarded solely through the transaction fees. +Bitcoins are "minted" during the creation of each block at a fixed and diminishing rate. Each block, generated on average every 10 minutes, contains entirely new bitcoins, created from nothing. Every 210,000 blocks or approximately every four years the currency issuance rate is decreased by 50%. For the first four years of operation of the network, each block contained 50 new bitcoin. -In the example code below, we calculate the total amount of bitcoin that will be issued: +In November of 2012, the new bitcoin issuance rate was decreased to 25 bitcoin per block and it will decrease again to 12.5 bitcoin at block 420,000, which will be mined sometime in 2016. The rate of new coins decreases like this exponentially over 64 "halvings", until block 13,230,000 (mined approximately in year 2137) when it reaches the minimum currency unit of 1 satoshi. Finally, after 13.44 million blocks, in approximately 2140, all 2,099,999,997,690,000 satoshis, or almost 21 million bitcoin will be issued. Thereafter, blocks will contain no new bitcoin, and miners will be rewarded solely through the transaction fees. + +In the example code in <>, we calculate the total amount of bitcoin that will be issued: [[max_money]] .A script for calculating how much total bitcoin will be issued @@ -47,8 +55,8 @@ image::images/BitcoinMoneySupply.png["BitcoinMoneySupply"] The finite and diminishing issuance creates a fixed monetary supply that resists inflation. Unlike a fiat currency, which can be printed in infinite numbers by a central bank, bitcoin can never be inflated by printing. -===== Deflationary Money - +.Deflationary Money +**** The most important and debated consequence of a fixed and diminishing monetary issuance is that the currency will tend to be inherently _deflationary_. Deflation is the phenomenon of appreciation of value due to a mismatch in supply and demand that drives up the value (and exchange rate) of a currency. The opposite of inflation, price deflation means that the money has more purchasing power over time. Many economists argue that a deflationary economy is a disaster that should be avoided at all costs. That is because in a period of rapid deflation people will tend to hoard money instead of spending it, hoping that prices will fall. Such a phenomenon unfolded during Japan's "Lost Decade", when a complete collapse of demand pushed the currency into a deflationary spiral. @@ -56,6 +64,7 @@ Many economists argue that a deflationary economy is a disaster that should be a Bitcoin experts argue that deflation is not bad *per se*. Rather, deflation is associated with a collapse in demand because that is the only example of deflation we have to study. In a fiat currency with the possibility of unlimited printing, it is very difficult to enter a deflationary spiral unless there is a complete collapse in demand and an unwillingness to print money. Deflation in bitcoin is not caused by a collapse in demand, but by a predictably constrained supply. In practice, it has become evident that the hoarding instinct caused by a deflationary currency can be overcome by discounting from vendors, until the discount overcomes the hoarding instinct of the buyer. Since the seller is also motivated to hoard, the discount becomes the equilibrium price at which the two hoarding instincts are matched. With discounts of 30% on the bitcoin price, most bitcoin retailers are not experiencing difficulty overcoming the hoarding instinct and generating revenue. It remains to be seen whether the deflationary aspect of the currency is really a problem when it is not driven by rapid economic retraction. +**** === De-centralized Consensus @@ -199,7 +208,8 @@ The first transaction added to the block is a special transaction, called a _gen ==== [source, bash] ---- -$ bitcoin-cli getrawtransaction d5ada064c6417ca25c4308bd158c34b77e1c0eca2a73cda16c737e7424afba2f 1 +$ bitcoin-cli getrawtransaction\ + d5ada064c6417ca25c4308bd158c34b77e1c0eca2a73cda16c737e7424afba2f 1 ---- ==== @@ -209,7 +219,9 @@ $ bitcoin-cli getrawtransaction d5ada064c6417ca25c4308bd158c34b77e1c0eca2a73cda1 [source,json] ---- { - "hex" : "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0f03443b0403858402062f503253482fffffffff0110c08d9500000000232102aa970c592640d19de03ff6f329d6fd2eecb023263b9ba5d1b81c29b523da8b21ac00000000", + "hex" : "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff\ + 0f03443b0403858402062f503253482fffffffff0110c08d9500000000232102aa970c592640d19de03ff6f329d\ + 6fd2eecb023263b9ba5d1b81c29b523da8b21ac00000000", "txid" : "d5ada064c6417ca25c4308bd158c34b77e1c0eca2a73cda16c737e7424afba2f", "version" : 1, "locktime" : 0, @@ -224,7 +236,8 @@ $ bitcoin-cli getrawtransaction d5ada064c6417ca25c4308bd158c34b77e1c0eca2a73cda1 "value" : 25.09094928, "n" : 0, "scriptPubKey" : { - "asm" : "02aa970c592640d19de03ff6f329d6fd2eecb023263b9ba5d1b81c29b523da8b21 OP_CHECKSIG", + "asm" : "02aa970c592640d19de03ff6f329d6fd2eecb023263b9ba5d1b81c29b523da8b21\ + OP_CHECKSIG", "hex" : "2102aa970c592640d19de03ff6f329d6fd2eecb023263b9ba5d1b81c29b523da8b21ac", "reqSigs" : 1, "type" : "pubkey", @@ -328,7 +341,7 @@ In a generation transaction, the first two fields are set to values that do not Generation transactions do not have an unlocking script (a.k.a. scriptSig) field. Instead, this field is replaced by coinbase data, which must be between 2 and 100 bytes. Except for the first few bytes (see below) the rest of the coinbase data can be used by miners in any way they want; it is arbitrary data. -In the genesis block, for example, Satoshi Nakamoto added the text "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks" in the coinbase data, using it as a proof of the date and to convey a message. Currently, miners use the coinbase data to include extra nonce values (see <>) and strings identifying the mining pool, as we will see in the following sections. +In the genesis block, for example, Satoshi Nakamoto added the text "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks" in the coinbase data, using it as a proof of the date and to convey a message. Currently, miners use the coinbase data to include extra nonce values and strings identifying the mining pool, as we will see in the following sections. The first few bytes of the coinbase used to be arbitrary, but that is no longer the case. As per Bitcoin Improvement Proposal 34 (BIP0034), version-2 blocks (blocks with the version field set to 2) must contain the block height index as a script "push" operation in the beginning of the coinbase field. @@ -336,7 +349,7 @@ In block 277,316 we see that the coinbase (see <>), which The first byte, +03+ instructs the script execution engine to push the next 3 bytes onto the script stack (see <>). The next 3 bytes, +0x443b04+, are the block height encoded in little-endian format (backwards, least significant byte first). Reverse the order of the bytes and the result is +0x043b44+ which is 277,316 in decimal. -The next few hexadecimal digits (+03858402062+) are used to encode an extra _nonce_, or random value, used to find a suitable Proof-of-Work solution. This is discussed in more detail in the next section on <> +The next few hexadecimal digits (+03858402062+) are used to encode an extra _nonce_ (See <>), or random value, used to find a suitable Proof-of-Work solution. The final part of the coinbase data (+2f503253482f+) is the ASCII-encoded string "/P2SH/", which indicates that the mining node that mined this block supports the Pay-to-Script-Hash (P2SH) improvement defined in BIP0016. The introduction of the P2SH capability required a "vote" by miners to endorse either BIP0016 or BIP0017. Those endorsing the BIP0016 implementation were to include "/P2SH/" in their coinbase data. Those endorsing the BIP0017 implementation of P2SH were to include the string "p2sh/CHV" in their coinbase data. The BIP0016 was elected as the winner, and many miners continued including the string "/P2SH/" in their coinbase to indicate support for this feature. @@ -540,6 +553,7 @@ As you can see, increasing the difficulty by 1 bit causes an exponential increas At the time of writing this, the network is attempting to find a block whose header hash is less than +000000000000004c296e6376db3a241271f43fd3f5de7ba18986e517a243baa7+. As you can see, there are a lot of zeroes at the beginning of that hash, meaning that the acceptable range of hashes is much smaller, hence more difficult to find a valid hash. It will take on average more than 150 quadrillion hash calculations per second for the network to discover the next block. That seems like an impossible task, but fortunately the network is bringing 100 Peta Hashes per second of processing power to bear, which will be able to find a block in about 10 minutes on average. +[[difficulty_bits]] ==== Difficulty Representation In <> we saw that the block contains the difficulty target, in a notation called "difficulty bits" or just "bits", which in block 277,316 has the value of +0x1903a30c+. This notation expresses the difficulty target as a coefficient/exponent format, with the first two hexadecimal digits for the exponent and the next six hex digits as the coefficient. In this block, therefore, the exponent is +0x19+ and the coefficient is +0x03a30c+. @@ -568,6 +582,7 @@ switching back to hexadecimal: This means that a valid block for height 277,316 is one that has a block header hash that is less than the target. In binary that number would have more than the first 60 bits set to zero. With this level of difficulty, a single miner processing 1 trillion hashes per second (1 tera-hash per second or 1 TH/sec) would only find a solution once every 8,496 blocks or once every 59 days, on average. +[[difficulty_target]] ==== Difficulty Target and Re-Targeting As we saw above the target determines the difficulty and therefore affects how long it takes to find a solution to the Proof-of-Work algorithm. This leads to the obvious questions: Why is the difficulty adjustable, who adjusts it and how? @@ -588,30 +603,30 @@ Here's the code used in the Bitcoin Core client [source,cpp] ---- - // Go back by what we want to be 14 days worth of blocks - const CBlockIndex* pindexFirst = pindexLast; - for (int i = 0; pindexFirst && i < Params().Interval()-1; i++) - pindexFirst = pindexFirst->pprev; - assert(pindexFirst); +// Go back by what we want to be 14 days worth of blocks +const CBlockIndex* pindexFirst = pindexLast; +for (int i = 0; pindexFirst && i < Params().Interval()-1; i++) + pindexFirst = pindexFirst->pprev; +assert(pindexFirst); - // Limit adjustment step - int64_t nActualTimespan = pindexLast->GetBlockTime() - pindexFirst->GetBlockTime(); - LogPrintf(" nActualTimespan = %d before bounds\n", nActualTimespan); - if (nActualTimespan < Params().TargetTimespan()/4) - nActualTimespan = Params().TargetTimespan()/4; - if (nActualTimespan > Params().TargetTimespan()*4) - nActualTimespan = Params().TargetTimespan()*4; +// Limit adjustment step +int64_t nActualTimespan = pindexLast->GetBlockTime() - pindexFirst->GetBlockTime(); +LogPrintf(" nActualTimespan = %d before bounds\n", nActualTimespan); +if (nActualTimespan < Params().TargetTimespan()/4) + nActualTimespan = Params().TargetTimespan()/4; +if (nActualTimespan > Params().TargetTimespan()*4) + nActualTimespan = Params().TargetTimespan()*4; - // Retarget - uint256 bnNew; - uint256 bnOld; - bnNew.SetCompact(pindexLast->nBits); - bnOld = bnNew; - bnNew *= nActualTimespan; - bnNew /= Params().TargetTimespan(); +// Retarget +uint256 bnNew; +uint256 bnOld; +bnNew.SetCompact(pindexLast->nBits); +bnOld = bnNew; +bnNew *= nActualTimespan; +bnNew /= Params().TargetTimespan(); - if (bnNew > Params().ProofOfWorkLimit()) - bnNew = Params().ProofOfWorkLimit(); +if (bnNew > Params().ProofOfWorkLimit()) + bnNew = Params().ProofOfWorkLimit(); ---- ==== @@ -719,8 +734,6 @@ It is theoretically possible for a fork to extend to two blocks, if two blocks a Bitcoin's block interval of 10 minutes is a design compromise between fast confirmation times (settlement of transactions) and the probability of a fork. A faster block time would make transactions clear faster but lead to more frequent blockchain forks, whereas a slower block time would decrease the number of forks but make settlement slower. - - === Mining and the Hashing Race Bitcoin mining is an extremely competitive industry. The hashing power has increased exponentially, every year of bitcoin's existence. Some years the growth has reflected a complete change of technology, such as in 2010 and 2011 when many miners switched from using CPU mining to Graphical Processing Unit (GPU) mining and Field Programmable Gate Array (FPGA) mining. In 2013 the introduction of Application Specific Integrated Circuit (ASIC) mining lead to another giant leap in mining power, by placing the SHA-256 function directly on silicon chips specialized for the purpose of mining. The first such chips could deliver more mining power in a single box than the entire bitcoin network in 2010. @@ -746,10 +759,12 @@ image::images/BitcoinDifficulty.png["BitcoinDifficulty"] In the last two years, the ASIC mining chips have become denser and denser, approaching the cutting edge of silicon fabrication with a feature size (resolution) of 22 nanometers (nm). Currently, ASIC manufacturers are aiming to overtake general purpose CPU chip manufacturers, designing chips with a feature size of 16nm, because the profitability of mining is driving this industry even faster than general computing. There are no more giant leaps left in bitcoin mining, because the industry has reached the forefront of "Moore's Law". Still, the mining power of the network continues to advance at an exponential pace as the race for higher density chips is matched with a race for higher density data centers where thousands of these chips can be deployed. It's no longer about how much mining can be done with one chip but how many chips can be squeezed into a building, while still dissipating the heat and providing adequate power. +[[extra_nonce]] ==== The Extra Nonce Solution Since 2012 bitcoin mining has evolved to resolve a fundamental limitation in the structure of the block header. In the early days of bitcoin, a miner could find a block by iterating through the nonce until the resulting hash was below the target. As difficulty increased, miners often cycled through all 4 billion values of the nonce without finding a block. However, this was easily resolved by updating the block timestamp to account for the elapsed time. Since the timestamp is part of the header, the change would allow miners to iterate through the values of the nonce again with different results. Once mining hardware exceeded 4 GH/sec however, this approach became increasingly difficult as the nonce values were exhausted in less than a second. As ASIC mining equipment started pushing and then exceeding the TH/sec hash rate, the mining software needed more space for nonce values in order to find valid blocks. The timestamp could be stretched a bit, but moving it too far into the future would cause the block to become invalid. A new source of "change" was needed in the block header. The solution was to use the coinbase transaction as a source of extra nonce values. Since the coinbase script can store between 2 and 100 bytes of data, miners started using that space as extra nonce space, allowing them to explore a much larger range of block header values to find valid blocks. The coinbase transaction is included in the merkle tree, which means that any change in the coinbase script causes the merkle root to change. Eight bytes of extra nonce, plus the 4 bytes of "standard" nonce allow miners to explore a total 2^96^ (8 followed by 28 zeroes) possibilities *per second* without having to modify the timestamp. If, in the future, a miner could run through all these possibilities, they could then modify the timestamp. There is also more space in the coinbase script for future expansion of the extra nonce space. +[[mining_pools]] ==== Mining Pools In this highly competitive environment, individual miners working alone (also known as solo miners) don't stand a chance. The likelihood of them finding a block to offset their electricity and hardware costs is so low that it represents a gamble, like playing the lottery. Even the fastest consumer ASIC mining system cannot keep up with commercial systems that stack tens of thousands of these chips in giant warehouses near hydro-electric power stations. Miners now collaborate to form mining pools, pooling their hashing power and sharing the reward among thousands of participants. By participating in a pool, miners get a smaller share of the overall reward, but typically get rewarded every day, reducing uncertainty. diff --git a/ch09.asciidoc b/ch09.asciidoc index 56ef13cf..644accbf 100644 --- a/ch09.asciidoc +++ b/ch09.asciidoc @@ -1,9 +1,9 @@ [[ch9]] == Alternative Chains, Currencies, and Applications -Bitcoin was neither the beginning nor the end of the digital currency evolution. It came from twenty years of research in distributed systems and currencies and brought a revolutionary new technology into the space: the de-centralized consensus mechanism based on Proof-of-Work. This invention at the heart of bitcoin has ushered a wave of innovation in currencies, financial services, economics, distributed systems, voting systems, corporate governance, and contracts. +Bitcoin was the result of twenty years of research in distributed systems and currencies and brought a revolutionary new technology into the space: the de-centralized consensus mechanism based on Proof-of-Work. This invention at the heart of bitcoin has ushered a wave of innovation in currencies, financial services, economics, distributed systems, voting systems, corporate governance, and contracts. -In this chapter we'll examine the many offshoots of the bitcoin and blockchain inventions, the alternative chains, currencies, and applications built since the introduction of this technology in 2009. +In this chapter we'll examine the many offshoots of the bitcoin and blockchain inventions, the alternative chains, currencies, and applications built since the introduction of this technology in 2009. Mostly, we will look at _alt-coins_, which are digital currencies implemented using the same design pattern as bitcoin, but with a completely separate blockchain and network. For every alt-coin mentioned in this chapter, 50 or more will go unmentioned, eliciting howls of anger from their creators and fans. The purpose of this chapter is not to evaluate or qualify alt-coins, or to mention the most "significant" ones based on some subjective assessment. Instead, we will highlight a few examples that show the breadth and variety of the ecosystem, noting the first-of-a-kind for each innovation or significant differentiation. Some of the most interesting examples of alt-coins are in fact complete failures from a monetary perspective. That perhaps makes them even more interesting for study and highlights the fact that this chapter is not to be used as an investment guide. @@ -71,7 +71,7 @@ Counterparty is another protocol layer implemented on top of bitcoin. Counterpar === Alt-coins -Alt-coins are digital currencies implemented using the same design pattern as bitcoin, but with a completely separate blockchain and network. The vast majority of alt-coins are derived from bitcoin's source code, also known as "forks". Some are implemented "from scratch" based on the blockchain model but without using any of bitcoin's source code. Alt-coins and alt-chains (in the next section) are both separate implementations of blockchain technology and both forms use their own blockchain. The difference in the terms is to indicate that alt-coins are primarily used as currency, whereas alt-chains are used for other purposes, not primarily currency. +The vast majority of alt-coins are derived from bitcoin's source code, also known as "forks". Some are implemented "from scratch" based on the blockchain model but without using any of bitcoin's source code. Alt-coins and alt-chains (in the next section) are both separate implementations of blockchain technology and both forms use their own blockchain. The difference in the terms is to indicate that alt-coins are primarily used as currency, whereas alt-chains are used for other purposes, not primarily currency. The first alt-coins appeared in August of 2011 as forks of the bitcoin source code. Strictly speaking, the first major fork of bitcoin's code was not an alt-coin but the alt-chain _Namecoin_, which will be discussed in the next section. @@ -297,8 +297,12 @@ The Namecoin client is very similar to Bitcoin Core, as it is derived from the s For example, to register the domain +mastering-bitcoin.bit+, we use the command +name_new+ as follows: +[source.bash] ---- $ namecoind name_new d/mastering-bitcoin +---- +[source,json] +---- [ "21cbab5b1241c6d1a6ad70a2416b3124eb883ac38e423e5ff591d1968eb6664a", "a05555e0fc56c023" @@ -343,6 +347,7 @@ Ethereum is a Turing-complete contract processing and execution platform based o Ethereum can implement quite complex systems that are otherwise implemented as alt-chains themselves. For example, below is a Namecoin-like name registration contract written in Ethereum (or more accurately, written in a high-level language that can be compiled to Ethereum code): +[source,python] ---- if !contract.storage[msg.data[0]]: # Is the key not yet taken? # Then take it! diff --git a/code/hash_example.py b/code/hash_example.py index 3306b1fe..12012ac7 100644 --- a/code/hash_example.py +++ b/code/hash_example.py @@ -5,7 +5,14 @@ import hashlib text = "I am Satoshi Nakamoto" -for nonce in xrange(20): # iterate nonce from 0 to 19 - input = text + str(nonce) # add the nonce to the end of the text - hash = hashlib.sha256(input).hexdigest() # calculate the SHA-256 hash of the input (text+nonce) - print input, '=>', hash # show the input and hash result \ No newline at end of file +# iterate nonce from 0 to 19 +for nonce in xrange(20): + + # add the nonce to the end of the text + input = text + str(nonce) + + # calculate the SHA-256 hash of the input (text+nonce) + hash = hashlib.sha256(input).hexdigest() + + # show the input and hash result + print input, '=>', hash \ No newline at end of file diff --git a/code/proof-of-work-example.py b/code/proof-of-work-example.py old mode 100644 new mode 100755 index ab0e3b61..12e1fbbd --- a/code/proof-of-work-example.py +++ b/code/proof-of-work-example.py @@ -8,11 +8,13 @@ max_nonce = 2 ** 32 # 4 billion def proof_of_work(header, difficulty_bits): + # calculate the difficulty target target = 2 ** (256-difficulty_bits) for nonce in xrange(max_nonce): hash_result = hashlib.sha256(str(header)+str(nonce)).hexdigest() + # check if this is a valid result, below the target if long(hash_result, 16) < target: print "Success with nonce %d" % nonce print "Hash is %s" % hash_result @@ -26,21 +28,34 @@ if __name__ == '__main__': nonce = 0 hash_result = '' - + + # difficulty from 0 to 31 bits for difficulty_bits in xrange(32): difficulty = 2 ** difficulty_bits print "Difficulty: %ld (%d bits)" % (difficulty, difficulty_bits) print "Starting search..." + + # checkpoint the current time start_time = time.time() - new_block = 'test block with transactions' + hash_result # make a new block which includes the hash from the previous block - (hash_result, nonce) = proof_of_work(new_block, difficulty_bits) # find a nonce for the new block + + # make a new block which includes the hash from the previous block + # we fake a block of transactions - just a string + new_block = 'test block with transactions' + hash_result + + # find a valid nonce for the new block + (hash_result, nonce) = proof_of_work(new_block, difficulty_bits) + + # checkpoint how long it took to find a result end_time = time.time() + elapsed_time = end_time - start_time print "Elapsed Time: %.4f seconds" % elapsed_time if elapsed_time > 0: + + # estimate the hashes per second hash_power = float(long(nonce)/elapsed_time) print "Hashing Power: %ld hashes per second" % hash_power diff --git a/preface.asciidoc b/preface.asciidoc index 9d03a4e0..b6a3d6e8 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -56,7 +56,9 @@ This icon indicates a warning or caution. 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 a CD-ROM of 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. -We appreciate, but do not require, attribution. An attribution usually includes the title, author, publisher, and ISBN. For example: “_Book Title_ by Some Author (O’Reilly). Copyright 2012 Some Copyright Holder, 978-0-596-xxxx-x.” +We appreciate, but do not require, attribution. An attribution usually includes the title, author, publisher, and ISBN. For example: “_Mastering Bitcoin_ by Andreas M. Antonopoulos (O’Reilly). Copyright 2014 Andreas M. Antonopoulos, 978-1449374044.” + +Some editions of this books are offered under an open source license, such as CC-BY-NC (creativecommons.org) in which case the terms of that licenses apply. If you feel your use of code examples falls outside fair use or the permission given above, feel free to contact us at pass:[permissions@oreilly.com]. @@ -192,6 +194,8 @@ wallet:: === Acknowledgments +==== Technical Review + ==== Early Release Draft (Github Contributions) Many contributors offered comments, corrections and additions to the early-release draft on Github. Thank you all for your contributions to this book. Notable contributors included the following: From e560d5f020ae6bf6f51d40783ef92006527d6d46 Mon Sep 17 00:00:00 2001 From: "andreas@antonopoulos.com" Date: Thu, 25 Sep 2014 09:05:46 -0700 Subject: [PATCH 095/102] Updated book.asciidoc --- book.asciidoc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/book.asciidoc b/book.asciidoc index 7ca0d98b..c57cf7d3 100644 --- a/book.asciidoc +++ b/book.asciidoc @@ -22,4 +22,6 @@ include::ch08.asciidoc[] include::ch09.asciidoc[] -include::appdx-scriptops.asciidoc[] \ No newline at end of file +include::appdx-scriptops.asciidoc[] + +include::appdx-sx.asciidoc[] \ No newline at end of file From b786ce566f636f6c0c13a6482868c970f516a43e Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Thu, 25 Sep 2014 12:13:01 -0400 Subject: [PATCH 096/102] fixes --- ch04.asciidoc | 2 +- ch09.asciidoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ch04.asciidoc b/ch04.asciidoc index e64919f0..03cf3766 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -487,7 +487,7 @@ Another method for making keys is _deterministic key generation_. Here you deriv Wallets contain keys, not coins. The coins are stored on the blockchain in the form of transaction-outputs (often noted as _vout_ or _txout_). Each user has a wallet containing keys. Wallets are really keychains containing pairs of private/public keys (See <>). Users sign transactions with the keys, thereby proving they own the transaction outputs (their coins). ==== -[[random wallet]] +[[random_wallet]] ==== Non-Deterministic (Random) Wallets In the first implementations of bitcoin clients, wallets were simply collections of randomly generated private keys. This type of wallet is called a _Type-0 Non-Deterministic Wallets_. For example, the Bitcoin Core Client pre-generates 100 random private keys when first started and generates more keys as needed, using each key only once. This type of wallet is nicknamed "Just a Bunch Of Keys", or JBOK, and such wallets are being replaced with deterministic wallets because they are cumbersome to manage, backup and import. The disadvantage of random keys is that if you generate many of them you must keep copies of all of them, meaning that the wallet must be backed-up frequently. Each key must be backed-up, or the funds it controls are irrevocably lost if the wallet becomes inaccessible. This conflicts directly with the principle of avoiding address re-use, by using each bitcoin address for only one transaction. Address re-use reduces privacy by associating multiple transactions and addresses with each other. A Type-0 non-deterministic wallet is a poor choice of wallet, especially if you want to avoid address re-use as that means managing many keys, which creates the need for frequent backups. While the Bitcoin Core Client includes a wallet that is implemented as a Type-0 wallet, the use of this wallet is actively discouraged by developers of the Bitcoin Core. diff --git a/ch09.asciidoc b/ch09.asciidoc index 644accbf..e3bfa1f2 100644 --- a/ch09.asciidoc +++ b/ch09.asciidoc @@ -297,7 +297,7 @@ The Namecoin client is very similar to Bitcoin Core, as it is derived from the s For example, to register the domain +mastering-bitcoin.bit+, we use the command +name_new+ as follows: -[source.bash] +[source,bash] ---- $ namecoind name_new d/mastering-bitcoin ---- From a8fafbc6c01b806d2ce88fb071ed06fa99740ea6 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Thu, 25 Sep 2014 12:26:52 -0400 Subject: [PATCH 097/102] formatting fixes --- appdx-sx.asciidoc | 207 +++++++++++++++++++++++----------------------- 1 file changed, 104 insertions(+), 103 deletions(-) diff --git a/appdx-sx.asciidoc b/appdx-sx.asciidoc index 8d9f18b6..6db81375 100644 --- a/appdx-sx.asciidoc +++ b/appdx-sx.asciidoc @@ -5,127 +5,128 @@ The sx commands are: DEPRECATED - ELECTRUM STYLE DETERMINISTIC KEYS AND ADDRESSES - genaddr Generate a Bitcoin address deterministically from a wallet - seed or master public key. - genpriv Generate a private key deterministically from a seed. - genpub Generate a public key deterministically from a wallet - seed or master public key. - mpk Extract a master public key from a deterministic wallet seed. - newseed Create a new deterministic wallet seed. + ELECTRUM STYLE DETERMINISTIC KEYS AND ADDRESSES + genaddr Generate a Bitcoin address deterministically from a wallet + seed or master public key. + genpriv Generate a private key deterministically from a seed. + genpub Generate a public key deterministically from a wallet + seed or master public key. + mpk Extract a master public key from a deterministic wallet seed. + newseed Create a new deterministic wallet seed. EXPERIMENTAL - APPS - wallet Experimental command line wallet. + APPS + wallet Experimental command line wallet. OFFLINE BLOCKCHAIN - HEADERS - showblkhead Show the details of a block header. + HEADERS + showblkhead Show the details of a block header. OFFLINE KEYS AND ADDRESSES - BASIC - addr See Bitcoin address of a public or private key. - embed-addr Generate an address used for embedding record of data into the blockchain - get-pubkey Get the pubkey of an address if available - newkey Create a new private key. - pubkey See the public part of a private key. - validaddr Validate an address. - BRAIN STORAGE - brainwallet Make 256 bit bitcoin private key from an arbitrary passphrase. - mnemonic Make 12 word mnemonic out of 128 bit electrum or bip32 seed. - HD / BIP32 - hd-priv Create an private HD key from another HD private key. - hd-pub Create an HD public key from another HD private or public key. - hd-seed Create a random new HD key. - hd-to-address Convert an HD public or private key to a Bitcoin address. - hd-to-wif Convert an HD private key to a WIF private key. - MULTISIG ADDRESSES - scripthash Create BIP 16 script hash address from raw script hex. - STEALTH - stealth-addr See a stealth address from given input. - stealth-initiate Initiate a new stealth payment. - stealth-newkey Generate new stealth keys and an address. - stealth-show-addr Show details for a stealth address. - stealth-uncover Uncover a stealth address. - stealth-uncover-secret Uncover a stealth secret. + BASIC + addr See Bitcoin address of a public or private key. + embed-addr Generate an address used for embedding record of data into the blockchain + get-pubkey Get the pubkey of an address if available + newkey Create a new private key. + pubkey See the public part of a private key. + validaddr Validate an address. + BRAIN STORAGE + brainwallet Make 256 bit bitcoin private key from an arbitrary passphrase. + mnemonic Make 12 word mnemonic out of 128 bit electrum or bip32 seed. + HD / BIP32 + hd-priv Create an private HD key from another HD private key. + hd-pub Create an HD public key from another HD private or public key. + hd-seed Create a random new HD key. + hd-to-address Convert an HD public or private key to a Bitcoin address. + hd-to-wif Convert an HD private key to a WIF private key. + MULTISIG ADDRESSES + scripthash Create BIP 16 script hash address from raw script hex. + STEALTH + stealth-addr See a stealth address from given input. + stealth-initiate Initiate a new stealth payment. + stealth-newkey Generate new stealth keys and an address. + stealth-show-addr Show details for a stealth address. + stealth-uncover Uncover a stealth address. + stealth-uncover-secret Uncover a stealth secret. OFFLINE TRANSACTIONS - SCRIPTING - mktx Create an unsigned tx. - rawscript Create the raw hex representation from a script. - set-input Set a transaction input. - showscript Show the details of a raw script. - showtx Show the details of a transaction. - sign-input Sign a transaction input. - unwrap Validates checksum and recovers version byte and original data from hexstring. - validsig Validate a transaction input's signature. - wrap Adds version byte and checksum to hexstring. + SCRIPTING + mktx Create an unsigned tx. + rawscript Create the raw hex representation from a script. + set-input Set a transaction input. + showscript Show the details of a raw script. + showtx Show the details of a transaction. + sign-input Sign a transaction input. + unwrap Validates checksum and recovers version byte and original data from hexstring. + validsig Validate a transaction input's signature. + wrap Adds version byte and checksum to hexstring. ONLINE (BITCOIN P2P) - BLOCKCHAIN UPDATES - sendtx-node Send transaction to a single node. - sendtx-p2p Send tx to bitcoin network. + BLOCKCHAIN UPDATES + sendtx-node Send transaction to a single node. + sendtx-p2p Send tx to bitcoin network. ONLINE (BLOCKCHAIN.INFO) - BLOCKCHAIN QUERIES (blockchain.info) - bci-fetch-last-height Fetch the last block height using blockchain.info. - bci-history Get list of output points, values, and their spends - from blockchain.info - BLOCKCHAIN UPDATES - sendtx-bci Send tx to blockchain.info/pushtx. + BLOCKCHAIN QUERIES (blockchain.info) + bci-fetch-last-height Fetch the last block height using blockchain.info. + bci-history Get list of output points, values, and their spends + from blockchain.info + BLOCKCHAIN UPDATES + sendtx-bci Send tx to blockchain.info/pushtx. ONLINE (BLOCKEXPLORER.COM) - BLOCKCHAIN QUERIES (blockexplorer.com) - blke-fetch-transaction Fetches a transaction from blockexplorer.com + BLOCKCHAIN QUERIES (blockexplorer.com) + blke-fetch-transaction Fetches a transaction from blockexplorer.com ONLINE (OBELISK) - BLOCKCHAIN QUERIES - balance Show balance of a Bitcoin address in satoshis. - fetch-block-header Fetch raw block header. - fetch-last-height Fetch the last block height. - fetch-stealth Fetch a stealth information using a network connection to - make requests against the obelisk load balancer backend. - fetch-transaction Fetch a raw transaction using a network connection to - make requests against the obelisk load balancer backend. - fetch-transaction-index Fetch block height and index in block of transaction. - get-utxo Get enough unspent transaction outputs from a given set of - addresses to pay a given number of satoshis - history Get list of output points, values, and their spends for an - address. grep can filter for just unspent outputs which can - be fed into mktx. - validtx Validate a transaction. - BLOCKCHAIN UPDATES - sendtx-obelisk Send tx to obelisk server. - BLOCKCHAIN WATCHING - monitor Monitor an address. - watchtx Watch transactions from the network searching for a certain hash. - OBELISK ADMIN - initchain Initialize a new blockchain. + BLOCKCHAIN QUERIES + balance Show balance of a Bitcoin address in satoshis. + fetch-block-header Fetch raw block header. + fetch-last-height Fetch the last block height. + fetch-stealth Fetch a stealth information using a network connection to + make requests against the obelisk load balancer backend. + fetch-transaction Fetch a raw transaction using a network connection to + make requests against the obelisk load balancer backend. + fetch-transaction-index + Fetch block height and index in block of transaction. + get-utxo Get enough unspent transaction outputs from a given set of + addresses to pay a given number of satoshis + history Get list of output points, values, and their spends for an + address. grep can filter for just unspent outputs which can + be fed into mktx. + validtx Validate a transaction. + BLOCKCHAIN UPDATES + sendtx-obelisk Send tx to obelisk server. + BLOCKCHAIN WATCHING + monitor Monitor an address. + watchtx Watch transactions from the network searching for a certain hash. + OBELISK ADMIN + initchain Initialize a new blockchain. UTILITY - EC MATH - ec-add-modp Calculate the result of INTEGER + INTEGER. - ec-multiply Multiply an integer and a point together. - ec-tweak-add Calculate the result of POINT + INTEGER * G. - FORMAT (BASE 58) - base58-decode Convert from base58 to hex - base58-encode Convert from hex to base58 - FORMAT (BASE58CHECK) - base58check-decode Convert from base58check to hex - base58check-encode Convert from hex to base58check - decode-addr Decode a address from base58check form to internal RIPEMD representation - encode-addr Encode an address from internal RIPEMD representation to base58check form - FORMAT (WIF) - secret-to-wif Convert a secret exponent value to Wallet Import Format - wif-to-secret Convert a Wallet Import Format to secret exponent value. - HASHES - ripemd-hash RIPEMD hash data from STDIN. - sha256 Perform SHA256 hash of data. - MISC - qrcode Generate Bitcoin QR codes offline. - SATOSHI MATH - btc Convert Satoshis into Bitcoins. - satoshi Convert Bitcoins into Satoshis. + EC MATH + ec-add-modp Calculate the result of INTEGER + INTEGER. + ec-multiply Multiply an integer and a point together. + ec-tweak-add Calculate the result of POINT + INTEGER * G. + FORMAT (BASE 58) + base58-decode Convert from base58 to hex + base58-encode Convert from hex to base58 + FORMAT (BASE58CHECK) + base58check-decode Convert from base58check to hex + base58check-encode Convert from hex to base58check + decode-addr Decode a address from base58check form to internal RIPEMD representation + encode-addr Encode an address from internal RIPEMD representation to base58check form + FORMAT (WIF) + secret-to-wif Convert a secret exponent value to Wallet Import Format + wif-to-secret Convert a Wallet Import Format to secret exponent value. + HASHES + ripemd-hash RIPEMD hash data from STDIN. + sha256 Perform SHA256 hash of data. + MISC + qrcode Generate Bitcoin QR codes offline. + SATOSHI MATH + btc Convert Satoshis into Bitcoins. + satoshi Convert Bitcoins into Satoshis. See 'sx help COMMAND' for more information on a specific command. From aa332a7008a058df157fc7b07807f3c9bae8eccf Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Sun, 28 Sep 2014 11:52:50 -0400 Subject: [PATCH 098/102] code examples --- ch03.asciidoc | 2 +- ch04.asciidoc | 109 +++++++++++++++++++++++++++++++++++++++++ ch07.asciidoc | 35 +++++++++++++ ch08.asciidoc | 26 ++++++++++ code/addr.cpp | 40 +++++++++++++++ code/ec-math.py | 53 ++++++++++++++++++++ code/merkle.cpp | 62 +++++++++++++++++++++++ code/satoshi-words.cpp | 28 +++++++++++ code/vanity-miner.cpp | 70 ++++++++++++++++++++++++++ 9 files changed, 424 insertions(+), 1 deletion(-) create mode 100644 code/addr.cpp create mode 100644 code/ec-math.py create mode 100644 code/merkle.cpp create mode 100644 code/satoshi-words.cpp create mode 100644 code/vanity-miner.cpp diff --git a/ch03.asciidoc b/ch03.asciidoc index 1ff1c195..65e25dc5 100644 --- a/ch03.asciidoc +++ b/ch03.asciidoc @@ -1130,7 +1130,7 @@ ae74538baa914f3799081ba78429d5d84f36a0127438e9f721dff584ac17b346 As before, we can also examine this in more detail using the +getrawtransaction+ and +decodetransaction+ commands. These commands will return the exact same hex string that we produced and decoded previously just before we sent it on the network. - +[[alt_libraries]] === Alternative clients, libraries and toolkits Beyond the reference client, bitcoind, there are other clients and libraries that can be used to interact with the bitcoin network and data structures. These are implemented in a variety of programming languages, offering programmers native interfaces in their own language. diff --git a/ch04.asciidoc b/ch04.asciidoc index 03cf3766..21bb6d46 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -305,6 +305,35 @@ In bitcoin, most of the data presented to the user is Base58Check encoded to mak | BIP32 Extended Public Key | 0x0488B21E | xpub |======= +===== Creating a bitcoin address from a private key + +Let's look at the complete process of creating a bitcoin address, from a private key, to a public key (a point on the elliptic curve), to a double-hashed address and finally the Base58Check encoding. The C++ code in <> shows the complete process, from private key, to Base58Check encoded bitcoin address, step-by-step. The code example uses the libbitcoin library introduced in <> for some helper functions: + +[[addr_example]] +.Creating a Base58Check encoded bitcoin address from a private key +==== +[source, cpp] +---- +include::code/addr.cpp[] +---- +==== + +The code uses a pre-defined private key, so that it produces the same bitcoin address every time it is run: + +[[addr_example_run]] +.Compiling and running the addr code +==== +[source,bash] +---- +# Compile the addr.cpp code +$ g++ -o addr addr.cpp $(pkg-config --cflags --libs libbitcoin) +# Run the addr executable +$ ./addr +Public key: 0202a406624211f2abbdc68da3df929f938c3399dd79fac1b51b0e4ad1d26a47aa +Address: 1PRTTaJesdNovgne6Ehcdu1fpEdX7913CK +---- +==== + ==== Key Formats [[priv_formats]] @@ -442,13 +471,20 @@ Here's the same key, encoded in WIF and WIF-compressed formats The most comprehensive bitcoin library in Python is "pybitcointools"by Vitalik Buterin (https://github.com/vbuterin/pybitcointools). In the following code example, we use the pybitcointools library (imported as "bitcoin") to generate and display keys and addresses in various formats: +[[key-to-address_script]] .Key and Address generation and formatting with the pybitcointools library +==== [source,python] ---- include::code/key-to-address-ecc-example.py[] ---- +==== Here's the output from running this code: + +[[key-to-address_script_run]] +.Running key-to-address-ecc-example.py +==== [source,bash] ---- $ python key-to-address-ecc-example.py @@ -475,8 +511,40 @@ Bitcoin Address (b58check) is: Compressed Bitcoin Address (b58check) is: 14cxpo3MBCYYWCgF74SWTdcmxipnGUsPw3 ---- +==== +Here's another example, using the Python ECDSA library for the Elliptic Curve math and without using any specialized bitcoin libraries: + +[[ec_math]] +.A script demonstrating Elliptic Curve math used for bitcoin keys +==== +[source, python] +---- +include::code/ec-math.py[] +---- +==== + +Running the script: + +[[ec_math_run]] +.Installing the Python ECDSA library and running the ec_math.py script +==== +[source,bash] +---- +$ # Install Python PIP package manager +$ sudo apt-get install python-pip +$ # Install the Python ECDSA library +$ sudo pip install ecdsa +$ # Run the script +$ python ec-math.py +Secret: 38090835015954358862481132628887443905906204995912378278060168703580660294000 +EC point: (70048853531867179489857750497606966272382583471322935454624595540007269312627,\ + 105262206478686743191060800263479589329920209527285803935736021686045542353380) +BTC public key: 029ade3effb0a67d5c8609850d797366af428f4a0d5194cb221d807770a1522873 +---- +==== + === Wallets Wallets are containers for private keys, usually implemented as structured files or simple databases. @@ -834,6 +902,47 @@ As you can see, Eugenia won't be creating the vanity address "1KidsCharity" any Another way to find a vanity address is to outsource the work to a pool of vanity-miners, such as the pool at vanitypool.appspot.com. A pool is a service that allows those with GPU hardware to earn bitcoin searching for vanity addresses for others. For a small payment (0.01 bitcoin or approximately $5 when this was written), Eugenia can outsource the search for a 7-character pattern vanity address and get results in a few hours instead of having to run a CPU search for months. +Generating a vanity address is a brute-force exercise: try a random key, check the resulting address to see if it matches the desired pattern, repeat until successful. Here's an example of a "vanity miner", a program designed to find vanity addresses, written in C++. The example uses the libbitcoin library, which we introduced in <>. + +[[vanity_miner_code]] +.Vanity Address Miner +==== +[source,cpp] +---- +include::code/vanity-miner.cpp[] +---- +==== + +The example code must be compiled using a C++ compiler and linked against the libbitcoin library (which must be first installed on that system). To run the example, run the +vanity-minder+ executable with no parameters and it will attempt to find a vanity address starting with "1kid": + +[[vanity_miner_run]] +.Compiling and running the vanity-miner example +==== +[source,bash] +---- +$ # Compile the code with g++ +$ g++ -o vanity-miner vanity-miner.cpp $(pkg-config --cflags --libs libbitcoin) +$ # Run the example +$ ./vanity-miner +Found vanity address! 1KiDzkG4MxmovZryZRj8tK81oQRhbZ46YT +Secret: 57cc268a05f83a23ac9d930bc8565bac4e277055f4794cbd1a39e5e71c038f3f +$ # Run it again for a different result +$ ./vanity-miner +Found vanity address! 1Kidxr3wsmMzzouwXibKfwTYs5Pau8TUFn +Secret: 7f65bbbbe6d8caae74a0c6a0d2d7b5c6663d71b60337299a1a2cf34c04b2a623 +# Use "time" to see how long it takes to find a result +$ time ./vanity-miner +Found vanity address! 1KidPWhKgGRQWD5PP5TAnGfDyfWp5yceXM +Secret: 2a802e7a53d8aa237cd059377b616d2bfcfa4b0140bc85fa008f2d3d4b225349 + +real 0m8.868s +user 0m8.828s +sys 0m0.035s +---- +==== + +The example code will take a few seconds to find a match for the three-character pattern "kid", as we can see when we use the +time+ Unix command to measure the execution time. Change the +search+ pattern in the source code and see how much longer it takes for four- or five-character patterns! + ===== Vanity Address Security Vanity addresses can be used to enhance _and_ to defeat security measures, they are truly a double-edged sword. Used to improve security, a distinctive address makes it harder for adversaries to substitute their own address and fool your customers into paying them instead of you. Unfortunately, vanity addresses also make it possible for anyone to create an address that _resembles_ any random address, or even another vanity address, thereby fooling your customers. diff --git a/ch07.asciidoc b/ch07.asciidoc index 96ded401..bf7cfecb 100644 --- a/ch07.asciidoc +++ b/ch07.asciidoc @@ -189,6 +189,41 @@ To prove that a specific transaction is included in a block, a node only needs t .A Merkle Path used to prove inclusion of a data element image::images/MerkleTreePathToK.png["merkle_tree_path"] + +The code in <> demonstrates the process of creating a merkle tree from the leaf-node hashes up to the root, using the libbitcoin library for some helper functions: + +[[merkle_example]] +.Building a merkle tree +==== +[source, cpp] +---- +include::code/merkle.cpp[] +---- +==== + +Compiling and running the merkle code: + +[[merkle_example_run]] +.Compiling and running the merkle example code +==== +[source,bash] +---- +$ # Compile the merkle.cpp code +$ g++ -o merkle merkle.cpp $(pkg-config --cflags --libs libbitcoin) +$ # Run the merkle executable +$ ./merkle +Current merkle hash list: + 32650049a0418e4380db0af81788635d8b65424d397170b8499cdc28c4d27006 + 30861db96905c8dc8b99398ca1cd5bd5b84ac3264a4e1b3e65afa1bcee7540c4 + +Current merkle hash list: + d47780c084bad3830bcdaf6eace035e4c6cbf646d103795d22104fb105014ba3 + +Result: d47780c084bad3830bcdaf6eace035e4c6cbf646d103795d22104fb105014ba3 + +---- +==== + The efficiency of merkle trees becomes obvious as the scale increases. For example, proving that a transaction is part of a block requires: [[block_structure]] diff --git a/ch08.asciidoc b/ch08.asciidoc index b2062fe0..7ce0330c 100644 --- a/ch08.asciidoc +++ b/ch08.asciidoc @@ -353,6 +353,32 @@ The next few hexadecimal digits (+03858402062+) are used to encode an extra _non The final part of the coinbase data (+2f503253482f+) is the ASCII-encoded string "/P2SH/", which indicates that the mining node that mined this block supports the Pay-to-Script-Hash (P2SH) improvement defined in BIP0016. The introduction of the P2SH capability required a "vote" by miners to endorse either BIP0016 or BIP0017. Those endorsing the BIP0016 implementation were to include "/P2SH/" in their coinbase data. Those endorsing the BIP0017 implementation of P2SH were to include the string "p2sh/CHV" in their coinbase data. The BIP0016 was elected as the winner, and many miners continued including the string "/P2SH/" in their coinbase to indicate support for this feature. +The code example <> uses the libbitcoin library introduced in <> to extract the coinbase data from the genesis block, displaying Satoshi's message. Note that the libbitcoin library contains a static copy of the genesis block, so the example code below can use retrieve the genesis block directly from the library. + +[[satoshi_words]] +.Extract the coinbase data from the genesis block +==== +[source, cpp] +---- +include::code/satoshi-words.cpp[] +---- +==== + +We compile the code with the GNU C++ compiler and run the resulting executable: + +[[satoshi_words_run]] +.Compiling and running the satoshi-words example code +==== +[source,bash] +---- +$ # Compile the code +$ g++ -o satoshi-words satoshi-words.cpp $(pkg-config --cflags --libs libbitcoin) +$ # Run the executable +$ ./satoshi-words +^D��^A^DEThe Times 03/Jan/2009 Chancellor on brink of second bailout for banks +---- +==== + === Constructing the Block Header To construct the block header, the mining node needs to fill in six fields: diff --git a/code/addr.cpp b/code/addr.cpp new file mode 100644 index 00000000..9efea583 --- /dev/null +++ b/code/addr.cpp @@ -0,0 +1,40 @@ +#include + +int main() +{ + // Private secret key. + bc::ec_secret secret = bc::decode_hash( + "038109007313a5807b2eccc082c8c3fbb988a973cacf1a7df9ce725c31b14776"); + // Get public key. + bc::ec_point public_key = bc::secret_to_public_key(secret); + std::cout << "Public key: " << bc::encode_hex(public_key) << std::endl; + + // Create Bitcoin address. + // Normally you can use: + // bc::payment_address payaddr; + // bc::set_public_key(payaddr, public_key); + // const std::string address = payaddr.encoded(); + + // Compute hash of public key for P2PKH address. + const bc::short_hash hash = bc::bitcoin_short_hash(public_key); + + bc::data_chunk unencoded_address; + // Reserve 25 bytes + // [ version:1 ] + // [ hash:20 ] + // [ checksum:4 ] + unencoded_address.reserve(25); + // Version byte, 0 is normal BTC address (P2PKH). + unencoded_address.push_back(0); + // Hash data + bc::extend_data(unencoded_address, hash); + // Checksum is computed by hashing data, and adding 4 bytes from hash. + bc::append_checksum(unencoded_address); + // Finally we must encode the result in Bitcoin's base58 encoding + assert(unencoded_address.size() == 25); + const std::string address = bc::encode_base58(unencoded_address); + + std::cout << "Address: " << address << std::endl; + return 0; +} + diff --git a/code/ec-math.py b/code/ec-math.py new file mode 100644 index 00000000..7627eff5 --- /dev/null +++ b/code/ec-math.py @@ -0,0 +1,53 @@ +import ecdsa +import random +from ecdsa.util import string_to_number, number_to_string + +# secp256k1, http://www.oid-info.com/get/1.3.132.0.10 +_p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2FL +_r = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141L +_b = 0x0000000000000000000000000000000000000000000000000000000000000007L +_a = 0x0000000000000000000000000000000000000000000000000000000000000000L +_Gx = 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798L +_Gy = 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8L +curve_secp256k1 = ecdsa.ellipticcurve.CurveFp(_p, _a, _b) +generator_secp256k1 = ecdsa.ellipticcurve.Point(curve_secp256k1, _Gx, _Gy, _r) +oid_secp256k1 = (1, 3, 132, 0, 10) +SECP256k1 = ecdsa.curves.Curve("SECP256k1", curve_secp256k1, generator_secp256k1, oid_secp256k1) +ec_order = _r + +curve = curve_secp256k1 +generator = generator_secp256k1 + +def random_secret(): + random_char = lambda: chr(random.randint(0, 255)) + convert_to_int = lambda array: int("".join(array).encode("hex"), 16) + byte_array = [random_char() for i in range(32)] + return convert_to_int(byte_array) + +def get_point_pubkey(point): + if point.y() & 1: + key = '03' + '%064x' % point.x() + else: + key = '02' + '%064x' % point.x() + return key.decode('hex') + +def get_point_pubkey_uncompressed(point): + key = '04' + \ + '%064x' % point.x() + \ + '%064x' % point.y() + return key.decode('hex') + +# Generate a new private key. +secret = random_secret() +print "Secret: ", secret + +# Get the public key point. +point = secret * generator +print "EC point:", point + +print "BTC public key:", get_point_pubkey(point).encode("hex") + +# Given the point (x, y) we can create the object using: +point1 = ecdsa.ellipticcurve.Point(curve, point.x(), point.y(), ec_order) +assert point1 == point + diff --git a/code/merkle.cpp b/code/merkle.cpp new file mode 100644 index 00000000..605e24f4 --- /dev/null +++ b/code/merkle.cpp @@ -0,0 +1,62 @@ +#include + +bc::hash_digest create_merkle(bc::hash_digest_list& merkle) +{ + // Stop if hash list is empty. + if (merkle.empty()) + return bc::null_hash; + else if (merkle.size() == 1) + return merkle[0]; + + // While there is more than 1 hash in the list, keep looping... + while (merkle.size() > 1) + { + // If number of hashes is odd, duplicate last hash in the list. + if (merkle.size() % 2 != 0) + merkle.push_back(merkle.back()); + // List size is now even. + assert(merkle.size() % 2 == 0); + + // New hash list. + bc::hash_digest_list new_merkle; + // Loop through hashes 2 at a time. + for (auto it = merkle.begin(); it != merkle.end(); it += 2) + { + // Join both current hashes together (concatenate). + bc::data_chunk concat_data(bc::hash_size * 2); + auto concat = bc::make_serializer(concat_data.begin()); + concat.write_hash(*it); + concat.write_hash(*(it + 1)); + assert(concat.iterator() == concat_data.end()); + // Hash both of the hashes. + bc::hash_digest new_root = bc::bitcoin_hash(concat_data); + // Add this to the new list. + new_merkle.push_back(new_root); + } + // This is the new list. + merkle = new_merkle; + + // DEBUG output ------------------------------------- + std::cout << "Current merkle hash list:" << std::endl; + for (const auto& hash: merkle) + std::cout << " " << bc::encode_hex(hash) << std::endl; + std::cout << std::endl; + // -------------------------------------------------- + } + // Finally we end up with a single item. + return merkle[0]; +} + +int main() +{ + // Replace these hashes with ones from a block to reproduce the same merkle root. + bc::hash_digest_list tx_hashes{{ + bc::decode_hash("0000000000000000000000000000000000000000000000000000000000000000"), + bc::decode_hash("0000000000000000000000000000000000000000000000000000000000000011"), + bc::decode_hash("0000000000000000000000000000000000000000000000000000000000000022"), + }}; + const bc::hash_digest merkle_root = create_merkle(tx_hashes); + std::cout << "Result: " << bc::encode_hex(merkle_root) << std::endl; + return 0; +} + diff --git a/code/satoshi-words.cpp b/code/satoshi-words.cpp new file mode 100644 index 00000000..0dbf53ff --- /dev/null +++ b/code/satoshi-words.cpp @@ -0,0 +1,28 @@ +/* + Display the genesis block message by Satoshi. +*/ +#include +#include + +int main() +{ + // Create genesis block. + bc::block_type block = bc::genesis_block(); + // Genesis block contains a single coinbase transaction. + assert(block.transactions.size() == 1); + // Get first transaction in block (coinbase). + const bc::transaction_type& coinbase_tx = block.transactions[0]; + // Coinbase tx has a single input. + assert(coinbase_tx.inputs.size() == 1); + const bc::transaction_input_type& coinbase_input = coinbase_tx.inputs[0]; + // Convert the input script to its raw format. + const bc::data_chunk& raw_message = save_script(coinbase_input.script); + // Convert this to an std::string. + std::string message; + message.resize(raw_message.size()); + std::copy(raw_message.begin(), raw_message.end(), message.begin()); + // Display the genesis block message. + std::cout << message << std::endl; + return 0; +} + diff --git a/code/vanity-miner.cpp b/code/vanity-miner.cpp new file mode 100644 index 00000000..06112918 --- /dev/null +++ b/code/vanity-miner.cpp @@ -0,0 +1,70 @@ +#include + +// The string we are searching for +const std::string search = "1kid"; + +// Generate a random secret key. A random 32 bytes. +bc::ec_secret random_secret(std::default_random_engine& engine); +// Extract the Bitcoin address from an EC secret. +std::string bitcoin_address(const bc::ec_secret& secret); +// Case insensitive comparison with the search string. +bool match_found(const std::string& address); + +int main() +{ + std::random_device random; + std::default_random_engine engine(random()); + // Loop continuously... + while (true) + { + // Generate a random secret. + bc::ec_secret secret = random_secret(engine); + // Get the address. + std::string address = bitcoin_address(secret); + // Does it match our search string? (1kid) + if (match_found(address)) + { + // Success! + std::cout << "Found vanity address! " << address << std::endl; + std::cout << "Secret: " << bc::encode_hex(secret) << std::endl; + return 0; + } + } + // Should never reach here! + return 0; +} + +bc::ec_secret random_secret(std::default_random_engine& engine) +{ + // Create new secret... + bc::ec_secret secret; + // Iterate through every byte setting a random value... + for (uint8_t& byte: secret) + byte = engine() % std::numeric_limits::max(); + // Return result. + return secret; +} + +std::string bitcoin_address(const bc::ec_secret& secret) +{ + // Convert secret to pubkey... + bc::ec_point pubkey = bc::secret_to_public_key(secret); + // Finally create address. + bc::payment_address payaddr; + bc::set_public_key(payaddr, pubkey); + // Return encoded form. + return payaddr.encoded(); +} + +bool match_found(const std::string& address) +{ + auto addr_it = address.begin(); + // Loop through the search string comparing it to the lower case + // character of the supplied address. + for (auto it = search.begin(); it != search.end(); ++it, ++addr_it) + if (*it != std::tolower(*addr_it)) + return false; + // Reached end of search string, so address matches. + return true; +} + From 3dccacbc6776aecabadbd0dd62fee7453a196191 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Sun, 28 Sep 2014 13:53:26 -0400 Subject: [PATCH 099/102] acknowledgments --- preface.asciidoc | 98 +++++++++++++++++++++++++++++------------------- 1 file changed, 59 insertions(+), 39 deletions(-) diff --git a/preface.asciidoc b/preface.asciidoc index b6a3d6e8..3cb05b09 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -5,7 +5,7 @@ I first stumbled upon bitcoin in mid-2011. My immediate reaction was more or less "Pfft! Nerd money!" and I ignored it for another 6 months, failing to grasp its importance. This is a reaction which I have seen repeated among many of the smartest people I know, which gives me some consolation. The second time I came across bitcoin in a mailing list discussion, I decided to read the white paper written by Satoshi Nakamoto, to study the authoritative source and see what it was all about. I still remember the moment I finished reading those 9 pages, when I realized that bitcoin was not simply a digital currency, but a network of trust that could also provide the basis for so much more than just currencies. That realization: "This isn't money, it's a de-centralized trust network," started me on a four month journey to devour every scrap of information about bitcoin I could find. I became obsessed and enthralled, spending twelve or more hours each day glued to a screen, reading, writing, coding and learning as much as I could. I emerged from this state of fugue, more than 20 lbs lighter from lack of consistent meals, determined to dedicate myself to working on bitcoin. -Two years later, after creating a number of small startups to explore various bitcoin-related services and products, I decided that it was time to write my first book. Bitcoin was the topic that had driven me into a frenzy of creativity, consumed my thoughts and was the most exciting technology I had encountered since the Internet. It was now time to share my passion about this amazing technology with a broader audience. This is the bitcoin book. +Two years later, after creating a number of small startups to explore various bitcoin-related services and products, I decided that it was time to write my first book. Bitcoin was the topic that had driven me into a frenzy of creativity, consumed my thoughts and was the most exciting technology I had encountered since the Internet. It was now time to share my passion about this amazing technology with a broader audience. === Intended Audience @@ -101,6 +101,63 @@ Find us on Facebook: link:$$http://facebook.com/oreilly$$[] Follow us on Twitter: link:$$http://twitter.com/oreillymedia$$[] Watch us on YouTube: link:$$http://www.youtube.com/oreillymedia$$[] + +++++ + +++++ + +=== Acknowledgments + +This book represents the efforts and contributions of many people. I am grateful for all the help I received from friends, colleagues and even complete strangers, who joined me in this effort to write the definitive technical book on crypto-currencies and bitcoin. + +The journey to becoming an author starts long before the first book, of course. I owe my love of words and books to my mother Theresa Delaney, who raised me in a house with books lining every wall, encouraged me to read books for pleasure and instilled in me a deep respect for language. My mother also bought me my first computer in 1982, despite being a self-described technophobe. My father, Menelaos Antonopoulos, a civil engineer who just published his first book at 80 years old, was the one who taught me logical and analytical thinking and a love of science and engineering. Thanks also to Jean de Vera for her early encouragement to become an author and for always believing and insisting that I had a book in me. + +My first language (and schooling) was Greek, so I had to take a remedial English Writing course in my first year of university. I owe thanks to Diana Kordas, my English Writing teacher, who helped me build confidence and skills that year. As a professional, I developed my technical writing skills on the topic of data centers, writing for Network World magazine. I owe thanks to John Dix and John Gallant who gave me my first writing job as a columnist at Network World and to my editor Michael Cooney and my colleague Johna Till Johnson who edited my columns and made them fit for publication. Writing 500 words a week for four years gave me enough experience to eventually consider becoming an author. + +Thanks also to those who supported me when I submitted my book proposal to O'Reilly, by providing references and reviewing the proposal. Specifically, thanks to John Gallant, Gregory Ness, Richard Stiennon, Joel Snyder, Adam B. Levine, Sandra Gittlen, John Dix, Johna Till Johnson, Roger Ver and Jon Matonis. Special thanks to Richard Kagan and Tymon Mattoszko who reviewed early versions of the proposal and Matthew Owain Taylor who copy-edited the proposal. + +Thanks to Cricket Liu, author of O'Reilly title "DNS and BIND" who introduced me to O'Reilly. Thanks also to Michael Loukides and Allyson MacDonald at O'Reilly who worked for months to help make this book happen. Allyson was especially patient when deadlines were missed and deliverables delayed as life intervened in our planned schedule. + +The first few drafts of the first few chapters were the hardest, because bitcoin is a difficult subject to unravel. Every time I pulled on one thread of the bitcoin technology, I had to pull in the whole thing. I repeatedly got stuck and a bit despondent as I struggled to make the topic easy to understand and create a narrative around such a dense technical subject. Eventually, I decided to tell the story of bitcoin through the stories of the people using bitcoin and the whole book became a lot easier to write. I owe special thanks to Richard Kagan and Pamela Morgan who helped me unravel the story and get past the moments of writer's block, reviewing the early drafts of the book. Thanks to the developers of the San Francisco Bitcoin Developers Meetup group and Taariq Lewis, the group's co-founder, for helping to test the early material. + +During the development of the book, I made early drafts available on Github and invited public comments. More than a hundred comments, suggestions, corrections and contributions were submitted in response. Those contributions are explicitly acknowledged, with my thanks, in <>. Special thanks to Minh T. Nguyen who volunteered to manage the Github contributions and added many significant contributions himself. Thanks also to Andrew Naugler for infographic design. + +Several bitcoin developers contributed code samples, reviews, comments and encouragement. Thanks to Amir Taaki for example code snippets and many great comments, Vitalik Buterin and Richard Kiss for help with elliptic curve math and code contributions, Gavin Andresen for corrections, comments and encouragement, Michalis Kargakis for comments, contributions and btcd writeup. + +Once the book was drafted, it went through several rounds of technical review. Thanks to Cricket Liu and Lorne Lantz for their thorough review, comments and support. + +It is impossible to make a distinction between the bitcoin technology and the bitcoin community, and this book is as much a product of that community as it is a book on the technology. My work on this book was encouraged, cheered on, supported and rewarded by the entire bitcoin community from the very beginning until the very end. More than anything, this book has allowed me to be part of a wonderful community for two years and I can't thank you enough for accepting me in this community. There are far too many people to mention by name - people I've met at conferences, events, seminars, meetups, pizza gatherings and small private gatherings, as well as many who communicated with me by twitter, on reddit, on bitcointalk.org and on github who have had an impact on this book. Every idea, analogy, question, answer, and explanation you find in this book was at some point inspired, tested or improved through my interactions with the community. Thank you all for your support, without you this book would not have happened. I am forever grateful. + +[[github_contrib]] +==== Early Release Draft (Github Contributions) + +Many contributors offered comments, corrections and additions to the early-release draft on Github. Thank you all for your contributions to this book. Notable contributors included the following: + +===== (Name - Github ID) + +* *Minh T. Nguyen - enderminh: Github contribution editor* +* Ed Eykholt - edeykholt +* Michalis Kargakis - kargakis +* Erik Wahlström - erikwam +* Richard Kiss - richardkiss +* Eric Winchell - winchell +* Sergej Kotliar - ziggamon +* Nagaraj Hubli - nagarajhubli +* ethers +* Alex Waters - alexwaters +* Mihail Russu - MihailRussu +* Ish Ot Jr. - ishotjr +* James Addison - jayaddison +* Nekomata - nekomata-3 +* Simon de la Rouviere - simondlr +* Chapman Shoop - belovachap +* Holger Schinzel - schinzelh +* effectsToCause - vericoin +* Stephan Oeste - Emzy +* Joe Bauers - joebauers +* Jason Bisterfeldt - jbisterfeldt +* Ed Leafe - EdLeafe + ++++ ++++ @@ -186,41 +243,4 @@ transaction:: wallet:: ((("wallet"))) - Software that holds all your bitcoin addresses and secret keys. Use it to send, receive and store your bitcoin. - -++++ - -++++ - -=== Acknowledgments - -==== Technical Review - -==== Early Release Draft (Github Contributions) - -Many contributors offered comments, corrections and additions to the early-release draft on Github. Thank you all for your contributions to this book. Notable contributors included the following: - -===== (Name - Github ID) - -* *Minh T. Nguyen - enderminh: Github contribution editor* -* Ed Eykholt - edeykholt -* Michalis Kargakis - kargakis -* Erik Wahlström - erikwam -* Richard Kiss - richardkiss -* Eric Winchell - winchell -* Sergej Kotliar - ziggamon -* Nagaraj Hubli - nagarajhubli -* ethers -* Alex Waters - alexwaters -* Mihail Russu - MihailRussu -* Ish Ot Jr. - ishotjr -* James Addison - jayaddison -* Nekomata - nekomata-3 -* Simon de la Rouviere - simondlr -* Chapman Shoop - belovachap -* Holger Schinzel - schinzelh -* effectsToCause - vericoin -* Stephan Oeste - Emzy -* Joe Bauers - joebauers -* Jason Bisterfeldt - jbisterfeldt -* Ed Leafe - EdLeafe + Software that holds all your bitcoin addresses and secret keys. Use it to send, receive and store your bitcoin. \ No newline at end of file From 78911047fe9395dbe252e3a3907d775e2e7aa3cb Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Sun, 28 Sep 2014 16:02:55 -0400 Subject: [PATCH 100/102] code example preface --- preface.asciidoc | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/preface.asciidoc b/preface.asciidoc index 3cb05b09..e5db94e0 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -9,15 +9,7 @@ Two years later, after creating a number of small startups to explore various bi === Intended Audience -This book is mostly intended for coders. If you can use a programming language, this book will teach you how cryptographic currencies work, how to use them and how to develop software that works with them. The first few chapters are also suitable as an in-depth introduction to bitcoin for non-coders - those trying to understand the inner workings of bitcoin and cryptocurrencies. The examples are illustrated in Python and on the command-line of a Unix-like operating system such as Linux. - -=== Github Source Code - -This book is available on Github, as a repository that contains the text, images and code: - -https://github.com/aantonop/bitcoinbook - -Fork the book code, try the code examples, or submit corrections via Github. +This book is mostly intended for coders. If you can use a programming language, this book will teach you how cryptographic currencies work, how to use them and how to develop software that works with them. The first few chapters are also suitable as an in-depth introduction to bitcoin for non-coders - those trying to understand the inner workings of bitcoin and crypto-currencies. === Why Are There Bugs On The Cover? @@ -25,7 +17,7 @@ The Leafcutter Ant is a species that exhibits highly complex behavior in a colon While ants form a caste-based society and have a queen for producing offspring, there is no central authority or leader in an ant colony. The highly intelligent and sophisticated behavior exhibited by a multi-million member colony is an emergent property from the interaction of the individuals in a social network. -Nature demonstrates that de-centralized systems can be resilient and can produce emergent complexity and sophistication without the need for a central authority, hierarchy or complex parts. +Nature demonstrates that de-centralized systems can be resilient and can produce emergent complexity and incredible sophistication without the need for a central authority, hierarchy or complex parts. Bitcoin is a highly sophisticated de-centralized trust network that can support a myriad of financial processes. Yet, each node in the bitcoin network follows a few simple mathematical rules. The interaction between many nodes is what leads to the emergence of the sophisticated behavior, not any inherent complexity or trust in any single node. Like an ant colony, the bitcoin network is a resilient network of simple nodes following simple rules that together can do amazing things without any central coordination. @@ -52,6 +44,24 @@ This icon signifies a tip, suggestion, or general note. This icon indicates a warning or caution. ==== +=== Github Source Code + +This book is available on Github, as a repository that contains the text, images and code: + +https://github.com/aantonop/bitcoinbook + +Fork the book code, try the code examples, or submit corrections via Github. + +=== Code Examples + +The examples are illustrated in Python, C++ and using the command-line of a Unix-like operating system such as Linux or Mac OSX. All code snippets are available in the Github repository and can be accessed online at https://github.com/aantonop/bitcoinbook in the +code+ subdirectory of the main repository. + +All the code snippets can be replicated on most operating systems with a minimal installation of compilers and interpreters for the corresponding languages. Where necessary, we provide basic installation instructions and step-by-step examples of the output of those instructions. + +Some of the code snippets and code output have been re-formatted for print. In all such cases, the lines have been split by a backslash "\" character, followed by a newline character. When transcribing the examples, remove those two characters and join the lines again and you should see identical results as shown in the example. + +All the code snippets use real values and calculations where possible, so that you can build from example to example and see the same results in any code you write to calculate the same values. For example, the private keys and corresponding public keys and addresses are all real. The sample transactions, blocks and blockchain references have all been introduced in the actual bitcoin blockchain and are part of the public ledger, so you can review them on any bitcoin system. + === Using Code Examples 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 a CD-ROM of 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. @@ -112,7 +122,7 @@ This book represents the efforts and contributions of many people. I am grateful The journey to becoming an author starts long before the first book, of course. I owe my love of words and books to my mother Theresa Delaney, who raised me in a house with books lining every wall, encouraged me to read books for pleasure and instilled in me a deep respect for language. My mother also bought me my first computer in 1982, despite being a self-described technophobe. My father, Menelaos Antonopoulos, a civil engineer who just published his first book at 80 years old, was the one who taught me logical and analytical thinking and a love of science and engineering. Thanks also to Jean de Vera for her early encouragement to become an author and for always believing and insisting that I had a book in me. -My first language (and schooling) was Greek, so I had to take a remedial English Writing course in my first year of university. I owe thanks to Diana Kordas, my English Writing teacher, who helped me build confidence and skills that year. As a professional, I developed my technical writing skills on the topic of data centers, writing for Network World magazine. I owe thanks to John Dix and John Gallant who gave me my first writing job as a columnist at Network World and to my editor Michael Cooney and my colleague Johna Till Johnson who edited my columns and made them fit for publication. Writing 500 words a week for four years gave me enough experience to eventually consider becoming an author. +My first language (and schooling) was Greek, so I had to take a remedial English Writing course in my first year of university. I owe thanks to Diana Kordas, my English Writing teacher, who helped me build confidence and skills that year. Later, as a professional, I developed my technical writing skills on the topic of data centers, writing for Network World magazine. I owe thanks to John Dix and John Gallant who gave me my first writing job as a columnist at Network World and to my editor Michael Cooney and my colleague Johna Till Johnson who edited my columns and made them fit for publication. Writing 500 words a week for four years gave me enough experience to eventually consider becoming an author. Thanks also to those who supported me when I submitted my book proposal to O'Reilly, by providing references and reviewing the proposal. Specifically, thanks to John Gallant, Gregory Ness, Richard Stiennon, Joel Snyder, Adam B. Levine, Sandra Gittlen, John Dix, Johna Till Johnson, Roger Ver and Jon Matonis. Special thanks to Richard Kagan and Tymon Mattoszko who reviewed early versions of the proposal and Matthew Owain Taylor who copy-edited the proposal. From 3a4b1e3f54d788b28e7037bb107a10560901777e Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Mon, 29 Sep 2014 11:36:52 -0400 Subject: [PATCH 101/102] fixes --- preface.asciidoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/preface.asciidoc b/preface.asciidoc index e5db94e0..f2557a03 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -120,7 +120,7 @@ Watch us on YouTube: link:$$http://www.youtube.com/oreillymedia$$[] This book represents the efforts and contributions of many people. I am grateful for all the help I received from friends, colleagues and even complete strangers, who joined me in this effort to write the definitive technical book on crypto-currencies and bitcoin. -The journey to becoming an author starts long before the first book, of course. I owe my love of words and books to my mother Theresa Delaney, who raised me in a house with books lining every wall, encouraged me to read books for pleasure and instilled in me a deep respect for language. My mother also bought me my first computer in 1982, despite being a self-described technophobe. My father, Menelaos Antonopoulos, a civil engineer who just published his first book at 80 years old, was the one who taught me logical and analytical thinking and a love of science and engineering. Thanks also to Jean de Vera for her early encouragement to become an author and for always believing and insisting that I had a book in me. +The journey to becoming an author starts long before the first book, of course. I owe my love of words and books to my mother, Theresa, who raised me in a house with books lining every wall, encouraged me to read books for pleasure and instilled in me a deep respect for language. My mother also bought me my first computer in 1982, despite being a self-described technophobe. My father, Menelaos, a civil engineer who just published his first book at 80 years old, was the one who taught me logical and analytical thinking and a love of science and engineering. Thanks also to Jean for her early encouragement to become an author and for always believing and insisting that I had a book in me. My first language (and schooling) was Greek, so I had to take a remedial English Writing course in my first year of university. I owe thanks to Diana Kordas, my English Writing teacher, who helped me build confidence and skills that year. Later, as a professional, I developed my technical writing skills on the topic of data centers, writing for Network World magazine. I owe thanks to John Dix and John Gallant who gave me my first writing job as a columnist at Network World and to my editor Michael Cooney and my colleague Johna Till Johnson who edited my columns and made them fit for publication. Writing 500 words a week for four years gave me enough experience to eventually consider becoming an author. @@ -128,7 +128,7 @@ Thanks also to those who supported me when I submitted my book proposal to O'Rei Thanks to Cricket Liu, author of O'Reilly title "DNS and BIND" who introduced me to O'Reilly. Thanks also to Michael Loukides and Allyson MacDonald at O'Reilly who worked for months to help make this book happen. Allyson was especially patient when deadlines were missed and deliverables delayed as life intervened in our planned schedule. -The first few drafts of the first few chapters were the hardest, because bitcoin is a difficult subject to unravel. Every time I pulled on one thread of the bitcoin technology, I had to pull in the whole thing. I repeatedly got stuck and a bit despondent as I struggled to make the topic easy to understand and create a narrative around such a dense technical subject. Eventually, I decided to tell the story of bitcoin through the stories of the people using bitcoin and the whole book became a lot easier to write. I owe special thanks to Richard Kagan and Pamela Morgan who helped me unravel the story and get past the moments of writer's block, reviewing the early drafts of the book. Thanks to the developers of the San Francisco Bitcoin Developers Meetup group and Taariq Lewis, the group's co-founder, for helping to test the early material. +The first few drafts of the first few chapters were the hardest, because bitcoin is a difficult subject to unravel. Every time I pulled on one thread of the bitcoin technology, I had to pull in the whole thing. I repeatedly got stuck and a bit despondent as I struggled to make the topic easy to understand and create a narrative around such a dense technical subject. Eventually, I decided to tell the story of bitcoin through the stories of the people using bitcoin and the whole book became a lot easier to write. I owe thanks to my friend and mentor, Richard Kagan, who helped me unravel the story and get past the moments of writer's block, and Pamela Morgan who reviewed early drafts of each chapter and asked the hard questions to make them better. Also, thanks to the developers of the San Francisco Bitcoin Developers Meetup group and Taariq Lewis, the group's co-founder, for helping to test the early material. During the development of the book, I made early drafts available on Github and invited public comments. More than a hundred comments, suggestions, corrections and contributions were submitted in response. Those contributions are explicitly acknowledged, with my thanks, in <>. Special thanks to Minh T. Nguyen who volunteered to manage the Github contributions and added many significant contributions himself. Thanks also to Andrew Naugler for infographic design. From 05b741a3cf7c0369791ac65c40c9ec87293526e0 Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Tue, 30 Sep 2014 20:38:39 -0400 Subject: [PATCH 102/102] revised acknowledgments --- preface.asciidoc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/preface.asciidoc b/preface.asciidoc index f2557a03..83cf126a 100644 --- a/preface.asciidoc +++ b/preface.asciidoc @@ -120,9 +120,9 @@ Watch us on YouTube: link:$$http://www.youtube.com/oreillymedia$$[] This book represents the efforts and contributions of many people. I am grateful for all the help I received from friends, colleagues and even complete strangers, who joined me in this effort to write the definitive technical book on crypto-currencies and bitcoin. -The journey to becoming an author starts long before the first book, of course. I owe my love of words and books to my mother, Theresa, who raised me in a house with books lining every wall, encouraged me to read books for pleasure and instilled in me a deep respect for language. My mother also bought me my first computer in 1982, despite being a self-described technophobe. My father, Menelaos, a civil engineer who just published his first book at 80 years old, was the one who taught me logical and analytical thinking and a love of science and engineering. Thanks also to Jean for her early encouragement to become an author and for always believing and insisting that I had a book in me. +It is impossible to make a distinction between the bitcoin technology and the bitcoin community, and this book is as much a product of that community as it is a book on the technology. My work on this book was encouraged, cheered on, supported and rewarded by the entire bitcoin community from the very beginning until the very end. More than anything, this book has allowed me to be part of a wonderful community for two years and I can't thank you enough for accepting me in this community. There are far too many people to mention by name - people I've met at conferences, events, seminars, meetups, pizza gatherings and small private gatherings, as well as many who communicated with me by twitter, on reddit, on bitcointalk.org and on github who have had an impact on this book. Every idea, analogy, question, answer, and explanation you find in this book was at some point inspired, tested or improved through my interactions with the community. Thank you all for your support, without you this book would not have happened. I am forever grateful. -My first language (and schooling) was Greek, so I had to take a remedial English Writing course in my first year of university. I owe thanks to Diana Kordas, my English Writing teacher, who helped me build confidence and skills that year. Later, as a professional, I developed my technical writing skills on the topic of data centers, writing for Network World magazine. I owe thanks to John Dix and John Gallant who gave me my first writing job as a columnist at Network World and to my editor Michael Cooney and my colleague Johna Till Johnson who edited my columns and made them fit for publication. Writing 500 words a week for four years gave me enough experience to eventually consider becoming an author. +The journey to becoming an author starts long before the first book, of course. My first language (and schooling) was Greek, so I had to take a remedial English Writing course in my first year of university. I owe thanks to Diana Kordas, my English Writing teacher, who helped me build confidence and skills that year. Later, as a professional, I developed my technical writing skills on the topic of data centers, writing for Network World magazine. I owe thanks to John Dix and John Gallant who gave me my first writing job as a columnist at Network World and to my editor Michael Cooney and my colleague Johna Till Johnson who edited my columns and made them fit for publication. Writing 500 words a week for four years gave me enough experience to eventually consider becoming an author. Thanks to Jean for her early encouragement to become an author and for always believing and insisting that I had a book in me. Thanks also to those who supported me when I submitted my book proposal to O'Reilly, by providing references and reviewing the proposal. Specifically, thanks to John Gallant, Gregory Ness, Richard Stiennon, Joel Snyder, Adam B. Levine, Sandra Gittlen, John Dix, Johna Till Johnson, Roger Ver and Jon Matonis. Special thanks to Richard Kagan and Tymon Mattoszko who reviewed early versions of the proposal and Matthew Owain Taylor who copy-edited the proposal. @@ -132,11 +132,13 @@ The first few drafts of the first few chapters were the hardest, because bitcoin During the development of the book, I made early drafts available on Github and invited public comments. More than a hundred comments, suggestions, corrections and contributions were submitted in response. Those contributions are explicitly acknowledged, with my thanks, in <>. Special thanks to Minh T. Nguyen who volunteered to manage the Github contributions and added many significant contributions himself. Thanks also to Andrew Naugler for infographic design. +Once the book was drafted, it went through several rounds of technical review. Thanks to Cricket Liu and Lorne Lantz for their thorough review, comments and support. + Several bitcoin developers contributed code samples, reviews, comments and encouragement. Thanks to Amir Taaki for example code snippets and many great comments, Vitalik Buterin and Richard Kiss for help with elliptic curve math and code contributions, Gavin Andresen for corrections, comments and encouragement, Michalis Kargakis for comments, contributions and btcd writeup. -Once the book was drafted, it went through several rounds of technical review. Thanks to Cricket Liu and Lorne Lantz for their thorough review, comments and support. +I owe my love of words and books to my mother, Theresa, who raised me in a house with books lining every wall. My mother also bought me my first computer in 1982, despite being a self-described technophobe. My father, Menelaos, a civil engineer who just published his first book at 80 years old, was the one who taught me logical and analytical thinking and a love of science and engineering. -It is impossible to make a distinction between the bitcoin technology and the bitcoin community, and this book is as much a product of that community as it is a book on the technology. My work on this book was encouraged, cheered on, supported and rewarded by the entire bitcoin community from the very beginning until the very end. More than anything, this book has allowed me to be part of a wonderful community for two years and I can't thank you enough for accepting me in this community. There are far too many people to mention by name - people I've met at conferences, events, seminars, meetups, pizza gatherings and small private gatherings, as well as many who communicated with me by twitter, on reddit, on bitcointalk.org and on github who have had an impact on this book. Every idea, analogy, question, answer, and explanation you find in this book was at some point inspired, tested or improved through my interactions with the community. Thank you all for your support, without you this book would not have happened. I am forever grateful. +Thank you all for supporting me throughout this journey. [[github_contrib]] ==== Early Release Draft (Github Contributions)