From 46780d317798ee8f76733127f1991dfda75c6c1b Mon Sep 17 00:00:00 2001 From: saivann Date: Fri, 9 May 2014 22:13:59 -0400 Subject: [PATCH] Contributions by @saivann to devel docs Thanks also (in alphabetical order) to @cbeams, @mikehearn, and @tgeller, among others. The last pre-squash commit was: c2b8d562aa107c7b68c60946cea14cdccc5159ad --- _includes/ref_block_chain.md | 95 +++++++++ _includes/ref_transactions.md | 232 ++++++++++++++++++++ _includes/references.md | 283 +++++++++++++++++++++++++ _less/ie.css | 18 +- _less/screen.less | 264 +++++++++++++++++++++++ _templates/bitcoin-for-developers.html | 4 +- _templates/development.html | 6 + _translations/en.yml | 5 +- en/developer-documentation.md | 74 +++++++ en/developer-guide.md | 49 +++++ en/developer-reference.md | 44 ++++ img/dev/README | 36 ++++ img/ico_bill.png | Bin 0 -> 609 bytes img/ico_bill.svg | 92 ++++++++ img/ico_blockchain.png | Bin 0 -> 583 bytes img/ico_blockchain.svg | 115 ++++++++++ img/ico_contract.png | Bin 0 -> 725 bytes img/ico_contract.svg | 115 ++++++++++ img/main_ico_guide.png | Bin 0 -> 677 bytes img/main_ico_guide.svg | 95 +++++++++ img/mini_ico_back.png | Bin 0 -> 543 bytes img/mini_ico_back.svg | 71 +++++++ img/mini_ico_link.png | Bin 0 -> 677 bytes img/mini_ico_link.svg | 73 +++++++ js/main.js | 128 +++++++++++ 25 files changed, 1787 insertions(+), 12 deletions(-) create mode 100644 _includes/ref_block_chain.md create mode 100644 _includes/ref_transactions.md create mode 100644 _includes/references.md create mode 100644 en/developer-documentation.md create mode 100644 en/developer-guide.md create mode 100644 en/developer-reference.md create mode 100644 img/dev/README create mode 100644 img/ico_bill.png create mode 100644 img/ico_bill.svg create mode 100644 img/ico_blockchain.png create mode 100644 img/ico_blockchain.svg create mode 100644 img/ico_contract.png create mode 100644 img/ico_contract.svg create mode 100644 img/main_ico_guide.png create mode 100644 img/main_ico_guide.svg create mode 100644 img/mini_ico_back.png create mode 100644 img/mini_ico_back.svg create mode 100644 img/mini_ico_link.png create mode 100644 img/mini_ico_link.svg diff --git a/_includes/ref_block_chain.md b/_includes/ref_block_chain.md new file mode 100644 index 00000000..500b808c --- /dev/null +++ b/_includes/ref_block_chain.md @@ -0,0 +1,95 @@ +## Block Chain + +The following subsections briefly document core block details. + +### Block Contents + +{% autocrossref %} + +This section describes [version 2 blocks][v2 block]{:#term-v2-block}{:.term}, which are any blocks with a +block height greater than 227,835. (Version 1 and version 2 blocks were +intermingled for some time before that point.) Future block versions may +break compatibility with the information in this section. You can determine +the version of any block by checking its `version` field using +bitcoind RPC calls. + +As of version 2 blocks, each block consists of four root elements: + +1. A [magic number][block header magic]{:#term-block-header-magic}{:.term} (0xd9b4bef9). + +2. A 4-byte unsigned integer indicating how many bytes follow until the + end of the block. Although this field would suggest maximum block + sizes of 4 GiB, max block size is currently capped at 1 MiB and the + default max block size (used by most miners) is 350 KiB (although + this will likely increase over time). + +3. An 80-byte block header described in the section below. + +4. One or more transactions. + +Every block must include a [coinbase transaction][]{:#term-coinbase-tx}{:.term} which should collect and +spend any transaction fees paid by transactions included in this block. +All blocks with a block height less than 6,930,000 are entitled to +receive a [block reward][]{:#term-block-reward}{:.term} of newly created bitcoin value, which also +should be spent in the coinbase transaction. (The block reward started +at 50 bitcoins and is being halved approximately every four years. As of +April 2014, it's 25 bitcoins.) A coinbase transaction is invalid if it +tries to spend more value than is available from the transaction +fees and block reward. + +The coinbase transaction has the same basic format as any other +transaction, but it references a single non-existent UTXO and a special +[coinbase field][]{:#term-coinbase-field}{:.term} replaces the field that would normally hold a scriptSig and +signature. In version 2 blocks, the coinbase parameter must begin with +the current block's block height and may contain additional arbitrary +data or a script up to a maximum total of 100 bytes. + +{% endautocrossref %} + +### Block Header + +{% autocrossref %} + +The 80-byte block header contains the following six fields: + +| Field | Bytes | Format | +|-------------------|--------|--------------------------------| +| 1. Version | 4 | Unsigned Int | +| 2. hashPrevBlock | 32 | Unsigned Int (SHA256 Hash) | +| 3. hashMerkleRoot | 32 | Unsigned Int (SHA256 Hash) | +| 4. Time | 4 | Unsigned Int (Epoch Time) | +| 5. Bits | 4 | Internal Bitcoin Target Format | +| 6. Nonce | 4 | (Arbitrary Data) | + +1. The *[block version][]{:#term-block-version}{:.term}* number indicates which set of block validation rules + to follow so Bitcoin Core developers can add features or + fix bugs. As of block height 227,836, all blocks use version number + 2. + +2. The *hash of the previous block header* puts this block on the + 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 + transactions included in this block. It ensures no transactions can + be modified in this block without changing the block header hash. + +4. The *[block time][]{:#term-block-time}{:.term}* is the approximate time when this block was created in + Unix Epoch time format (number of seconds elapsed since + 1970-01-01T00:00 UTC). The time value must be greater than the + median time of the previous 11 blocks. No peer will accept a block with a + time currently more than two hours in the future according to the + peer's clock. + +5. *Bits* translates into the target threshold value---the maximum allowed + value for this block's hash. The bits value must match the network + difficulty at the time the block was mined. + +6. The *[header nonce][]{:#term-header-nonce}{:.term}* is an arbitrary input that miners can change to test different + 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 + root updated. + +{% endautocrossref %} diff --git a/_includes/ref_transactions.md b/_includes/ref_transactions.md new file mode 100644 index 00000000..820d3bd0 --- /dev/null +++ b/_includes/ref_transactions.md @@ -0,0 +1,232 @@ +## Transactions + +The following subsections briefly document core transaction details. + +#### OP Codes + +{% autocrossref %} + +The op codes used in standard transactions are, + +* Various data pushing op codes from 0x00 to 0x4e (1--78). These aren't + typically shown in examples, but they must be used to push + signatures and public keys onto the stack. See the link below this list + for a description. + +* `OP_1NEGATE` (0x4f), `OP_TRUE`/`OP_1` (0x51), and `OP_2` through + `OP_16` (0x52--0x60), which (respectively) push the values -1, 1, and + 2--16 to the stack. + +* [`OP_CHECKSIG`][op_checksig]{:#term-op-checksig}{:.term} consumes a signature and a full public key, and returns + true if the the transaction data specified by the SIGHASH flag was + converted into the signature using the same ECDSA private key that + generated the public key. Otherwise, it returns false. + +* [`OP_DUP`][op_dup]{:#term-op-dup}{:.term} returns a copy of the item on the stack below it. + +* [`OP_HASH160`][op_hash160]{:#term-op-hash160}{:.term} consumes the item on the stack below it and returns with + a RIPEMD-160(SHA256()) hash of that item. + +* [`OP_EQUAL`][op_equal]{:#term-op-equal}{:.term} consumes the two items on the stack below it and returns + true if they are the same. Otherwise, it returns false. + +* [`OP_VERIFY`][op_verify]{:#term-op-verify}{:.term} consumes one value and returns nothing, but it will + terminate the script in failure if the value consumed is zero (false). + +* [`OP_EQUALVERIFY`][op_equalverify]{:#term-op-equalverify}{:.term} runs `OP_EQUAL` and then `OP_VERIFY` in sequence. + +* [`OP_CHECKMULTISIG`][op_checkmultisig]{:#term-op-checkmultisig}{:.term} consumes the value (n) at the top of the stack, + consumes that many of the next stack levels (public keys), consumes + the value (m) now at the top of the stack, and consumes that many of + the next values (signatures) plus one extra value. Then it compares + each of public keys against each of the signatures looking for ECDSA + matches; if n of the public keys match signatures, it returns true. + Otherwise, it returns false. + + The "one extra value" it consumes is the result of an off-by-one + error in the Bitcoin Core implementation. This value is not used, so + scriptSigs prefix the signatures with a single OP_0 (0x00). + +* [`OP_RETURN`][op_return]{:#term-op-return}{:.term} terminates the script in failure. However, this will not + invalidate a null data transaction which contains no more than 40 + bytes following `OP_RETURN` no more than once per transaction. + +A complete list of OP codes can be found on the Bitcoin Wiki [Script +Page][wiki script], with an authoritative list in the `opcodetype` enum +of the Bitcoin Core [script header file][core script.h] + +Note: non-standard transactions can add non-data-pushing op codes to +their scriptSig, but scriptSig is run separately from the script (with a +shared stack), so scriptSig can't use arguments such as `OP_RETURN` to +prevent the script from working as expected. + +{% endautocrossref %} + +#### Address Conversion + +{% autocrossref %} + +The hashes used in P2PH and P2SH outputs are commonly encoded as Bitcoin +addresses. This is the procedure to encode those hashes and decode the +addresses. + +First, get your hash. For P2PH, you RIPEMD-160(SHA256()) hash a ECDSA +public key derived from your 256-bit ECDSA private key (random data). +For P2SH, you RIPEMD-160(SHA256()) hash a redeemScript serialized in the +format used in raw transactions (described in a [following +sub-section][raw transaction format]). Taking the resulting hash: + +1. Add an address version byte in front of the hash. The version +bytes commonly used by Bitcoin are: + + * 0x00 for P2PH addresses on the main Bitcoin network (mainnet) + + * 0x6f for P2PH addresses on the Bitcoin testing network (testnet) + + * 0x05 for P2SH addresses on mainnet + + * 0xc4 for P2SH addresses on testnet + +2. Create a copy of the version and hash; then hash that twice with SHA256: `SHA256(SHA256(version . hash))` + +3. Extract the four most significant bytes from the double-hashed copy. + These are used as a checksum to ensure the base hash gets transmitted + correctly. + +4. Append the checksum to the version and hash, and encode it as a base58 + string: `BASE58(version . hash . checksum)` + +Bitcoin's base58 encoding, called [Base58Check][]{:#term-base58check}{:.term} may not match other implementations. Tier +Nolan provided the following example encoding algorithm to the Bitcoin +Wiki [Base58Check +encoding](https://en.bitcoin.it/wiki/Base58Check_encoding) page: + +{% endautocrossref %} + +{% highlight c %} +code_string = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" +x = convert_bytes_to_big_integer(hash_result) + +output_string = "" + +while(x > 0) + { + (x, remainder) = divide(x, 58) + output_string.append(code_string[remainder]) + } + +repeat(number_of_leading_zero_bytes_in_hash) + { + output_string.append(code_string[0]); + } + +output_string.reverse(); +{% endhighlight %} + +{% autocrossref %} + +Bitcoin's own code can be traced using the [base58 header +file][core base58.h]. + +To convert addresses back into hashes, reverse the base58 encoding, extract +the checksum, repeat the steps to create the checksum and compare it +against the extracted checksum, and then remove the version byte. + +{% endautocrossref %} + +#### Raw Transaction Format + +{% autocrossref %} + +Bitcoin transactions are broadcast between peers and stored in the +block chain in a serialized byte format, called [raw format][]{:#term-raw-format}{:.term}. Bitcoin Core +and many other tools print and accept raw transactions encoded as hex. + +A sample raw transaction is the first non-coinbase transaction, made in +[block 170][block170]. To get the transaction, use the `getrawtransaction` RPC with +that transaction's txid (provided below): + +{% endautocrossref %} + +~~~ +> getrawtransaction \ + f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16 + +0100000001c997a5e56e104102fa209c6a852dd90660a20b2d9c352423e\ +dce25857fcd3704000000004847304402204e45e16932b8af514961a1d3\ +a1a25fdf3f4f7732e9d624c6c61548ab5fb8cd410220181522ec8eca07d\ +e4860a4acdd12909d831cc56cbbac4622082221a8768d1d0901ffffffff\ +0200ca9a3b00000000434104ae1a62fe09c5f51b13905f07f06b99a2f71\ +59b2225f374cd378d71302fa28414e7aab37397f554a7df5f142c21c1b7\ +303b8a0626f1baded5c72a704f7e6cd84cac00286bee000000004341041\ +1db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a690\ +9a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f\ +656b412a3ac00000000 +~~~ + +A byte-by-byte analysis by Amir Taaki (Genjix) of this transaction is +provided below. (Originally from the Bitcoin Wiki +[OP_CHECKSIG page](https://en.bitcoin.it/wiki/OP_CHECKSIG); Genjix's +text has been updated to use the terms used in this document.) + +~~~ +01 00 00 00 version number +01 number of inputs (var_uint) + +input 0: +c9 97 a5 e5 6e 10 41 02 previous tx hash (txid) +fa 20 9c 6a 85 2d d9 06 +60 a2 0b 2d 9c 35 24 23 +ed ce 25 85 7f cd 37 04 +00 00 00 00 previous output index + +48 size of script (var_uint) +47 push 71 bytes to stack +30 44 02 20 4e 45 e1 69 +32 b8 af 51 49 61 a1 d3 +a1 a2 5f df 3f 4f 77 32 +e9 d6 24 c6 c6 15 48 ab +5f b8 cd 41 02 20 18 15 +22 ec 8e ca 07 de 48 60 +a4 ac dd 12 90 9d 83 1c +c5 6c bb ac 46 22 08 22 +21 a8 76 8d 1d 09 01 +ff ff ff ff sequence number + +02 number of outputs (var_uint) + +output 0: +00 ca 9a 3b 00 00 00 00 amount = 10.00000000 BTC +43 size of script (var_uint) +script for output 0: +41 push 65 bytes to stack +04 ae 1a 62 fe 09 c5 f5 +1b 13 90 5f 07 f0 6b 99 +a2 f7 15 9b 22 25 f3 74 +cd 37 8d 71 30 2f a2 84 +14 e7 aa b3 73 97 f5 54 +a7 df 5f 14 2c 21 c1 b7 +30 3b 8a 06 26 f1 ba de +d5 c7 2a 70 4f 7e 6c d8 +4c +ac OP_CHECKSIG + +output 1: +00 28 6b ee 00 00 00 00 amount = 40.00000000 BTC +43 size of script (var_uint) +script for output 1: +41 push 65 bytes to stack +04 11 db 93 e1 dc db 8a +01 6b 49 84 0f 8c 53 bc +1e b6 8a 38 2e 97 b1 48 +2e ca d7 b1 48 a6 90 9a +5c b2 e0 ea dd fb 84 cc +f9 74 44 64 f8 2e 16 0b +fa 9b 8b 64 f9 d4 c0 3f +99 9b 86 43 f6 56 b4 12 +a3 +ac OP_CHECKSIG + +00 00 00 00 locktime +~~~ + diff --git a/_includes/references.md b/_includes/references.md new file mode 100644 index 00000000..ee9a7bd5 --- /dev/null +++ b/_includes/references.md @@ -0,0 +1,283 @@ +[51 percent attack]: /en/developer-guide#term-51-attack "The ability of someone controlling a majority of hashing power to revise transactions history and prevent new transactions from confirming" +[accidental fork]: /en/developer-guide#term-accidental-fork "When two or more blocks have the same block height, forking the block chain. Happens occasionally by accident" +[addresses]: /en/developer-guide#term-address "A 20-byte hash formatted as a P2PH or P2SH Bitcoin Address" +[address]: /en/developer-guide#term-address "A 20-byte hash formatted as a P2PH or P2SH Bitcoin Address" +[base58Check]: /en/developer-reference#term-base58check "The method used in Bitcoin for converting 160-bit hashes into Bitcoin addresses" +[bitcoin URI]: /en/developer-guide#term-bitcoin-uri "A URI which allows receivers to encode payment details so spenders don't have to manually enter addresses and other details" +[bitcoins]: /en/developer-guide#term-bitcoins "A primary accounting unit used in Bitcoin; 100 million satoshis" +[block]: /en/developer-guide#term-block "A block of transactions protected by proof of work" +[blocks]: /en/developer-guide#term-block "Blocks of transactions protected by proof of work" +[block chain]: /en/developer-guide#block-chain "A chain of blocks with each block linking to the block that preceded; the most-difficult-to-recreate chain is The Block Chain" +[block header]: /en/developer-reference#block-header "An 80-byte header belonging to a single block which is hashed repeatedly to create proof of work" +[block header magic]: /en/developer-reference#term-block-header-magic "A magic number used to separate block data from transaction data on the P2P network" +[block height]: /en/developer-guide#term-block-height "The number of chained blocks preceding this block" +[block reward]: /en/developer-reference#term-block-reward "New satoshis given to a miner for creating one of the first 6,929,999 blocks" +[block time]: /en/developer-reference#term-block-time "The time field in the block header" +[block version]: /en/developer-reference#term-block-version "The version field in the block header" +[broadcast]: /en/developer-guide#transaction-broadcasting "Sending transactions or blocks to all other peers on the Bitcoin network (compare to privately transmitting to a single peer or partner" +[broadcasts]: /en/developer-guide#transaction-broadcasting "Sending transactions or blocks to all other peers on the Bitcoin network (compare to privately transmitting to a single peer or partner" +[broadcasting]: /en/developer-guide#transaction-broadcasting "Sending transactions or blocks to all other peers on the Bitcoin network (compare to privately transmitting to a single peer or partner)" +[certificate chain]: /en/developer-guide#term-certificate-chain "A chain of certificates connecting a individual's leaf certificate to the certificate authority's root certificate" +[chain code]: /en/developer-guide#term-chain-code "In HD wallets, 256 bits of entropy added to the master public and private keys to help them generate secure child keys; the chain code is usually derived from a seed along with the master private key" +[change address]: /en/developer-guide#term-change-output "An output used by a spender to send back to himself some of the satoshis from the inputs" +[change output]: /en/developer-guide#term-change-output "An output used by a spender to send back to himself some of the satoshis from the inputs" +[child extended key]: /en/developer-guide#term-child-extended-key "A child key extended with a chain code so that it can become a parent key and derive its own child keys" +[child key]: /en/developer-guide#term-child-key "In HD wallets, a key derived from a parent key" +[child public key]: /en/developer-guide#term-child-public-key "In HD wallets, a public key derived from a parent public key or a corresponding child private key" +[coinbase field]: /en/developer-reference#term-coinbase-field "A special input-like field for coinbase transactions" +[coinbase transaction]: /en/developer-reference#term-coinbase-tx "A special transaction which miners must create when they generate a block" +[confirm]: /en/developer-guide#term-confirmation "A transaction included in a block currently on the block chain" +[confirmed]: /en/developer-guide#term-confirmation "A transaction included in a block currently on the block chain" +[confirmed transactions]: /en/developer-guide#term-confirmation "Transactions included in a block currently on the block chain" +[confirmation]: /en/developer-guide#term-confirmation "The number of blocks which would need to be modified to remove or modify a transaction" +[confirmations]: /en/developer-guide#term-confirmation "The number of blocks which would need to be modified to remove or modify a transaction" +[denomination]: /en/developer-guide#term-denomination "bitcoins (BTC), bitcents (cBTC), millibits (mBTC), microbits (uBTC), or satoshis" +[difficulty]: /en/developer-guide#term-difficulty "A number corresponding to the target threshold which indicates how difficult it will be to find the next block" +[double spend]: /en/developer-guide#term-double-spend "Attempting to spend the same satoshis which were spent in a previous transaction" +[extended key]: /en/developer-guide#term-extended-key "A public or private key extended with the chain code to allow them to derive child keys" +[extended private key]: /en/developer-guide#term-extended-private-key "A private key extended with the chain code so that it can derive child private keys" +[extended public key]: /en/developer-guide#term-extended-public-key "A public key extended with the chain code so that it can derive child public keys" +[escrow contract]: /en/developer-guide#term-escrow-contract "A contract in which the spender and receiver store satoshis in a multisig output until both parties agree to release the satoshis" +[fiat]: /en/developer-guide#term-fiat "National currencies such as the dollar or euro" +[genesis block]: /en/developer-guide#term-genesis-block "The first block created; also called block 0" +[hardened extended private key]: /en/developer-guide#term-hardened-extended-private-key "A private key whose corresponding public key cannot derive child keys" +[HD protocol]: /en/developer-guide#term-hd-protocol "The Hierarchical Deterministic (HD) key creation and transfer protocol" +[header nonce]: /en/developer-reference#term-header-nonce "Four bytes of arbitrary data in a block header used to let miners create headers with different hashes for proof of work" +[high-priority transactions]: /en/developer-guide#term-high-priority-transactions "Transactions which don't pay a transaction fee; only transactions spending long-idle outputs are eligible" +[input]: /en/developer-guide#term-input "The input to a transaction linking to the output of a previous transaction which permits spending of satoshis" +[inputs]: /en/developer-guide#term-input "The input to a transaction linking to the output of a previous transaction which permits spending of satoshis" +[intermediate certificate]: /en/developer-guide#term-intermediate-certificate "A intermediate certificate authority certificate which helps connect a leaf (receiver) certificate to a root certificate authority" +[key index]: /en/developer-guide#term-key-index "An index number used in the HD wallet formula to generate child keys from a parent key" +[key pair]: /en/developer-guide#term-key-pair "A private key and its derived public key" +[label]: /en/developer-guide#term-label "The label parameter of a bitcoin: URI which provides the spender with the receiver's name (unauthenticated)" +[leaf certificate]: /en/developer-guide#term-leaf-certificate "The end-node in a certificate chain; in the payment protocol, it is the certificate belonging to the receiver of satoshis" +[locktime]: /en/developer-guide#term-locktime "Part of a transaction which indicates the earliest time or earliest block when that transaction can be added to the block chain" +[long-term fork]: /en/developer-guide#term-long-term-fork "When a series of blocks have corresponding block heights, indicating a possibly serious problem" +[mainnet]: /en/developer-guide#term-mainnet "The Bitcoin main network used to transfer satoshis (compare to testnet, the test network)" +[master chain code]: /en/developer-guide#term-master-chain-code "The chain code derived from the root seed" +[master private key]: /en/developer-guide#term-master-private-key "A private key derived from the root seed" +[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" +[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" +[miner]: /en/developer-guide#term-miner "Creators of Bitcoin blocks who solve proof-of-work puzzles in exchange for block rewards and transaction fees" +[miners]: /en/developer-guide#term-miner "Creators of Bitcoin blocks who solve proof-of-work puzzles in exchange for block rewards and transaction fees" +[minimum fee]: /en/developer-guide#term-minimum-fee "The minimum fee a transaction must pay in must circumstances to be mined or broadcast by peers across the network" +[multisig]: /en/developer-guide#term-multisig "An output script using OP_CHECKMULTISIG to check for multiple signatures" +[network]: /en/developer-guide#term-network "The Bitcoin P2P network which broadcasts transactions and blocks" +[Null data]: /en/developer-guide#term-null-data "A standard transaction type which allows adding 40 bytes of arbitrary data to the block chain up to once per transaction" +[op_checkmultisig]: /en/developer-reference#term-op-checkmultisig "Op code which returns true if one or more provided signatures (m) sign the correct parts of a transaction and match one or more provided public keys (n)" +[op_checksig]: /en/developer-reference#term-op-checksig "Op code which returns true if a signature signs the correct parts of a transaction and matches a provided public key" +[op code]: /en/developer-reference#op-codes "Operation codes which run functions within a script" +[op_dup]: /en/developer-reference#term-op-dup "Operation which duplicates the entry below it on the stack" +[op_equal]: /en/developer-reference#term-op-equal "Operation which returns true if the two entries below it on the stack are equivalent" +[op_equalverify]: /en/developer-reference#term-op-equalverify "Operation which terminates the script in failure unless the two entries below it on the stack are equivalent" +[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 script" +[output index]: /en/developer-guide#term-output-index "The sequentially-numbered index of outputs in a single transaction starting from 0" +[outputs]: /en/developer-guide#term-output "The outputs of a transaction which transfer value to scripts" +[P2PH]: /en/developer-guide#term-p2ph "A script which Pays To Pubkey Hashes (P2PH), allowing spending of satoshis to anyone with a Bitcoin address" +[P2SH]: /en/developer-guide#term-p2sh "A script which Pays To Script Hashes (P2SH), allowing convenient spending of satoshis to an address referencing a script" +[P2SH multisig]: /en/developer-guide#term-p2sh-multisig "A multisig script embedded in the redeemScript of a pay-to-script-hash (P2SH) transaction" +[parent chain code]: /en/developer-guide#term-parent-chain-code "A chain code which has helped create child public or private keys" +[parent private key]: /en/developer-guide#term-parent-private-key "A private key which has created child private keys" +[parent public key]: /en/developer-guide#term-parent-public-key "A public key corresponding to a parent private key which has child private keys" +[payment protocol]: /en/developer-guide#term-payment-protocol "The protocol defined in BIP70 which lets spenders get signed payment details from receivers" +[PaymentACK]: /en/developer-guide#term-paymentack "The PaymentACK of the payment protocol which allows the receiver to indicate to the spender that the payment is being processed" +[PaymentDetails]: /en/developer-guide#term-paymentdetails "The PaymentDetails of the payment protocol which allows the receiver to specify the payment details to the spender" +[PaymentRequest]: /en/developer-guide#term-paymentrequest "The PaymentRequest of the payment protocol which contains and allows signing of the PaymentDetails" +[PaymentRequests]: /en/developer-guide#term-paymentrequest "The PaymentRequest of the payment protocol which contains and allows signing of the PaymentDetails" +[peer]: /en/developer-guide#term-peer "Peer on the P2P network who receives and broadcasts transactions and blocks" +[peers]: /en/developer-guide#term-peer "Peers on the P2P network who receive and broadcast transactions and blocks" +[PKI]: /en/developer-guide#term-pki "Public Key Infrastructure; usually meant to indicate the X.509 certificate system used for HTTP Secure (https)." +[point function]: /en/developer-guide#term-point-function "The ECDSA function used to create a public key from a private key" +[private key]: /en/developer-guide#term-private-key "The private portion of a keypair which can create signatures which other people can verify using the public key" +[private keys]: /en/developer-guide#term-private-key "The private portion of a keypair which can create signatures which other people can verify using the public key" +[pubkey hash]: /en/developer-guide#term-pubkey-hash "The hash of a public key which can be included in a P2PH output" +[public key]: /en/developer-guide#term-public-key "The public portion of a keypair which can be safely distributed to other people so they can verify a signature created with the corresponding private key" +[public keys]: /en/developer-guide#term-public-key "The public portion of a keypair which can be safely distributed to other people so they can verify a signature created with the corresponding private key" +[pp amount]: /en/developer-guide#term-pp-amount "Part of the Output part of the PaymentDetails part of a payment protocol where receivers can specify the amount of satoshis they want paid to a particular output script" +[pp expires]: /en/developer-guide#term-pp-expires "The expires field of a PaymentDetails where the receiver tells the spender when the PaymentDetails expires" +[pp memo]: /en/developer-guide#term-pp-memo "The memo fields of PaymentDetails, Payment, and PaymentACK which allow spenders and receivers to send each other memos" +[pp merchant data]: /en/developer-guide#term-pp-merchant-data "The merchant_data part of PaymentDetails and Payment which allows the receiver to send arbitrary data to the spender in PaymentDetails and receive it back in Payments" +[pp Payment]: /en/developer-guide#term-pp-payment "The Payment message of the PaymentProtocol which allows the spender to send payment details to the receiver" +[pp PKI data]: /en/developer-guide#term-pp-pki-data "The pki_data field of a PaymentRequest which provides details such as certificates necessary to validate the request" +[pp pki type]: /en/developer-guide#term-pp-pki-type "The PKI field of a PaymentRequest which tells spenders how to validate this request as being from a specific recipient" +[pp refund to]: /en/developer-guide#term-pp-refund-to "The refund_to field of a Payment where the spender tells the receiver what outputs to send refunds to" +[pp script]: /en/developer-guide#term-pp-script "The script field of a PaymentDetails where the receiver tells the spender what output scripts to pay" +[pp transactions]: /en/developer-guide#term-pp-transactions "The transactions field of a Payment where the spender provides copies of signed transactions to the receiver" +[pp payment url]: /en/developer-guide#term-pp-payment-url "The payment_url of the PaymentDetails which allows the receiver to specify where the sender should post payment" +[proof of work]: /en/developer-guide#term-proof-of-work "Proof that computationally-difficult work was performed which helps secure blocks against modification, protecting transaction history" +[Pubkey]: /en/developer-guide#term-pubkey "A standard output script which specifies the full public key to match a signature; used in coinbase transactions" +[r]: /en/developer-guide#term-r-parameter "The payment request parameter in a bitcoin: URI" +[raw format]: /en/developer-reference#term-raw-format "Complete transactions in their binary format; often represented using hexidecimal" +[receipt]: /en/developer-guide#term-receipt "A cryptographically-verifiable receipt created using parts of a payment request and a confirmed transaction" +[recurrent rebilling]: /en/developer-guide#rebilling-recurring-payments "Billing a spender on a regular schedule" +[redeemScript]: /en/developer-guide#term-redeemscript "A script created by the recipient, hashed, and given to the spender for use in a P2SH output" +[refund]: /en/developer-guide#issuing-refunds "A transaction which refunds some or all satoshis received in a previous transaction" +[root certificate]: /en/developer-guide#term-root-certificate "A certificate belonging to a certificate authority (CA)" +[root seed]: /en/developer-guide#term-root-seed "A potentially-short value used as a seed to generate a master private key and master chain code for an HD wallet" +[satoshi]: /en/developer-guide#term-satoshi "The smallest unit of Bitcoin value; 0.00000001 bitcoins. Also used generically for any value of bitcoins" +[satoshis]: /en/developer-guide#term-satoshi "The smallest unit of Bitcoin value; 0.00000001 bitcoins. Also used generically for any value of bitcoins" +[sequence number]: /en/developer-guide#term-sequence-number "A number intended to allow time locked transactions to be updated before being finalized; not currently used except to disable locktime in a transaction" +[script]: /en/developer-guide#term-script "The part of an output which sets the conditions for spending of the satoshis in that output" +[scripts]: /en/developer-guide#term-script "The part of an output which sets the conditions for spending of the satoshis in that output" +[scriptSig]: /en/developer-guide#term-scriptsig "Data generated by a spender which is almost always used as variables to satisfy an output script" +[script hash]: /en/developer-guide#term-script-hash "The hash of a redeemScript used to create a P2SH output" +[sha_shacp]: /en/developer-guide#term-sighash-all-sighash-anyonecanpay "Signature hash type which allows other people to contribute satoshis without changing the number of satoshis sent nor where they go" +[shacp]: /en/developer-guide#term-sighash-anyonecanpay "A signature hash type which modifies the behavior of other signature hash types" +[shn_shacp]: /en/developer-guide#term-sighash-none-sighash-anyonecanpay "Signature hash type which allows unfettered modification of a transaction" +[shs_shacp]: /en/developer-guide#term-sighash-single-sighash-anyonecanpay "Signature hash type which allows modification of the entire transaction except the signed input and the output with the same index number" +[sighash_all]: /en/developer-guide#term-sighash-all "Default signature hash type which signs the entire transaction except any scriptSigs, preventing modification of the signed parts" +[sighash_none]: /en/developer-guide#term-sighash-none "Signature hash type which only signs the inputs, allowing anyone to change the outputs however they'd like" +[sighash_single]: /en/developer-guide#term-sighash-single "Signature hash type which only signs its input and the output with the same index value, allowing modification of other inputs and outputs" +[signature]: /en/developer-guide#term-signature "The result of combining a private key and some data in an ECDSA signature operation which allows anyone with the corresponding public key to verify the signature" +[signature hash]: /en/developer-guide#term-signature-hash "A byte appended onto signatures generated in Bitcoin which allows the signer to specify what data was signed, allowing modification of the unsigned data" +[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-guide#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" +[standard script]: /en/developer-guide#standard-transactions "An output 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-guide#term-testnet "A Bitcoin-like network where the satoshis have no real-world value to allow risk-free testing" +[transaction fee]: /en/developer-guide#term-transaction-fee "The amount remaining when all outputs are subtracted from all inputs in a transaction; the fee is paid to the miner who includes that transaction in a block" +[transaction fees]: /en/developer-guide#term-transaction-fee "The amount remaining when all outputs are subtracted from all inputs in a transaction; the fee is paid to the miner who includes that transaction in a block" +[transaction malleability]: /en/developer-guide#transaction-malleability "The ability of an attacker to change the transaction identifier (txid) of unconfirmed transactions, making dependent transactions invalid" +[txid]: /en/developer-guide#term-txid "A hash of a completed transaction which allows other transactions to spend its outputs" +[transaction]: /en/developer-guide#transactions "A transaction spending satoshis" +[transaction object format]: /en/developer-reference#term-transaction-object-format +[transaction version number]: /en/developer-guide#term-transaction-version-number "A version number prefixed to transactions to allow upgrading"" +[transactions]: /en/developer-guide#transactions "A transaction spending satoshis" +[unconfirmed]: /en/developer-guide#term-unconfirmed-transactions "A transaction which has not yet been added to the block chain" +[unconfirmed transactions]: /en/developer-guide#term-unconfirmed-transactions "A transaction which has not yet been added to the block chain" +[unique addresses]: /en/developer-guide#term-unique-address "Address which are only used once to protect privacy and increase security" +[URI QR Code]: /en/developer-guide#term-uri-qr-code "A QR code containing a bitcoin: URI" +[utxo]: /en/developer-guide#term-utxo "Unspent Transaction Output (UTXO) holding satoshis which have not yet been spent" +[verified payments]: /en/developer-guide#verifying-payment "Payments which the receiver believes won't be double spent" +[v2 block]: /en/developer-reference#term-v2-block "The current version of Bitcoin blocks" +[wallet]: /en/developer-guide#wallets "Software which stores private keys to allow users to spend and receive satoshis" +[Wallet Import Format]: /en/developer-guide#term-wallet-import-format "A private key specially formatted to allow easy import into a wallet" +[wallets]: /en/developer-guide#wallets "Software which stores private keys to allow users to spend and receive satoshis" +[X509Certificates]: /en/developer-guide#term-x509certificates + +[BFGMiner]: https://github.com/luke-jr/bfgminer +[BIP21]: https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki +[BIP32]: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki +[BIP39]: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki +[BIP70]: https://github.com/bitcoin/bips/blob/master/bip-0070.mediawiki +[bitcoin-documentation mailing list]: https://groups.google.com/forum/#!forum/bitcoin-documentation +[bitcoinpdf]: https://bitcoin.org/bitcoin.pdf +[block170]: http://blockexplorer.com/block/00000000d1145790a8694403d4063f323d499e655c83426834d4ce2f8dd4a2ee +[casascius address utility]: https://github.com/casascius/Bitcoin-Address-Utility +[core base58.h]: https://github.com/bitcoin/bitcoin/blob/master/src/base58.h +[core executable]: /en/download +[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 +[DER]: https://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One +[devguide wallets]: /en/developer-guide#wallets +[devref wallets]: /en/developer-reference#wallets +[docs issue]: https://github.com/bitcoin/bitcoin.org/issues +[ECDSA]: https://en.wikipedia.org/wiki/Elliptic_Curve_DSA +[Eloipool]: https://gitorious.org/bitcoin/eloipool +[forum tech support]: https://bitcointalk.org/index.php?board=4.0 +[HMAC-SHA512]: https://en.wikipedia.org/wiki/HMAC +[HTTP longpoll]: https://en.wikipedia.org/wiki/Push_technology#Long_polling +[irc channels]: https://en.bitcoin.it/wiki/IRC_channels +[MIME]: https://en.wikipedia.org/wiki/Internet_media_type +[Merge Avoidance subsection]: /en/developer-guide#merge-avoidance +[mozrootstore]: https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/ +[Piotr Piasecki's testnet faucet]: https://tpfaucet.appspot.com/ +[prime symbol]: https://en.wikipedia.org/wiki/Prime_%28symbol%29 +[protobuf]: https://developers.google.com/protocol-buffers/ +[raw transaction format]: /en/developer-reference#raw-transaction-format +[regression test mode]: https://bitcoinj.github.io/testing +[rpc addmultisigaddress]: /en/developer-reference#addmultisigaddress +[rpc addnode]: /en/developer-reference#addnode +[rpc backupwallet]: /en/developer-reference#backupwallet +[rpc createmultisig]: /en/developer-reference#createmultisig +[rpc createrawtransaction]: /en/developer-reference#createrawtransaction +[rpc decoderawtransaction]: /en/developer-reference#decoderawtransaction +[rpc decodescript]: /en/developer-reference#decodescript +[rpc dumpprivkey]: /en/developer-reference#dumpprivkey +[rpc dumpwallet]: /en/developer-reference#dumpwallet +[rpc getaccount]: /en/developer-reference#getaccount +[rpc getaccountaddress]: /en/developer-reference#getaccountaddress +[rpc getaddednodeinfo]: /en/developer-reference#getaddednodeinfo +[rpc getaddressesbyaccount]: /en/developer-reference#getaddressesbyaccount +[rpc getbalance]: /en/developer-reference#getbalance +[rpc getbestblockhash]: /en/developer-reference#getbestblockhash +[rpc getblock]: /en/developer-reference#getblock +[rpc getblockcount]: /en/developer-reference#getblockcount +[rpc getblockhash]: /en/developer-reference#getblockhash +[rpc getblocktemplate]: /en/developer-reference#getblocktemplate +[rpc getconnectioncount]: /en/developer-reference#getconnectioncount +[rpc getdifficulty]: /en/developer-reference#getdifficulty +[rpc getgenerate]: /en/developer-reference#getgenerate +[rpc gethashespersec]: /en/developer-reference#gethashespersec +[rpc getinfo]: /en/developer-reference#getinfo +[rpc getmininginfo]: /en/developer-reference#getmininginfo +[rpc getnettotals]: /en/developer-reference#getnettotals +[rpc getnetworkhashps]: /en/developer-reference#getnetworkhashps +[rpc getnewaddress]: /en/developer-reference#getnewaddress +[rpc getpeerinfo]: /en/developer-reference#getpeerinfo +[rpc getrawchangeaddress]: /en/developer-reference#getrawchangeaddress +[rpc getrawmempool]: /en/developer-reference#getrawmempool +[rpc getrawtransaction]: /en/developer-reference#getrawtransaction +[rpc getreceivedbyaccount]: /en/developer-reference#getreceivedbyaccount +[rpc getreceivedbyaddress]: /en/developer-reference#getreceivedbyaddress +[rpc gettransaction]: /en/developer-reference#gettransaction +[rpc gettxout]: /en/developer-reference#gettxout +[rpc gettxoutsetinfo]: /en/developer-reference#gettxoutsetinfo +[rpc getunconfirmedbalance]: /en/developer-reference#getunconfirmedbalance +[rpc getwork]: /en/developer-reference#getwork +[rpc help]: /en/developer-reference#help +[rpc importprivkey]: /en/developer-reference#importprivkey +[rpc importwallet]: /en/developer-reference#importwallet +[rpc keypoolrefill]: /en/developer-reference#keypoolrefill +[rpc listaccounts]: /en/developer-reference#listaccounts +[rpc listaddressgroupings]: /en/developer-reference#listaddressgroupings +[rpc listlockunspent]: /en/developer-reference#listlockunspent +[rpc listreceivedbyaccount]: /en/developer-reference#listreceivedbyaccount +[rpc listreceivedbyaddress]: /en/developer-reference#listreceivedbyaddress +[rpc listsinceblock]: /en/developer-reference#listsinceblock +[rpc listtransactions]: /en/developer-reference#listtransactions +[rpc listunspent]: /en/developer-reference#listunspent +[rpc lockunspent]: /en/developer-reference#lockunspent +[rpc move]: /en/developer-reference#move +[rpc ping]: /en/developer-reference#ping +[rpc sendfrom]: /en/developer-reference#sendfrom +[rpc sendmany]: /en/developer-reference#sendmany +[rpc sendrawtransaction]: /en/developer-reference#sendrawtransaction +[rpc sendtoaddress]: /en/developer-reference#sendtoaddress +[rpc setaccount]: /en/developer-reference#setaccount +[rpc setgenerate]: /en/developer-reference#setgenerate +[rpc settxfee]: /en/developer-reference#settxfee +[rpc signmessage]: /en/developer-reference#signmessage +[rpc signrawtransaction]: /en/developer-reference#signrawtransaction +[rpc stop]: /en/developer-reference#stop +[rpc submitblock]: /en/developer-reference#submitblock +[rpc validateaddress]: /en/developer-reference#validateaddress +[rpc verifychain]: /en/developer-reference#verifychain +[rpc verifymessage]: /en/developer-reference#verifymessage +[rpc walletlock]: /en/developer-reference#walletlock +[rpc walletpassphrase]: /en/developer-reference#walletpassphrase +[rpc walletpassphrasechange]: /en/developer-reference#walletpassphrasechange +[RPC]: /en/developer-reference#remote-procedure-calls-rpcs +[RPCs]: /en/developer-reference#remote-procedure-calls-rpcs +[secp256k1]: http://www.secg.org/index.php?action=secg,docs_secg +[section verifying payment]: /en/developer-guide#verifying-payment +[bitcoin URI subsection]: /en/developer-guide#bitcoin-uri +[SHA256]: https://en.wikipedia.org/wiki/SHA-2 +[Stratum mining protocol]: http://mining.bitcoin.cz/stratum-mining +[URI encoded]: https://tools.ietf.org/html/rfc3986 +[Verification subsection]: /en/developer-guide#verifying-payment +[wiki script]: https://en.bitcoin.it/wiki/Script +[x509]: https://en.wikipedia.org/wiki/X.509 + diff --git a/_less/ie.css b/_less/ie.css index 0314dcf1..fb836804 100644 --- a/_less/ie.css +++ b/_less/ie.css @@ -149,18 +149,18 @@ body{ } .resources div{ - border-top:expression((this.parentNode!=this.parentNode.parentNode.getElementsByTagName('DIV')[0])?'1px solid #e0e0e0':'0'); + border-top:expression(this.parentNode.className=='resources'&&this!=this.parentNode.getElementsByTagName('DIV')[0]?'1px solid #e0e0e0':'0'); } .resources div div{ zoom:1; display:inline; padding-top:25px; position:relative; - padding-right:expression(this.parentNode.getElementsByTagName('DIV')[0]==this?'40px':''); - border-right:expression(this.parentNode.getElementsByTagName('DIV')[0]==this?'1px solid #e0e0e0':''); - padding-left:expression(this.parentNode.getElementsByTagName('DIV')[1]==this?'40px':''); - border-left:expression(this.parentNode.getElementsByTagName('DIV')[1]==this?'1px solid #e0e0e0':''); - margin-left:expression(this.parentNode.getElementsByTagName('DIV')[1]==this?'-1px':''); + padding-right:expression(this.parentNode.parentNode.className=='resources'&&this.parentNode.getElementsByTagName('DIV')[0]==this?'40px':''); + border-right:expression(this.parentNode.parentNode.className=='resources'&&this.parentNode.getElementsByTagName('DIV')[0]==this?'1px solid #e0e0e0':''); + padding-left:expression(this.parentNode.parentNode.className=='resources'&&this!=this.parentNode.getElementsByTagName('DIV')[0]?'40px':''); + border-left:expression(this.parentNode.parentNode.className=='resources'&&this!=this.parentNode.getElementsByTagName('DIV')[0]?'1px solid #e0e0e0':''); + margin-left:expression(this.parentNode.parentNode.className=='resources'&&this!=this.parentNode.getElementsByTagName('DIV')[0]?'-1px':''); } .resources>div>div:first-child+div{ /*This one is for IE7 only*/ @@ -176,6 +176,12 @@ body{ border-top:expression(this.parentNode.className=='resourcesorg'&&this.parentNode.getElementsByTagName('DIV')[0]!=this?'1px solid #e0e0e0':'0'); } +.docreference a{ + zoom:1; + display:inline; + width:200px; +} + .downloadbox{ zoom:1; display:inline; diff --git a/_less/screen.less b/_less/screen.less index 2190e39d..fd348e8b 100644 --- a/_less/screen.less +++ b/_less/screen.less @@ -626,6 +626,210 @@ table td,table th{ line-height:1.5em; } +.docreference{ + text-align:center; +} +.docreference a{ + display:inline-block; + margin:0 15px 40px 15px; + font-size:125%; +} +.docreference img{ + display:block; + height:48px; + width:48px; + margin:0 auto 10px auto; +} +.docreference span{ + display:block; + line-height:1.5em; +} +.docreference span+span{ + font-size:80%; +} +.toc{ + position:absolute; + left:20px; + text-align:left; + padding-top:40px; + margin-top:-40px; +} +.toc div{ + overflow-y:auto; + overflow-x:hidden; + width:240px; +} +.toc div.scroll{ + position:fixed; +} +.toc ul, +.toc li{ + list-style:none; + padding:0; + margin:0; +} +.toc ul{ + width:220px; + border-right:1px solid #e0e0e0; + padding:0 19px 0 0; +} +.toc ul li{ + padding:0 0 10px 0; +} +.toc ul li ul{ + position:relative; + top:0; + padding:10px 0 0 0; + border:0; + display:none; +} +.toc ul li.active ul{ + display:block; +} +.toc ul li ul li{ + padding:0 0 4px 0; +} +.toc ul li ul li ul li{ + padding-left:10px; +} +.toc ul li a{ + padding-left:20px; + font-weight:bold; +} +.toc ul li ul li a{ + font-weight:normal; +} +.toc ul li ul li a:hover:before, +.toc ul li ul li a.active:before{ + content:">"; + position:absolute; + font-weight:bold; + left:0px; +} +.toc ul+ul{ + padding-top:8px; +} +.toc ul+ul li{ + background:url(/img/mini_ico_back.svg) no-repeat 0 3px; +} +.toc a, +.toc a:link, +.toc a:active, +.toc a:visited{ + display:block; + text-decoration:none; + line-height:1.5em; +} +.toccontent{ + width:600px; + margin:auto 0 auto auto; + position:relative; +} +.toccontent h2{ + font-size:150%; + color:#383838; +} +.toccontent h3{ + font-size:130%; + color:#383838; +} +.toccontent h4{ + font-size:110%; + color:#383838; +} +.toccontent h5,.toccontent h6{ + font-size:100%; + color:#383838; +} +.toccontent img{ + max-width:100%; +} +.toccontent a.auto-link:link, +.toccontent a.auto-link:visited{ + color:#646464; +} +.toccontent p:hover a.auto-link:link, +.toccontent p:hover a.auto-link:visited{ + color:#2c6fad; +} +.toccontent p:hover a.auto-link:link:hover, +.toccontent p:hover a.auto-link:visited:hover{ + color:#63a4e1; +} +.toccontent a:link.term, +.toccontent a:visited.term, +.toccontent p:hover a.auto-link.term:link, +.toccontent p:hover a.auto-link.term:visited, +.toccontent p:hover a.auto-link.term:link:hover, +.toccontent p:hover a.auto-link.term:visited:hover{ + color:#000; +} +.toccontent a.term:link code, +.toccontent a.term:visited code{ + color:#646464; +} + +.highlight { background: #ffffff; } +.highlight .c { color: #999988; font-style: italic } /* Comment */ +.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.highlight .k { font-weight: bold } /* Keyword */ +.highlight .o { font-weight: bold } /* Operator */ +.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ +.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ +.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #aa0000 } /* Generic.Error */ +.highlight .gh { color: #999999 } /* Generic.Heading */ +.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ +.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #555555 } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #aaaaaa } /* Generic.Subheading */ +.highlight .gt { color: #aa0000 } /* Generic.Traceback */ +.highlight .kc { font-weight: bold } /* Keyword.Constant */ +.highlight .kd { font-weight: bold } /* Keyword.Declaration */ +.highlight .kp { font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #009999 } /* Literal.Number */ +.highlight .s { color: #d14 } /* Literal.String */ +.highlight .na { color: #008080 } /* Name.Attribute */ +.highlight .nb { color: #0086B3 } /* Name.Builtin */ +.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ +.highlight .no { color: #008080 } /* Name.Constant */ +.highlight .ni { color: #800080 } /* Name.Entity */ +.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ +.highlight .nn { color: #555555 } /* Name.Namespace */ +.highlight .nt { color: #000080 } /* Name.Tag */ +.highlight .nv { color: #008080 } /* Name.Variable */ +.highlight .ow { font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #009999 } /* Literal.Number.Float */ +.highlight .mh { color: #009999 } /* Literal.Number.Hex */ +.highlight .mi { color: #009999 } /* Literal.Number.Integer */ +.highlight .mo { color: #009999 } /* Literal.Number.Oct */ +.highlight .sb { color: #d14 } /* Literal.String.Backtick */ +.highlight .sc { color: #d14 } /* Literal.String.Char */ +.highlight .sd { color: #d14 } /* Literal.String.Doc */ +.highlight .s2 { color: #d14 } /* Literal.String.Double */ +.highlight .se { color: #d14 } /* Literal.String.Escape */ +.highlight .sh { color: #d14 } /* Literal.String.Heredoc */ +.highlight .si { color: #d14 } /* Literal.String.Interpol */ +.highlight .sx { color: #d14 } /* Literal.String.Other */ +.highlight .sr { color: #009926 } /* Literal.String.Regex */ +.highlight .s1 { color: #d14 } /* Literal.String.Single */ +.highlight .ss { color: #990073 } /* Literal.String.Symbol */ +.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #008080 } /* Name.Variable.Class */ +.highlight .vg { color: #008080 } /* Name.Variable.Global */ +.highlight .vi { color: #008080 } /* Name.Variable.Instance */ +.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ + .box{ border:2px dashed #4892b2; padding:0 20px 0 20px; @@ -724,6 +928,14 @@ table td,table th{ font-size:115%; margin:6px 0; } +.resources .resourcesext{ + margin-top:5px; + min-height:0; +} +.resources .resourcesext p{ + padding-left:24px; + background:url(/img/mini_ico_link.svg) no-repeat 0 4px; +} .resourcesorg{ margin-bottom:40px; @@ -1323,6 +1535,12 @@ h2 .rssicon{ padding:0; border:0; } + .toc{ + display:none; + } + .toccontent{ + width:auto; + } } /*Styles specific to mobiles*/ @@ -1422,6 +1640,52 @@ h2 .rssicon{ .index li{ padding:3px 0; } + .docreference{ + width:220px; + margin:0 0 40px 0; + } + .toc{ + position:static; + margin-top:0px; + padding:10px; + border:2px dashed #4892b2; + display:inline-block; + } + .toc div{ + width:auto; + } + .toc div.scroll{ + position:static; + } + .toc ul, + .toc.scroll ul{ + width:auto; + padding:0; + border:0; + } + .toc ul li ul{ + display:block; + } + .toc ul li ul li ul li{ + padding-left:0; + } + .toc ul li a{ + padding:0; + } + .toc ul li ul li a:hover:before, + .toc ul li ul li a.active:before{ + content:""; + } + .toc ul+ul li{ + background:none; + } + .toccontent{ + width:auto; + } + .toccontent a.auto-link:link, + .toccontent a.auto-link:visited{ + color:#2c6fad; + } .contributors{ width:auto; } diff --git a/_templates/bitcoin-for-developers.html b/_templates/bitcoin-for-developers.html index 33fd3f73..13a93f80 100755 --- a/_templates/bitcoin-for-developers.html +++ b/_templates/bitcoin-for-developers.html @@ -26,8 +26,6 @@ id: bitcoin-for-developers {% case page.lang %} {% when 'ar' or 'fa' or 'pl' or 'zh_TW' %} {% else %} - - -
icon{% translate getstarted layout %}
+
icon{% translate getstarted layout %}
{% endcase %} diff --git a/_templates/development.html b/_templates/development.html index a2b3f7c1..f670eb6d 100755 --- a/_templates/development.html +++ b/_templates/development.html @@ -12,6 +12,12 @@ id: development

{% translate spec %}

{% translate spectxt %}