Vocabulary: Difference between revisions
m Fix link. |
add Policy |
||
(37 intermediate revisions by 15 users not shown) | |||
Line 1: | Line 1: | ||
{| align="right" | |||
| __TOC__ | |||
|} | |||
=====Bitcoin===== | |||
The name of a decentralized p2p crypto-currency network. | |||
=====[[Bitcoins]]===== | |||
Digital currency units generated and used within the Bitcoin system. Common abbreviations include BTC, XBT or lowercase ''bitcoin'' when referring to units of the currency. | |||
=====[[Block]]===== | |||
Blocks are links in a chain of transaction verifications. Outstanding transactions get bundled into a block and are verified roughly every ten minutes on average. Each subsequent block strengthens the verification of previous blocks. Each block contains one or more transactions. | |||
=====[[Block Chain]]===== | |||
Each block includes the difficult-to-produce verification hash of the previous block. This allows each subsequent block to be linked to all previous blocks. These blocks which are linked together for the purpose of verifying transactions within blocks is called the block chain. | |||
=====[[Mining#Reward|Block Reward]]===== | |||
When a Bitcoin miner finds a block, it receives newly minted bitcoins known as the "Block Reward." The reward (a.k.a., subsidy) is halved every four years and is responsible for bitcoin's [[controlled supply]]. | |||
=====Branching Point===== | |||
The block at which the block chain diverges into multiple chain branches. | |||
=====BTC===== | |||
The common decimal [[Units|unit]] of a single bitcoin. Equal to 100,000,000 satoshis, or 1.00000000 bitcoin. | |||
=====[[Checkpoint Lockin]]===== | |||
Every once in a while, an old block hash is hardcoded into Bitcoin software. Different implementations choose different checkpoint locations. Checkpoints prevent various DOS attacks from nodes flooding unusable chains and attacks involving isolating nodes and giving them fake chains. Satoshi announced the feature [https://bitcointalk.org/index.php?topic=437 here] and it was discussed to death [https://bitcointalk.org/index.php?topic=1647 here]. | |||
=====Coinbase===== | |||
"Coinbase" is another name for a generation transaction. The input of such a transaction contains some arbitrary data where the scriptSig would go in normal transactions -- this data is sometimes called the "coinbase", as well. | |||
=====[[Confirmation]]===== | |||
To protect against double spending, a transaction should not be considered as "confirmed" until a certain number of blocks in the block chain confirm, or verify that the transaction. The classic bitcoin client will show a transaction as "n/unconfirmed" until 6 blocks confirm the transaction. | |||
=====[[Difficulty]]===== | |||
Every 2016 blocks, Bitcoin adjusts the difficulty of verifying blocks based on the time it took to verify the previous 2016 blocks. The difficulty is adjusted so that given the average estimated computing power of the whole bitcoin network, only one block will verified on average every ten minutes for the next 2016 blocks. The difficulty is usually expressed as a number, optionally accurate to many decimal places (eg. in [http://blockexplorer.com/b/100000 block 100,000] it was 14,484.162361. The difficulty is inversely proportional to the hash target, which is expressed as a hex number with around 50 digits, and is the number under which a block's generated hash must be to qualify as an officially verified block. The hash target is equal to ((65535 << 208) / difficulty). Difficulty is also often called block difficulty, hash difficulty, verification difficulty or the difficulty of generating bitcoins. | |||
=====[[Double-spending|Double-Spending]]===== | |||
Attempting to spend coins that have already been spent in another transaction | |||
=====Generate Bitcoins===== | |||
An old term for [[Mining]]. The word "Mining" was not coined until years after Bitcoin was created, after [[Satoshi Nakamoto|Satoshi]] left. | |||
=====[[Hash]]===== | |||
The output of a cryptographic [[#Hash_function|hash function]]. | |||
=====Hash function===== | |||
A computer algorithm which takes an arbitrary amount of input data and deterministically produces fixed length output, known as the data's "hash", that can be used to easily verify that data has not been altered. If you change any single bit of the original data and run the hash algorithm, the hash will completely change. Because the hash is seemingly random, it is prohibitively difficult to try to produce a specific hash by changing the data which is being hashed. | |||
=====Low Priority===== | |||
See Priority. | |||
=====Main Chain===== | |||
The longest valid [[Block Chain]]. | |||
=====Memory pool===== | |||
Nodes store [[transactions]] waiting to get into a block in their memory pool (or '''mempool''') after receiving them. In other words, a node's memory pool contains all 0-confirmation transactions across the entire network that that particular node knows about (with caveats). When [[Mining|miner]]s construct new blocks, they fill their candidate blocks with transactions taken from their local node's mempool. It is a common misconception that "the mempool" is one single network-wide thing, when in reality it is a different (though probably similar) set of transactions for every node. Indeed, if it could be guaranteed that every node had exactly the same mempool, then there would be no need for mining or a [[block chain]]. | |||
Exactly which transactions enter a node's mempool, and how long it stays there, is policy which varies per node. The mempool behavior of [[Bitcoin Core]] 0.16 is complex, with many user-configurable variables, but some highlights of the '''defaults''' are: | |||
* Transactions only enter the mempool if they are valid and have a fee above 1 satoshi/byte. Transactions excluded from the mempool have their hash saved in memory so that they aren't downloaded over and over again. | |||
* The mempool is saved across node restarts. In old versions, the mempool was saved only in memory and would be wiped if the node restarted, which is how it got the name ''memory'' pool. | |||
* The mempool will only grow to a maximum size of 300 MB. If it would get larger than that, then the lowest-fee-per-byte transactions already in it are evicted instead. | |||
* Transactions that have been in the mempool for 336 hours without getting into a block are evicted. | |||
* Transactions within the mempool can be replaced by higher-fee versions if the old versions signalled replace-by-fee (RBF, BIP125) and the new version increases the fee by at least 1 satoshi/byte. | |||
=====Merkle root===== | |||
Every [[transactions|transaction]] has a [[hash]] associated with it. In a [[block]], all of the transaction hashes in the block are themselves hashed (sometimes several times -- the exact process is complex), and the result is the Merkle root. In other words, the Merkle root is the hash of all the hashes of all the transactions in the block. The Merkle root is included in the [[block hashing algorithm|block header]]. With this scheme, it is possible to securely verify that a transaction has been accepted by the network (and get the number of confirmations) by downloading just the tiny block headers and [[Wikipedia:Merkle tree|Merkle tree]] -- downloading the entire block chain is unnecessary. This feature is currently not used in Bitcoin, but it will be in the future. | |||
===== Miner===== | |||
Computer software which is designed to repeatedly calculate hashes with the intention to create a successful block and earn coins from transaction fees and new coins created with the block itself. The term references an analogy of gold miners who dig gold out of the ground and thus "discover" new gold that can be used to create new coins with a similar kind of discovery occurring with a successful hash to create new Bitcoins. | |||
=====Node===== | |||
Each piece of software connected to the main Bitcoin [[network]] is called a node. Some nodes are [[full node]]s. | |||
=====Nonce===== | |||
A nonce is an otherwise meaningless number which is used to alter the outcome of a hash. Each time Bitcoin hashes a block, it increments a nonce within the block which it is trying verify. If the numeric value of the effectively random hash is below a certain amount determined by the block generation difficulty, then the block is accepted by other clients and gets added to the chain. | |||
=====[[Orphan Block]]===== | |||
An orphan block is a block which has no known parent in the currently-longest [[block chain]]. Not to be confused with a [[#Stale_Block|Stale Block]] (which has a known parent, but is no longer part of the longest chain). | |||
=====Orphan root===== | |||
The root (first) block in an [[Orphan Block|orphan]] block chain. | |||
=====Policy===== | |||
Any rule which a node can change freely at will is called policy. For example, whether or not you have your node relay transactions is policy, since diverging from the default behavior is OK. This is distinguished from ''consensus'' rules, where everyone needs to have the same behavior or else you end up splitting the currency. Also see: [[Full node]], [[Consensus]], [[Bitcoin is not ruled by miners]]. | |||
=====Priority===== | |||
A scoring mechanism to help ensure that expensive data storage isn't consumed by lower quality and spam. A miner taking priority into account will not include low-priority transactions into his blocks if the limited space is already filled by higher-priority transactions. A [[Transaction Fee|transaction fee]] will affect priority. | |||
Priority (other than the transaction fee) was removed from [[Bitcoin Core]] in 2017, though some miners may still choose to use it by using modified software. | |||
=====[[Proof of work]]===== | |||
A result that can only be obtained through the use of computational resources. Changing the data in the proof of work requires redoing the work. | |||
=====Reorganize===== | |||
A block chain reorganize (or '''reorg''') happens when one chain becomes longer than the one you are currently working on. All of the blocks in the old chain that are not in the new one become orphan blocks, and their generations are invalidated. Transactions that use the newly-invalid generated coins also become invalid, though this is only possible in large chain splits because generations can't be spent for 100 blocks. The number of confirmations for transactions may change after a reorg, and transactions that are not in the new chain will become "0/unconfirmed" again. If a transaction in the old chain conflicts with one in the new chain (as a result of double-spending), the old one becomes invalid. | |||
=====Satoshi===== | |||
The base unit of Bitcoin (0.00000001 BTC) is sometimes called a satoshi, after Bitcoin's creator [[Satoshi Nakamoto]]. | |||
=====Seed Nodes===== | |||
Nodes whose IP addresses are included in the [[Original Bitcoin client|Bitcoin client]] for use during a new installation when the normal bootstrapping process through IRC wasn't possible. | |||
=====Stale Block===== | |||
A well-formed block which is no longer part of the difficultywise-longest and well-formed blockchain. Not to be confused with an [[#Orphan_Block|Orphan Block]] (which has no known parent in the longest [[block chain]]). | |||
=====Subsidy===== | |||
See "[[#Block_Reward|Block Reward]]" above. | |||
=====Super Nodes===== | |||
A participant in a p2p network which connects to as many other nodes as possible. | |||
=====[[Tonal Bitcoin]]===== | |||
Adaptation of Bitcoin to the [http://en.wikipedia.org/wiki/John_W._Nystrom#Tonal_System_.28Hexadecimal.29 Tonal System]. 1 TBC is defined as 1,0000 (65,536 decimal) base bitcoin units. Not widely used. | |||
=====[[Transaction Fee]]===== | |||
A voluntary fee which can be added to a transaction which is used as an incentive to add the bitcoin transaction to a block. The fee determines the likelihood of inclusion in any given block, where a high fee included with a transaction has a priority over transactions with a lower fee included or no fee at all. | |||
=====Virgin bitcoin===== | |||
The reward for generating a [[Block|block]] that has not yet been spent, a state which might increase the ability to transact [[anonymity|anonymously]]. | |||
[[Category:Technical]] | [[Category:Technical]] | ||
[[Category:Vocabulary| ]] | [[Category:Vocabulary| ]] | ||
{{Bitcoin Core documentation}} |
Latest revision as of 00:39, 24 June 2018
Bitcoin
The name of a decentralized p2p crypto-currency network.
Bitcoins
Digital currency units generated and used within the Bitcoin system. Common abbreviations include BTC, XBT or lowercase bitcoin when referring to units of the currency.
Block
Blocks are links in a chain of transaction verifications. Outstanding transactions get bundled into a block and are verified roughly every ten minutes on average. Each subsequent block strengthens the verification of previous blocks. Each block contains one or more transactions.
Block Chain
Each block includes the difficult-to-produce verification hash of the previous block. This allows each subsequent block to be linked to all previous blocks. These blocks which are linked together for the purpose of verifying transactions within blocks is called the block chain.
Block Reward
When a Bitcoin miner finds a block, it receives newly minted bitcoins known as the "Block Reward." The reward (a.k.a., subsidy) is halved every four years and is responsible for bitcoin's controlled supply.
Branching Point
The block at which the block chain diverges into multiple chain branches.
BTC
The common decimal unit of a single bitcoin. Equal to 100,000,000 satoshis, or 1.00000000 bitcoin.
Checkpoint Lockin
Every once in a while, an old block hash is hardcoded into Bitcoin software. Different implementations choose different checkpoint locations. Checkpoints prevent various DOS attacks from nodes flooding unusable chains and attacks involving isolating nodes and giving them fake chains. Satoshi announced the feature here and it was discussed to death here.
Coinbase
"Coinbase" is another name for a generation transaction. The input of such a transaction contains some arbitrary data where the scriptSig would go in normal transactions -- this data is sometimes called the "coinbase", as well.
Confirmation
To protect against double spending, a transaction should not be considered as "confirmed" until a certain number of blocks in the block chain confirm, or verify that the transaction. The classic bitcoin client will show a transaction as "n/unconfirmed" until 6 blocks confirm the transaction.
Difficulty
Every 2016 blocks, Bitcoin adjusts the difficulty of verifying blocks based on the time it took to verify the previous 2016 blocks. The difficulty is adjusted so that given the average estimated computing power of the whole bitcoin network, only one block will verified on average every ten minutes for the next 2016 blocks. The difficulty is usually expressed as a number, optionally accurate to many decimal places (eg. in block 100,000 it was 14,484.162361. The difficulty is inversely proportional to the hash target, which is expressed as a hex number with around 50 digits, and is the number under which a block's generated hash must be to qualify as an officially verified block. The hash target is equal to ((65535 << 208) / difficulty). Difficulty is also often called block difficulty, hash difficulty, verification difficulty or the difficulty of generating bitcoins.
Double-Spending
Attempting to spend coins that have already been spent in another transaction
Generate Bitcoins
An old term for Mining. The word "Mining" was not coined until years after Bitcoin was created, after Satoshi left.
Hash
The output of a cryptographic hash function.
Hash function
A computer algorithm which takes an arbitrary amount of input data and deterministically produces fixed length output, known as the data's "hash", that can be used to easily verify that data has not been altered. If you change any single bit of the original data and run the hash algorithm, the hash will completely change. Because the hash is seemingly random, it is prohibitively difficult to try to produce a specific hash by changing the data which is being hashed.
Low Priority
See Priority.
Main Chain
The longest valid Block Chain.
Memory pool
Nodes store transactions waiting to get into a block in their memory pool (or mempool) after receiving them. In other words, a node's memory pool contains all 0-confirmation transactions across the entire network that that particular node knows about (with caveats). When miners construct new blocks, they fill their candidate blocks with transactions taken from their local node's mempool. It is a common misconception that "the mempool" is one single network-wide thing, when in reality it is a different (though probably similar) set of transactions for every node. Indeed, if it could be guaranteed that every node had exactly the same mempool, then there would be no need for mining or a block chain.
Exactly which transactions enter a node's mempool, and how long it stays there, is policy which varies per node. The mempool behavior of Bitcoin Core 0.16 is complex, with many user-configurable variables, but some highlights of the defaults are:
- Transactions only enter the mempool if they are valid and have a fee above 1 satoshi/byte. Transactions excluded from the mempool have their hash saved in memory so that they aren't downloaded over and over again.
- The mempool is saved across node restarts. In old versions, the mempool was saved only in memory and would be wiped if the node restarted, which is how it got the name memory pool.
- The mempool will only grow to a maximum size of 300 MB. If it would get larger than that, then the lowest-fee-per-byte transactions already in it are evicted instead.
- Transactions that have been in the mempool for 336 hours without getting into a block are evicted.
- Transactions within the mempool can be replaced by higher-fee versions if the old versions signalled replace-by-fee (RBF, BIP125) and the new version increases the fee by at least 1 satoshi/byte.
Merkle root
Every transaction has a hash associated with it. In a block, all of the transaction hashes in the block are themselves hashed (sometimes several times -- the exact process is complex), and the result is the Merkle root. In other words, the Merkle root is the hash of all the hashes of all the transactions in the block. The Merkle root is included in the block header. With this scheme, it is possible to securely verify that a transaction has been accepted by the network (and get the number of confirmations) by downloading just the tiny block headers and Merkle tree -- downloading the entire block chain is unnecessary. This feature is currently not used in Bitcoin, but it will be in the future.
Miner
Computer software which is designed to repeatedly calculate hashes with the intention to create a successful block and earn coins from transaction fees and new coins created with the block itself. The term references an analogy of gold miners who dig gold out of the ground and thus "discover" new gold that can be used to create new coins with a similar kind of discovery occurring with a successful hash to create new Bitcoins.
Node
Each piece of software connected to the main Bitcoin network is called a node. Some nodes are full nodes.
Nonce
A nonce is an otherwise meaningless number which is used to alter the outcome of a hash. Each time Bitcoin hashes a block, it increments a nonce within the block which it is trying verify. If the numeric value of the effectively random hash is below a certain amount determined by the block generation difficulty, then the block is accepted by other clients and gets added to the chain.
Orphan Block
An orphan block is a block which has no known parent in the currently-longest block chain. Not to be confused with a Stale Block (which has a known parent, but is no longer part of the longest chain).
Orphan root
The root (first) block in an orphan block chain.
Policy
Any rule which a node can change freely at will is called policy. For example, whether or not you have your node relay transactions is policy, since diverging from the default behavior is OK. This is distinguished from consensus rules, where everyone needs to have the same behavior or else you end up splitting the currency. Also see: Full node, Consensus, Bitcoin is not ruled by miners.
Priority
A scoring mechanism to help ensure that expensive data storage isn't consumed by lower quality and spam. A miner taking priority into account will not include low-priority transactions into his blocks if the limited space is already filled by higher-priority transactions. A transaction fee will affect priority.
Priority (other than the transaction fee) was removed from Bitcoin Core in 2017, though some miners may still choose to use it by using modified software.
Proof of work
A result that can only be obtained through the use of computational resources. Changing the data in the proof of work requires redoing the work.
Reorganize
A block chain reorganize (or reorg) happens when one chain becomes longer than the one you are currently working on. All of the blocks in the old chain that are not in the new one become orphan blocks, and their generations are invalidated. Transactions that use the newly-invalid generated coins also become invalid, though this is only possible in large chain splits because generations can't be spent for 100 blocks. The number of confirmations for transactions may change after a reorg, and transactions that are not in the new chain will become "0/unconfirmed" again. If a transaction in the old chain conflicts with one in the new chain (as a result of double-spending), the old one becomes invalid.
Satoshi
The base unit of Bitcoin (0.00000001 BTC) is sometimes called a satoshi, after Bitcoin's creator Satoshi Nakamoto.
Seed Nodes
Nodes whose IP addresses are included in the Bitcoin client for use during a new installation when the normal bootstrapping process through IRC wasn't possible.
Stale Block
A well-formed block which is no longer part of the difficultywise-longest and well-formed blockchain. Not to be confused with an Orphan Block (which has no known parent in the longest block chain).
Subsidy
See "Block Reward" above.
Super Nodes
A participant in a p2p network which connects to as many other nodes as possible.
Tonal Bitcoin
Adaptation of Bitcoin to the Tonal System. 1 TBC is defined as 1,0000 (65,536 decimal) base bitcoin units. Not widely used.
Transaction Fee
A voluntary fee which can be added to a transaction which is used as an incentive to add the bitcoin transaction to a block. The fee determines the likelihood of inclusion in any given block, where a high fee included with a transaction has a priority over transactions with a lower fee included or no fee at all.
Virgin bitcoin
The reward for generating a block that has not yet been spent, a state which might increase the ability to transact anonymously.
|