Merge remote-tracking branch 'remotes/luke-jr/master' into master

This commit is contained in:
Saivann 2014-10-03 15:36:09 -04:00
commit 89b86f6b66
12 changed files with 394 additions and 75 deletions

View file

@ -114,8 +114,6 @@ op codes: op code
'`op_hash160`': op_hash160
'`op_return`': op_return
'`op_verify`': op_verify
orphan:
orphaned: orphan
outputs: output
output:
output index:
@ -188,6 +186,8 @@ signature scripts: signature script
signatures: signature
SPV:
stack:
stale block:
stale blocks: stale block
standard script:
standard scripts: standard script
standard transaction: standard script
@ -225,6 +225,9 @@ BIP70:
BIP71:
BIP72:
## CVEs
CVE-2012-2459:
## RPCs
'`addmultisigaddress`': rpc addmultisigaddress
'`addnode`': rpc addnode

View file

@ -49,7 +49,7 @@ chmod 0600 bitcoin.conf
For development, it's safer and cheaper to use Bitcoin's test network (testnet)
or regression test mode (regtest) described below.
Questions about Bitcoin development are best sent to the Bitcoin [Forum][forum
Questions about Bitcoin use are best sent to the [BitcoinTalk forum][forum
tech support] and [IRC channels][]. Errors or suggestions related to
documentation on Bitcoin.org can be [submitted as an issue][docs issue]
or posted to the [bitcoin-documentation mailing list][].

View file

@ -2,8 +2,8 @@
{% autocrossref %}
The block chain provides Bitcoin's public ledger, a timestamped record
of all confirmed transactions. This system is used to protect against double spending
The block chain provides Bitcoin's public ledger, an ordered and timestamped record
of transactions. This system is used to protect against double spending
and modification of previous transaction records, using proof of
work verified by the peer-to-peer network to maintain a global consensus.
@ -20,35 +20,33 @@ A [block][]{:#term-block}{:.term} of one or more new transactions
is collected into the transaction data part of a block.
Copies of each transaction are hashed, and the hashes are then paired,
hashed, paired again, and hashed again until a single hash remains, the
[Merkle root][]{:#term-merkle-root}{:.term} of a Merkle tree.
[merkle root][]{:#term-merkle-root}{:.term} of a merkle tree.
The Merkle root is stored in the block header. Each block also
The merkle root is stored in the block header. Each block also
stores the hash of the previous block's header, chaining the blocks
together. This ensures a transaction cannot be modified without
modifying the block that records it and all following blocks.
Transactions are also chained together. Bitcoin wallet software gives
the impression that satoshis are sent from and to addresses, but
bitcoins really move from transaction to transaction. Each standard
transaction spends the satoshis previously spent in one or more earlier
the impression that satoshis are sent from and to wallets, but
bitcoins really move from transaction to transaction. Each
transaction spends the satoshis previously received in one or more earlier
transactions, so the input of one transaction is the output of a
previous transaction.
![Transaction Propagation](/img/dev/en-transaction-propagation.svg)
A single transaction can spend bitcoins to multiple outputs, as would be
the case when sending satoshis to multiple addresses, but each output of
A single transaction can create multiple outputs, as would be
the case when sending to multiple addresses, but each output of
a particular transaction can only be used as an input once in the
block chain. Any subsequent reference is a forbidden double
spend---an attempt to spend the same satoshis twice.
Outputs are not the same as Bitcoin addresses. You can use the same
address in multiple transactions, but you can only use each output once.
Outputs are tied to [transaction identifiers (TXIDs)][txid]{:#term-txid}{:.term}, which are the hashes
of signed transactions.
Because each output of a particular transaction can only be spent once,
all transactions included in the block chain can be categorized as either
the outputs of all transactions included in the block chain can be categorized as either
[Unspent Transaction Outputs (UTXOs)][utxo]{:#term-utxo}{:.term} or spent transaction outputs. For a
payment to be valid, it must only use UTXOs as inputs.
@ -66,10 +64,10 @@ satoshi transaction fee.
{% autocrossref %}
The block chain is collaboratively maintained on a peer-to-peer network, so
Bitcoin requires each block prove a significant amount of work was invested in
The block chain is collaboratively maintained by anonymous peers on the network, so
Bitcoin requires that each block prove a significant amount of work was invested in
its creation to ensure that untrustworthy peers who want to modify past blocks have
to work harder than trustworthy peers who only want to add new blocks to the
to work harder than honest peers who only want to add new blocks to the
block chain.
Chaining blocks together makes it impossible to modify transactions included
@ -89,18 +87,17 @@ hash of the block header which does not exceed a certain value. For
example, if the maximum possible hash value is <span
class="math">2<sup>256</sup>1</span>, you can prove that you
tried up to two combinations by producing a hash value less than <span
class="math">2<sup>256</sup>1</span>.
class="math">2<sup>255</sup></span>.
In the example given above, you will almost certainly produce a
successful hash on your first try. You can even estimate the probability
In the example given above, you will produce a successful hash on average every other try.
You can even estimate the probability
that a given hash attempt will generate a number below the [target][]{:#term-target}{:.term}
threshold. Bitcoin itself does not track probabilities but instead
simply assumes that the lower it makes the target threshold, the more
hash attempts, on average, will need to be tried.
threshold.
Bitcoin assumes a linear probability that the lower it makes the target threshold, the more hash attempts (on average) will need to be tried.
New blocks will only be added to the block chain if their hash is at
least as challenging as a [difficulty][]{:#term-difficulty}{:.term} value expected by the peer-to-peer
network. Every 2,016 blocks, the network uses timestamps stored in each
least as challenging as a [difficulty][]{:#term-difficulty}{:.term} value expected by the consensus protocol.
Every 2,016 blocks, the network uses timestamps stored in each
block header to calculate the number of seconds elapsed between generation
of the first and last of those last 2,016 blocks. The ideal value is
1,209,600 seconds (two weeks).
@ -125,7 +122,7 @@ propagate a modified block as the entire Bitcoin network expended
between the time the original block was created and the present time.
Only if you acquired a majority of the network's hashing power
could you reliably execute such a [51 percent attack][]{:#term-51-attack}{:.term} against
transaction history.
transaction history (although, it should be noted, that even less than 50% of the hashing power still has a good chance of performing such attacks).
The block header provides several easy-to-modify fields, such as a
dedicated nonce field, so obtaining new hashes doesn't require waiting
@ -140,11 +137,12 @@ a block does not slow down hashing with extra I/O.
{% autocrossref %}
Any Bitcoin miner who successfully hashes a block header to a value
below the target threshold can add the entire block to the block chain.
(Assuming the block is otherwise valid.) These blocks are commonly addressed
below the target threshold can add the entire block to the block chain
(assuming the block is otherwise valid).
These blocks are commonly addressed
by their [block height][]{:#term-block-height}{:.term}---the number of blocks between them and the first Bitcoin
block (block 0, most commonly known as the [genesis block]{:#term-genesis-block}{:.term}). For example,
block 2016 is where difficulty could have been first adjusted.
block 2016 is where difficulty could have first been adjusted.
![Common And Uncommon Block Chain Forks](/img/dev/en-blockchain-fork.svg)
@ -154,15 +152,18 @@ creates an apparent [fork][accidental fork]{:#term-accidental-fork}{:.term} in t
illustration above.
When miners produce simultaneous blocks at the end of the block chain, each
peer individually chooses which block to trust. (In the absence of
other considerations, discussed below, peers usually trust the first
block they see.)
node individually chooses which block to accept. In the absence of
other considerations, discussed below, nodes usually use the first
block they see.
Eventually a miner produces another block which attaches to only one of
the competing simultaneously-mined blocks. This makes that side of
the fork longer than the other side. Assuming a fork only contains valid
blocks, normal peers always follow the longest fork (the most difficult chain
to recreate) and throw away ([orphan][]{:#term-orphan}{:.term}) blocks belonging to shorter forks.
the fork stronger than the other side.
Assuming a fork only contains valid
blocks, normal peers always follow the the most difficult chain
to recreate and throw away [stale blocks][stale block]{:#term-stale-block}{:.term} belonging to shorter forks.
(Stale blocks are also sometimes called orphans or orphan blocks, but
those terms are also used for blocks without a known parent block.)
[Long-term forks][long-term fork]{:#term-long-term-fork}{:.term} are possible if different miners work at cross-purposes,
such as some miners diligently working to extend the block chain at the
@ -171,7 +172,7 @@ transaction history.
Since multiple blocks can have the same height during a block chain fork, block
height should not be used as a globally unique identifier. Instead, blocks
are usually referenced by the SHA256(SHA256()) hash of their header.
are usually referenced by the hash of their header (often with the byte order reversed, and in hexadecimal).
{% endautocrossref %}
@ -180,34 +181,33 @@ are usually referenced by the SHA256(SHA256()) hash of their header.
{% autocrossref %}
Every block must include one or more transactions. The first one of these
transactions must be a coinbase transaction which should collect and
spend the block reward and any transaction fees paid by transactions included in this block.
transactions must be a coinbase transaction, also called a generation transaction, which should collect and
spend the block reward (comprised of a block subsidy and any transaction fees paid by transactions included in this block).
The UTXO of a coinbase transaction has the special condition that
it cannot be spent (used as an input) for at least 100 blocks. This temporarily
prevents a miner from spending the transaction fees and block reward from a
block that may later be orphaned (destroyed) after a block chain fork.
block that may later be determined to be stale (and therefore the coinbase transaction destroyed) after a block chain fork.
Blocks are not required to include any non-coinbase transactions, but
miners almost always do include additional transactions in order to
collect their transaction fees.
All transactions, including the coinbase transaction, are encoded into
blocks in binary rawtransaction format prefixed by a block transaction
sequence number.
blocks in binary rawtransaction format.
The rawtransaction format is hashed to create the transaction
identifier (txid). From these txids, the [Merkle tree][]{:#term-merkle-tree}{:.term} is constructed by pairing each
identifier (txid). From these txids, the [merkle tree][]{:#term-merkle-tree}{:.term} is constructed by pairing each
txid with one other txid and then hashing them together. If there are
an odd number of txids, the txid without a partner is hashed with a
copy of itself.
The resulting hashes themselves are each paired with one other hash and
hashed together. Any hash without a partner is hashed with itself. The
process repeats until only one hash remains, the Merkle root.
process repeats until only one hash remains, the merkle root.
For example, if transactions were merely joined (not hashed), a
five-transaction Merkle tree would look like the following text diagram:
five-transaction merkle tree would look like the following text diagram:
{% endautocrossref %}
@ -224,19 +224,23 @@ A B C D E .........Transactions
{% autocrossref %}
As discussed in the Simplified Payment Verification (SPV) subsection,
the Merkle tree allows clients to verify for
the merkle tree allows clients to verify for
themselves that a transaction was included in a block by obtaining the
Merkle root from a block header and a list of the intermediate hashes
merkle root from a block header and a list of the intermediate hashes
from a full peer. The full peer does not need to be trusted: it is
expensive to fake block headers and the intermediate hashes cannot be faked or
the verification will fail.
For example, to verify transaction D was added to the
block, an SPV client only needs a copy of the C, AB, and EEEE hashes in addition to the
Merkle root; the client doesn't need to know anything about any of the
merkle root; the client doesn't need to know anything about any of the
other transactions. If the five transactions in this block were all at
the maximum size, downloading the entire block would require over
500,000 bytes---but downloading three hashes plus the block header
requires only 140 bytes.
Note: If identical txids are found within the same block, there is a possibility that the merkle tree may collide with a block with some or all duplicates removed due to how unbalanced merkle trees are implemented (duplicating the lone hash).
Since it is impractical to have separate transactions with identical txids, this does not impose a burden on honest software, but must be checked if the invalid status of a block is to be cached;
otherwise, a valid block with the duplicates eliminated could have the same merkle root and block hash, but be rejected by the cached invalid outcome, resulting in security bugs such as CVE-2012-2459.
{% endautocrossref %}

View file

@ -5,8 +5,8 @@ Bitcoin and start building Bitcoin-based applications. To make the best use of
this documentation, you may want to install the current version of Bitcoin
Core, either from [source][core git] or from a [pre-compiled executable][core executable].
Questions about Bitcoin development are best sent to the Bitcoin [Forum][forum
tech support] and [IRC channels][]. Errors or suggestions related to
Questions about Bitcoin development are best asked in the Bitcoin [IRC channels][].
Errors or suggestions related to
documentation on Bitcoin.org can be [submitted as an issue][docs issue]
or posted to the [bitcoin-documentation mailing list][].

View file

@ -37,7 +37,7 @@ The mining hardware iterates through every possible value for the block
header nonce and generates the corresponding hash.
If none of the hashes are below the threshold, the mining hardware gets
an updated block header with a new Merkle root from the mining software;
an updated block header with a new merkle root from the mining software;
this new block header is created by adding extra nonce data to the
coinbase field of the coinbase transaction.
@ -71,7 +71,7 @@ miner checked a percentage of the possible hash values.
The miner then sends to the pool a copy of the information the pool
needs to validate that the header will hash below the target and that
the the block of transactions referred to by the header Merkle root field
the the block of transactions referred to by the header merkle root field
is valid for the pool's purposes. (This usually means that the coinbase
transaction must pay the pool.)
@ -139,10 +139,10 @@ provides the mining software with much more information:
Using the transactions received, the mining software adds a nonce to the
coinbase extra nonce field and then converts all the transactions into a
Merkle tree to derive a Merkle root it can use in a block header.
merkle tree to derive a merkle root it can use in a block header.
Whenever the extra nonce field needs to be changed, the mining software
rebuilds the necessary parts of the Merkle tree and updates the time and
Merkle root fields in the block header.
rebuilds the necessary parts of the merkle tree and updates the time and
merkle root fields in the block header.
Like all `bitcoind` RPCs, `getblocktemplate` is sent over HTTP. To
ensure they get the most recent work, most miners use [HTTP longpoll][] to
@ -164,26 +164,26 @@ need to construct block headers on their own:
1. The information necessary to construct a coinbase transaction
paying the pool.
2. The parts of the Merkle tree which need to be re-hashed to
create a new Merkle root when the coinbase transaction is
updated with a new extra nonce. The other parts of the Merkle
2. The parts of the merkle tree which need to be re-hashed to
create a new merkle root when the coinbase transaction is
updated with a new extra nonce. The other parts of the merkle
tree, if any, are not sent, effectively limiting the amount of data which needs
to be sent to (at most) about a kilobyte at current transaction
volume.
3. All of the other non-Merkle root information necessary to construct a
3. All of the other non-merkle root information necessary to construct a
block header for the next block.
4. The mining pool's current target threshold for accepting shares.
Using the coinbase transaction received, the mining software adds a
nonce to the coinbase extra nonce field, hashes the coinbase
transaction, and adds the hash to the received parts of the Merkle tree.
The tree is hashed as necessary to create a Merkle root, which is added
transaction, and adds the hash to the received parts of the merkle tree.
The tree is hashed as necessary to create a merkle root, which is added
to the block header information received. Whenever the extra nonce field
needs to be changed, the mining software updates and re-hashes the
coinbase transaction, rebuilds the Merkle root, and updates the header
Merkle root field.
coinbase transaction, rebuilds the merkle root, and updates the header
merkle root field.
Unlike `getblocktemplate`, miners using Stratum cannot inspect or add
transactions to the block they're currently mining. Also unlike

View file

@ -24,9 +24,9 @@ For a client to be fooled, an adversary would need to give a complete alternativ
An alternative approach detailed in the [original Bitcoin paper][bitcoinpdf] is a client that only downloads the headers of blocks during the initial syncing process and then requests transactions from full nodes as needed. This scales linearly with the height of the block chain at only 80 bytes per block header, or up to 4.2MB per year, regardless of total block size.
As described in the white paper, the Merkle root in the block header along with a Merkle branch can prove to the SPV client that the transaction in question is embedded in a block in the block chain. This does not guarantee validity of the transactions that are embedded. Instead it demonstrates the amount of work required to perform a double-spend attack.
As described in the white paper, the merkle root in the block header along with a merkle branch can prove to the SPV client that the transaction in question is embedded in a block in the block chain. This does not guarantee validity of the transactions that are embedded. Instead it demonstrates the amount of work required to perform a double-spend attack.
The block's depth in the block chain corresponds to the cumulative difficulty that has been performed to build on top of that particular block. The SPV client knows the Merkle root and associated transaction information, and requests the respective Merkle branch from a full node. Once the Merkle branch has been retrieved, proving the existence of the transaction in the block, the SPV client can then look to block *depth* as a proxy for transaction validity and security. The cost of an attack on a user by a malicious node who inserts an invalid transaction grows with the cumulative difficulty built on top of that block, since the malicious node alone will be mining this forged chain.
The block's depth in the block chain corresponds to the cumulative difficulty that has been performed to build on top of that particular block. The SPV client knows the merkle root and associated transaction information, and requests the respective merkle branch from a full node. Once the merkle branch has been retrieved, proving the existence of the transaction in the block, the SPV client can then look to block *depth* as a proxy for transaction validity and security. The cost of an attack on a user by a malicious node who inserts an invalid transaction grows with the cumulative difficulty built on top of that block, since the malicious node alone will be mining this forged chain.
{% endautocrossref %}

View file

@ -70,7 +70,7 @@ The 80-byte block header contains the following six fields:
block chain and ensures no previous block can be changed without also
changing this block's header.
3. The *Merkle root* is a hash derived from hashes of all the
3. The *merkle root* is a hash derived from hashes of all the
transactions included in this block. It ensures no transactions can
be modified in this block without changing the block header hash.
@ -89,7 +89,7 @@ The 80-byte block header contains the following six fields:
hash values for the header until they find a hash value less than or
equal to the target threshold. If all values within the nonce's four
bytes are tested, the time can be updated or the
coinbase transaction can be changed and the Merkle
coinbase transaction can be changed and the merkle
root updated.
{% endautocrossref %}

View file

@ -1232,7 +1232,7 @@ A hex-encoded block or the following JSON object described in segments.
The block header *hash* (same as you provided); the number of
*confirmations* (subsequent blocks), the *size* of the block in bytes,
the block *height*, the block *version*, and the *Merkle root* hash.
the block *height*, the block *version*, and the *merkle root* hash.
{% endautocrossref %}
@ -3231,7 +3231,7 @@ block, and lets a miner return a successful header.
*String; optional:* if header data is provided, it will be checked to
see if it meets the target threshold (difficulty) and then affixed to a
block of transactions (which produces a matching Merkle root). Then the
block of transactions (which produces a matching merkle root). Then the
complete block will be broadcast to the network. Data is in the same
format as provided by the *data* output parameter (see below).

View file

@ -5,8 +5,8 @@ to help you start building Bitcoin-based applications. To make the best use of
this documentation, you may want to install the current version of Bitcoin
Core, either from [source][core git] or from a [pre-compiled executable][core executable].
Questions about Bitcoin development are best sent to the Bitcoin [Forum][forum
tech support] and [IRC channels][]. Errors or suggestions related to
Questions about Bitcoin development are best asked in the Bitcoin [IRC channels][].
Errors or suggestions related to
documentation on Bitcoin.org can be [submitted as an issue][docs issue]
or posted to the [bitcoin-documentation mailing list][].

View file

@ -58,8 +58,8 @@
[merge]: /en/developer-guide#term-merge "Spending, in the same transaction, multiple outputs which can be traced back to different previous spenders, leaking information about how many satoshis you control"
[merge avoidance]: /en/developer-guide#term-merge-avoidance "A strategy for selecting which outputs to spend that avoids merging outputs with different histories that could leak private information"
[message]: /en/developer-guide#term-message "A parameter of bitcoin: URIs which allows the receiver to optionally specify a message to the spender"
[Merkle root]: /en/developer-guide#term-merkle-root "The root node of a Merkle tree descended from all the hashed pairs in the tree"
[Merkle tree]: /en/developer-guide#term-merkle-tree "A tree constructed by hashing paired data, then pairing and hashing the results until a single hash remains, the Merkle root"
[merkle root]: /en/developer-guide#term-merkle-root "The root node of a merkle tree descended from all the hashed pairs in the tree"
[merkle tree]: /en/developer-guide#term-merkle-tree "A tree constructed by hashing paired data, then pairing and hashing the results until a single hash remains, the merkle root"
[micropayment channel]: /en/developer-guide#term-micropayment-channel
[millibits]: /en/developer-guide#term-millibits "0.001 bitcoins (100,000 satoshis)"
[mine]: /en/developer-guide#term-miner "Creating Bitcoin blocks which solve proof-of-work puzzles in exchange for block rewards and transaction fees"
@ -78,7 +78,6 @@
[op_hash160]: /en/developer-reference#term-op-hash160 "Operation which converts the entry below it on the stack into a RIPEMD(SHA256()) hashed version of itself"
[op_return]: /en/developer-reference#term-op-return "Operation which terminates the script in failure"
[op_verify]: /en/developer-reference#term-op-verify "Operation which terminates the script if the entry below it on the stack is non-true (zero)"
[orphan]: /en/developer-guide#term-orphan "Blocks which were successfully mined but which aren't included on the current valid block chain"
[output]: /en/developer-guide#term-output "The output of a transaction which transfers value to a pubkey script"
[output index]: /en/developer-guide#term-output-index "The sequentially-numbered index of outputs in a single transaction starting from 0"
[P2PKH]: /en/developer-guide#term-p2pkh "A pubkey script which Pays To PubKey Hashes (P2PKH), allowing spending of satoshis to anyone with a Bitcoin address"
@ -136,6 +135,7 @@
[spv]: /en/developer-guide#simplified-payment-verification-spv "A method for verifying particular transactions were included in blocks without downloading the entire contents of the block chain"
[ssl signature]: /en/developer-examples#term-ssl-signature "Signatures created and recognized by major SSL implementations such as OpenSSL"
[stack]: /en/developer-guide#term-stack "An evaluation stack used in Bitcoin's script language"
[stale block]: /en/developer-guide#term-stale-block "Blocks which were successfully mined but which aren't included on the current valid block chain"
[standard script]: /en/developer-guide#standard-transactions "A pubkey script which matches the IsStandard() patterns specified in Bitcoin Core---or a transaction containing only standard outputs. Only standard transactions are mined or broadcast by peers running the default Bitcoin Core software"
[target]: /en/developer-guide#term-target "The threshold below which a block header hash must be in order for the block to be added to the block chain"
[testnet]: /en/developer-examples#testnet "A Bitcoin-like network where the satoshis have no real-world value to allow risk-free testing"
@ -176,6 +176,7 @@
[core git]: https://github.com/bitcoin/bitcoin
[core paymentrequest.proto]: https://github.com/bitcoin/bitcoin/blob/master/src/qt/paymentrequest.proto
[core script.h]: https://github.com/bitcoin/bitcoin/blob/master/src/script.h
[CVE-2012-2459]: https://en.bitcoin.it/wiki/CVEs#CVE-2012-2459
[DER]: https://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One
[devex complex raw transaction]: /en/developer-examples#complex-raw-transaction
[devex payment protocol]: /en/developer-examples#payment-protocol

View file

@ -33,7 +33,7 @@ id: resources
<p>{% translate linkcointelegraph %}<p>
<p><a href="http://www.coindesk.com/">CoinDesk</a></p>
<p><a href="http://bitcoinmagazine.com/">Bitcoin Magazine</a></p>
{% if page.lang == 'ru' %}<p><a href="https://bitcointalk.org/index.php?board=128.0">Биткойн Форум / Новости</a></p>{% else %}<p><a href="https://bitcointalk.org/index.php?board=77.0">Bitcoin Forum / Press</a></p>{% endif %}
{% if page.lang == 'ru' %}<p><a href="https://bitcointalk.org/index.php?board=128.0">Биткойн Форум / Новости</a></p>{% else %}<p><a href="https://bitcointalk.org/index.php?board=77.0">BitcoinTalk press links</a></p>{% endif %}
</div><div>
<h2><img src="/img/ico_market.svg" class="titleicon" alt="Icon">{% translate charts %}</h2>
<p><a href="http://blockchain.info/charts">Blockchain.info</a></p>

311
luke-jr.asc Normal file
View file

@ -0,0 +1,311 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2
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
YwQ=
=LNmU
-----END PGP PUBLIC KEY BLOCK-----