mirror of
https://github.com/bitcoinbook/bitcoinbook
synced 2024-11-16 04:59:35 +00:00
removing more index tags
This commit is contained in:
parent
bc53bf0e08
commit
8de4c3fe1e
@ -357,7 +357,7 @@ working on BIPs that may be available after this book goes into print.
|
||||
[[state_channels]]
|
||||
=== Payment Channels and State Channels
|
||||
|
||||
_Payment channels_ ((("payment (state) channels","defined")))are a trustless mechanism for exchanging Bitcoin
|
||||
_Payment channels_ are a trustless mechanism for exchanging Bitcoin
|
||||
transactions between two parties, outside of the Bitcoin blockchain.
|
||||
These transactions, which would be valid if settled on the Bitcoin
|
||||
blockchain, are held offchain instead, waiting for
|
||||
@ -968,7 +968,7 @@ know the secret +R+.
|
||||
[[lightning_network]]
|
||||
=== Routed Payment Channels (Lightning Network)
|
||||
|
||||
((("routed paymentchannels", see="Lightning Network")))((("Lightning Network",
|
||||
((("Lightning Network",
|
||||
"defined")))The Lightning Network is a proposed routed network of
|
||||
bidirectional payment channels connected end-to-end. A network like this
|
||||
can allow any participant to route a payment from channel to channel
|
||||
|
@ -25,7 +25,7 @@ used.
|
||||
[role="pagebreak-before less_space_h1"]
|
||||
=== Transaction Scripts and Script Language
|
||||
|
||||
((("scripting", "transactions and",id="Stransact06")))The original version of Bitcoin introduced a new
|
||||
The original version of Bitcoin introduced a new
|
||||
programming language called _Script_, a Forth-like stack-based
|
||||
language. Both the script placed in an output and the legacy
|
||||
input script used in a spending transaction are written in this scripting
|
||||
@ -311,7 +311,7 @@ image::images/mbc2_0606.png["Tx_Script_P2PubKeyHash_2"]
|
||||
[[multisig]]
|
||||
=== Scripted multisignatures
|
||||
|
||||
((("scripting","multisignature scripts", id="Smulti07")))((("multisignature
|
||||
((("multisignature
|
||||
scripts")))Multisignature scripts set a condition where _k_ public keys
|
||||
are recorded in the script and at least _t_ of those must provide
|
||||
signatures to spend the funds, called t-of-k.
|
||||
@ -473,7 +473,7 @@ introduced in 2012 as a powerful new type of operation that greatly
|
||||
simplifies the use of complex scripts. To explain the need
|
||||
for P2SH, let's look at a practical example.
|
||||
|
||||
((("Pay-to-Script-Hash(P2SH)", "import/export example")))
|
||||
|
||||
Mohammed is an electronics importer based in Dubai. Mohammed's
|
||||
company uses Bitcoin's multisignature feature extensively for its
|
||||
corporate accounts. Multisignature scripts are one of the most common
|
||||
@ -606,7 +606,7 @@ If the redeem script hash matches, the redeem script is executed:
|
||||
|
||||
==== P2SH Addresses
|
||||
|
||||
((("bitcoinimprovement proposals", "Address Format for P2SH (BIP13)")))Another
|
||||
Another
|
||||
important part of the P2SH feature is the ability to encode a script
|
||||
hash as an address, as defined in BIP13. P2SH addresses are Base58Check
|
||||
encodings of the 20-byte hash of a script, just like Bitcoin addresses
|
||||
@ -676,7 +676,7 @@ spent.
|
||||
[[op_return]]
|
||||
=== Data Recording Output (OP_RETURN)
|
||||
|
||||
((("data recording(nonpayment data)")))((("blockchain (the)",
|
||||
((("blockchain (the)",
|
||||
"nonpayment data recording")))Bitcoin's
|
||||
distributed and timestamped blockchain has potential uses
|
||||
beyond payments. Many developers have tried to use the transaction
|
||||
@ -766,7 +766,7 @@ It is important to understand the limitations of transaction lock time. The only
|
||||
|
||||
==== Check Lock Time Verify (OP_CLTV)
|
||||
|
||||
((("scripting", "timelocks", "Check Lock TimeVerify (OP_CLTV)")))((("bitcoin improvement proposals",
|
||||
((("bitcoin improvement proposals",
|
||||
"OP_CHECKLOCKTIMEVERIFY (BIP65)")))In December 2015, a new form of
|
||||
timelock was introduced to Bitcoin as a soft fork upgrade. Based on a
|
||||
specification in BIP65, a new script operator called
|
||||
@ -881,7 +881,7 @@ https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki[BIP65
|
||||
[[op_csv]]
|
||||
==== Relative Timelocks
|
||||
|
||||
Lock time and +OP_CLTV+ are ((("scripting", "timelocks", "relativetimelocks")))both
|
||||
Lock time and +OP_CLTV+ are both
|
||||
_absolute timelocks_ in that they specify an absolute point in time. The
|
||||
next two timelock features we will examine are _relative timelocks_ in
|
||||
that they specify, as a condition of spending an output, an elapsed time
|
||||
@ -902,7 +902,7 @@ on the value of +sequence+, a transaction field that is set in every
|
||||
transaction input. Script-level relative timelocks are implemented with
|
||||
the +OP_CHECKSEQUENCEVERIFY+ (OP_CSV) opcode.
|
||||
|
||||
((("bitcoin improvementproposals", "CHECKSEQUENCEVERIFY (BIP112)")))Relative timelocks are
|
||||
Relative timelocks are
|
||||
implemented according to the specifications in
|
||||
https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki[BIP68,
|
||||
Relative lock-time using consensus-enforced sequence numbers] and
|
||||
@ -953,7 +953,7 @@ CHECKSEQUENCEVERIFY].
|
||||
|
||||
=== Scripts with Flow Control (Conditional Clauses)
|
||||
|
||||
((("conditional clauses",id="condition07")))One of the more
|
||||
One of the more
|
||||
powerful features of Bitcoin Script is flow control, also known as
|
||||
conditional clauses. You are probably familiar with flow control in
|
||||
various programming languages that use the construct +IF...THEN...ELSE+.
|
||||
|
@ -35,7 +35,7 @@ contributors with about a dozen developers working on the code almost
|
||||
full-time and several dozen more on a part-time basis. Anyone can
|
||||
contribute to the code—including you!
|
||||
|
||||
((("Bitcoin Core", "referenceimplementation")))When Bitcoin was created by Satoshi Nakamoto, the
|
||||
When Bitcoin was created by Satoshi Nakamoto, the
|
||||
software was mostly completed before publication of the whitepaper reproduced in
|
||||
<<satoshi_whitepaper>>. Satoshi wanted to make sure the
|
||||
implementation worked before publishing a paper about it. That first implementation, then simply
|
||||
@ -77,7 +77,7 @@ next chapter, which is less technical.
|
||||
[[compiling_core]]
|
||||
=== Compiling Bitcoin Core from the Source Code
|
||||
|
||||
((("Bitcoin Core", "compiling from source code","downloading")))Bitcoin Core's
|
||||
Bitcoin Core's
|
||||
source code can be downloaded as an archive or by cloning the
|
||||
source repository from GitHub. On the https://bitcoincore.org/bin/[Bitcoin Core download
|
||||
page], select the most recent version and download the compressed
|
||||
@ -183,7 +183,7 @@ nothing to commit, working tree clean
|
||||
|
||||
==== Configuring the Bitcoin Core Build
|
||||
|
||||
((("build documentation",seealso="Bitcoin Core")))The source code includes documentation, which
|
||||
The source code includes documentation, which
|
||||
can be found in a number of files. Review the main documentation located
|
||||
in _README.md_ in the _bitcoin_ directory.
|
||||
In this chapter, we will build the Bitcoin Core daemon
|
||||
@ -424,7 +424,7 @@ node.
|
||||
|
||||
==== Configuring the Bitcoin Core Node
|
||||
|
||||
((("passwords","creating")))Bitcoin Core will look for a
|
||||
Bitcoin Core will look for a
|
||||
configuration file in its data directory on every start. In this section
|
||||
we will examine the various configuration options and set up a
|
||||
configuration file. To locate the configuration file, run +bitcoind
|
||||
@ -515,7 +515,7 @@ Use it to reduce memory use on memory-constrained nodes.
|
||||
[[txindex]]
|
||||
.Transaction Database Index and txindex Option
|
||||
****
|
||||
((("transactions", "database configurationoptions")))By default,
|
||||
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 +getrawtransaction+ (see
|
||||
@ -1110,7 +1110,7 @@ spot the difference.
|
||||
[[alt_libraries]]
|
||||
=== Alternative Clients, Libraries, and Toolkits
|
||||
|
||||
((("libraries, clients, andtoolkits", id="librar03")))((("toolkits, libraries, and clients",
|
||||
((("toolkits, libraries, and clients",
|
||||
id="toolkit03")))There
|
||||
are many alternative clients, libraries, toolkits, and even full-node
|
||||
implementations in the bitcoin ecosystem. These are implemented in a
|
||||
@ -1148,7 +1148,7 @@ https://bitcoin-s.org/[bitcoin-s]:: A Bitcoin implementation in Scala
|
||||
https://github.com/MetacoSA/NBitcoin[NBitcoin]:: Comprehensive bitcoin library for the .NET framework
|
||||
|
||||
Many more libraries exist in a variety of other programming languages
|
||||
and more are created all the time.((("",startref="toolkit03")))
|
||||
and more are created all the time.
|
||||
|
||||
If you followed the instructions in this chapter, you now have Bitcoin
|
||||
Core running and have begun exploring the network and blockchain using
|
||||
|
@ -620,7 +620,7 @@ you intended.
|
||||
[[fee_sniping]]
|
||||
=== Timelock Defense Against Fee Sniping
|
||||
|
||||
((("timelocks", "defense againstfee-sniping")))((("security", "defense
|
||||
((("security", "defense
|
||||
against fee-sniping")))Fee-sniping is a theoretical
|
||||
attack scenario, where miners attempting to rewrite past blocks "snipe"
|
||||
higher-fee transactions from future blocks to maximize their
|
||||
|
10
intro.adoc
10
intro.adoc
@ -106,7 +106,7 @@ alias of Satoshi Nakamoto (see <<satoshi_whitepaper>>). Nakamoto
|
||||
combined several prior inventions such as digital signatures and Hashcash to create
|
||||
a completely decentralized electronic cash system that does not rely on
|
||||
a central authority for currency issuance or settlement and validation
|
||||
of transactions. ((("mining and consensus", "Proof-of-Workalgorithm")))A key innovation was to use a distributed computation
|
||||
of transactions. A key innovation was to use a distributed computation
|
||||
system (called a "Proof-of-Work" algorithm) to conduct a global
|
||||
lottery every 10 minutes on average, allowing the decentralized network to
|
||||
arrive at _consensus_ about the state of transactions. This
|
||||
@ -140,7 +140,7 @@ authority_, represents a breakthrough in distributed computing.
|
||||
|
||||
=== Getting Started
|
||||
|
||||
((("wallets", "selecting",id="Wselect01")))((("bitcoin", "getting started",
|
||||
((("bitcoin", "getting started",
|
||||
id="BCbasic01")))Bitcoin is a protocol that can be accessed using an
|
||||
application that speaks the protocol. A "Bitcoin wallet" is the
|
||||
most common user interface to the Bitcoin system, just like a web
|
||||
@ -258,7 +258,7 @@ interact with the network in different ways.
|
||||
|
||||
==== Quick Start
|
||||
|
||||
((("wallets", "quick start example",id="Wquick01")))Alice is not a
|
||||
Alice is not a
|
||||
technical user and only recently heard about Bitcoin from her friend
|
||||
Joe. While at a party, Joe is enthusiastically explaining
|
||||
Bitcoin to everyone around him and is offering a demonstration. Intrigued,
|
||||
@ -407,7 +407,7 @@ Here are some methods for acquiring bitcoin as a new user:
|
||||
|
||||
[TIP]
|
||||
====
|
||||
((("currencyexchanges")))((("digital currencies", "benefits of
|
||||
((("digital currencies", "benefits of
|
||||
bitcoin")))One of the advantages of
|
||||
Bitcoin over other payment systems is that, when used correctly, it
|
||||
affords users much more privacy. Acquiring, holding, and spending
|
||||
@ -447,7 +447,7 @@ currencies.
|
||||
[[sending_receiving]]
|
||||
==== Sending and Receiving Bitcoin
|
||||
|
||||
((("spending bitcoin", "bitcoin wallet quick startexample")))Alice has
|
||||
Alice has
|
||||
decided to buy 0.001 bitcoins. After she and Joe check the exchange rate,
|
||||
she gives Joe an appropriate amount of cash, opens her mobile wallet
|
||||
application, and selects Receive. This
|
||||
|
10
keys.adoc
10
keys.adoc
@ -61,7 +61,7 @@ _key pair_ for convenience. However, the public key can be calculated
|
||||
from the private key, so storing only the private key is also possible.
|
||||
====
|
||||
|
||||
((("cryptography", "ellipticcurve cryptography")))A Bitcoin wallet contains a collection of key
|
||||
A Bitcoin wallet contains a collection of key
|
||||
pairs, each consisting of a private key and a public key. The private
|
||||
key (k) is a number, usually derived from a number picked at random.
|
||||
From the private key, we
|
||||
@ -158,7 +158,7 @@ visible universe is estimated to contain 10^80^ atoms.
|
||||
[[elliptic_curve]]
|
||||
==== Elliptic Curve Cryptography Explained
|
||||
|
||||
((("elliptic curve cryptography",id="eliptic04")))((("cryptography", "elliptic curve cryptography",
|
||||
((("cryptography", "elliptic curve cryptography",
|
||||
id="Celliptic04")))Elliptic curve cryptography is a type of asymmetric
|
||||
or public key cryptography based on the discrete logarithm problem as
|
||||
expressed by addition and multiplication on the points of an elliptic
|
||||
@ -605,7 +605,7 @@ look at compact encoding and reliable checksums.
|
||||
[[base58]]
|
||||
=== Base58Check Encoding
|
||||
|
||||
((("base58 and base58check encoding",id="base5804")))((("addresses", "base58 and base58check encoding",
|
||||
((("addresses", "base58 and base58check encoding",
|
||||
id="Abase5804")))In order to represent long numbers in a compact way,
|
||||
using fewer symbols, many computer systems use mixed-alphanumeric
|
||||
representations with a base (or radix) higher than 10. For example,
|
||||
@ -1493,7 +1493,7 @@ such as vanity addresses and paper wallets.
|
||||
|
||||
==== Vanity Addresses
|
||||
|
||||
((("addresses","vanity addresses", id="Avanity04")))Vanity addresses are valid Bitcoin
|
||||
Vanity addresses are valid Bitcoin
|
||||
addresses that contain human-readable messages. For example,
|
||||
+1LoveBPzzD72PUXLzCkYAtGFYmK5vYNR33+ is a valid address that contains
|
||||
the letters forming the word "Love" as the first four base58 letters.
|
||||
@ -1618,7 +1618,7 @@ the future unless the above problems are solved.
|
||||
[[paper_wallets]]
|
||||
==== Paper Wallets
|
||||
|
||||
((("wallets", "types of", "paper wallets",id="Wpaper04")))Paper wallets are private keys printed on paper.
|
||||
Paper wallets are private keys printed on paper.
|
||||
Often the paper wallet also includes the corresponding Bitcoin address
|
||||
for convenience, but this is not necessary because it can be derived
|
||||
from the private key.
|
||||
|
12
mining.adoc
12
mining.adoc
@ -51,7 +51,7 @@ In some protocols built on top of Bitcoin, the topological order of
|
||||
Bitcoin transactions is also used to establish a sequence of events;
|
||||
we'll discuss that idea further in <<single_use_seals>>.
|
||||
|
||||
((("mining and consensus","Proof-of-Work algorithm")))Miners receive two types of rewards in
|
||||
Miners receive two types of rewards in
|
||||
return for the security provided by mining: new bitcoins created with each
|
||||
new block (called the _subsidy_), and transaction fees from all the transactions included in
|
||||
the block. To earn this reward, miners compete to satisfy a challenge
|
||||
@ -99,7 +99,7 @@ consensus.
|
||||
|
||||
=== Bitcoin Economics and Currency Creation
|
||||
|
||||
((("issuancerate")))Bitcoin are minted during the creation of each block at a
|
||||
Bitcoin 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
|
||||
@ -1057,7 +1057,7 @@ independent validation is a key component of decentralized consensus.
|
||||
[[forks]]
|
||||
=== Assembling and Selecting Chains of Blocks
|
||||
|
||||
((("blocks", "assembling and selecting chainsof", id="Bassemble10")))The final part in Bitcoin's decentralized
|
||||
The final part in Bitcoin's decentralized
|
||||
consensus mechanism is the assembly of blocks into chains and the
|
||||
selection of the chain with the most Proof-of-Work.
|
||||
|
||||
@ -1131,7 +1131,7 @@ forks (in addition to other problems), so many people prefer Bitcoin's
|
||||
10-minute blocks over shorter block intervals.
|
||||
====
|
||||
|
||||
((("",startref="forks10")))
|
||||
|
||||
|
||||
=== Mining and the Hash Lottery
|
||||
|
||||
@ -1873,7 +1873,7 @@ described next.
|
||||
[[bip9]]
|
||||
==== BIP9 Signaling and Activation
|
||||
|
||||
((("bitcoin improvement proposals", "CHECKLOCKTIMEVERIFY(BIP65)")))((("bitcoin improvement proposals", "Strict DER signatures
|
||||
((("bitcoin improvement proposals", "Strict DER signatures
|
||||
(BIP66)")))The mechanism used by BIP34, BIP66, and BIP65 was
|
||||
successful in activating three soft forks. However, it was replaced
|
||||
because it had several limitations:
|
||||
@ -2052,7 +2052,7 @@ future attempt to activate a soft fork.
|
||||
|
||||
=== Consensus Software Development
|
||||
|
||||
((("development environment", "consensus softwaredevelopment")))Consensus software continues to evolve and there is much
|
||||
Consensus software continues to evolve and there is much
|
||||
discussion on the various mechanisms for changing the consensus rules.
|
||||
By its very nature, Bitcoin sets a very high bar on coordination and
|
||||
consensus for changes. As a decentralized system, it has no "authority"
|
||||
|
@ -39,7 +39,7 @@ protocols in this chapter in addition to the base Bitcoin P2P protocol.
|
||||
|
||||
=== Node Types and Roles
|
||||
|
||||
((("Bitcoin nodes", "types and roles",id="BNtype08")))Although full nodes (peers) in the Bitcoin P2P network are equal to each other,
|
||||
Although full nodes (peers) in the Bitcoin P2P network are equal to each other,
|
||||
they may take on different roles depending on the functionality they are
|
||||
supporting. A Bitcoin full node validates blocks and may contain other
|
||||
functions, such as routing, mining, and wallet services.
|
||||
@ -51,7 +51,7 @@ serve data to clients that store
|
||||
only a subset of the blockchain and partly verify transactions using a method
|
||||
called _simplified payment verification_, or SPV. These clients are known as lightweight clients.
|
||||
|
||||
((("mining and consensus","Proof-of-Work algorithm")))Miners compete to create new blocks by
|
||||
Miners compete to create new blocks by
|
||||
running specialized hardware to solve the Proof-of-Work algorithm. Some
|
||||
miners operate full nodes, validating every block on the
|
||||
blockchain, while others are clients participating in pool
|
||||
@ -251,7 +251,7 @@ further reduce the amount of data transmitted and the network latency.
|
||||
|
||||
=== Network Discovery
|
||||
|
||||
((("Bitcoin nodes", "network discovery",id="BNodiscover08")))When a new node boots up, it must discover other
|
||||
When a new node boots up, it must discover other
|
||||
Bitcoin nodes on the network in order to participate. To start this
|
||||
process, a new node must discover at least one existing node on the
|
||||
network and connect to it. The geographic location of other nodes is
|
||||
@ -599,7 +599,7 @@ rather than fixed patterns.
|
||||
[[bloom_filters]]
|
||||
=== Bloom Filters
|
||||
|
||||
((("privacy, maintaining",id="privacy08")))((("security", "maintaining privacy",
|
||||
((("security", "maintaining privacy",
|
||||
id="Sprivacy08")))A bloom filter is a probabilistic search filter, a way
|
||||
to describe a desired pattern without specifying it exactly. Bloom
|
||||
filters offer an efficient way to express a search pattern while
|
||||
|
@ -1,7 +1,7 @@
|
||||
[[ch02_bitcoin_overview]]
|
||||
== How Bitcoin Works
|
||||
|
||||
((("decentralized systems", "bitcoin overview",id="DCSover02")))The Bitcoin system, unlike traditional banking and
|
||||
The Bitcoin system, unlike traditional banking and
|
||||
payment systems, does not require trust in third parties. Instead of a central
|
||||
trusted authority, in Bitcoin, each user can use software running on
|
||||
their own computer to verify the correct operation of every
|
||||
@ -101,7 +101,7 @@ image::images/mbc2_0202.png["payment-request"]
|
||||
|
||||
[TIP]
|
||||
====
|
||||
((("warnings and cautions", "avoid sending money toaddresses appearing in book")))Try to scan this with your wallet to see
|
||||
Try to scan this with your wallet to see
|
||||
the address and amount but DO NOT SEND MONEY.
|
||||
====
|
||||
[[invoice-URI]]
|
||||
@ -454,7 +454,7 @@ wallet can further verify Alice's transaction only spends valid UTXOs.
|
||||
|
||||
=== Bitcoin Mining
|
||||
|
||||
((("blockchain (the)", "overview of mining",id="BToverview02")))Alice's transaction is now propagated on the Bitcoin
|
||||
Alice's transaction is now propagated on the Bitcoin
|
||||
network. It does not become part of the _blockchain_ until it is
|
||||
included in a block by a process called _mining_ and that block has been
|
||||
validated by full nodes. See
|
||||
|
@ -190,7 +190,7 @@ we will examine various best practices for practical user security.
|
||||
|
||||
==== Physical Bitcoin Storage
|
||||
|
||||
((("paperwallets", see="also wallets")))Because most users are far more
|
||||
Because most users are far more
|
||||
comfortable with physical security than information security, a very
|
||||
effective method for protecting bitcoins is to convert them into physical
|
||||
form. Bitcoin keys, and the seeds used to create them, are nothing more than long numbers. This means that
|
||||
|
@ -211,7 +211,7 @@ We'll provide a detailed exploration of HD wallets in <<hd_wallet_details>>.
|
||||
|
||||
==== Seeds and Recovery Codes
|
||||
|
||||
((("bitcoin improvement proposals", "Recovery Code Words(BIP39)")))HD wallets are a very powerful mechanism for managing many
|
||||
HD wallets are a very powerful mechanism for managing many
|
||||
keys all derived from a single seed. If your wallet database
|
||||
is ever corrupted or lost, you can regenerate all of the private keys
|
||||
for your wallet using your original seed. But, if someone else gets
|
||||
@ -622,7 +622,7 @@ modern standards that may provide additional features or safety.
|
||||
[[recovery_code_words]]
|
||||
==== BIP39 Recovery Codes
|
||||
|
||||
((("bitcoin improvement proposals", "RecoveryCode Words (BIP39)", id="BIP3905")))BIP39 recovery codes are word
|
||||
BIP39 recovery codes are 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 all the
|
||||
@ -899,7 +899,7 @@ her family to recover the cryptocurrency estate.
|
||||
[[hd_wallet_details]]
|
||||
==== Creating an HD Wallet from the Seed
|
||||
|
||||
((("hierarchical deterministic (HD)wallets")))HD wallets are created from a single _root seed_, which is a
|
||||
HD wallets are created from a single _root seed_, which is a
|
||||
128-, 256-, or 512-bit random number. Most commonly, this seed is
|
||||
generated by or decrypted from a _recovery code_ as detailed in the previous section.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user