Help:FAQ: Difference between revisions
→How does the BitCoin network handle the CAP theorem?: delete section, it's not really an FAQ |
Elaborated on what exactly is computed during the mining process |
||
Line 164: | Line 164: | ||
===Is mining used for some useful computation?=== | ===Is mining used for some useful computation?=== | ||
The computations done when mining are internal to Bitcoin and not related to any other distributed computing projects. They serve the purpose of securing the Bitcoin network, which is useful. | The computations done when mining are internal to Bitcoin and not related to any other distributed computing projects. They serve the purpose of securing the Bitcoin network, which is useful. | ||
To give a general idea of the mining process, imagine this setup: | |||
payload = <some data related to things happening on the Bitcoin network> | |||
nonce = 1 | |||
hash = [http://en.wikipedia.org/wiki/SHA2 SHA2]( [http://en.wikipedia.org/wiki/SHA2 SHA2]( payload + nonce ) ) | |||
The work performed by a miner consists of repeatedly increasing "nonce" until | |||
the hash function yields a value, that starts with a certain number of zeros. | |||
As can be seen, the mining process doesn't compute anything special. It merely | |||
tries to find a number (also referred to as nonce) which - in combination with the payload - | |||
results in a hash with special properties. | |||
The advantage of using such a mechanism consists of the fact, that it is very easy to check a result: Given | |||
the payload and a specific nonce, only a single call of the hashing function | |||
is needed to verify that the hash has the required properties. Since there is no | |||
known way to find these hashes other than brute force, this can be used as a "proof of work" | |||
that someone invested a lot of computing power to find the correct nonce for this payload. | |||
This feature is then used in the Bitcoin network to secure various aspects. An attacker | |||
that wants to introduce malicious payload data into the network, will need to do the | |||
required proof of work before it will be accepted. And as long as honest miners have more | |||
computing power, they can always outpace an attacker. | |||
Also see [http://en.wikipedia.org/wiki/SHA2 SHA2] and [http://en.wikipedia.org/wiki/Proof-of-work_system Proof-of-work system] on Wikipedia. | |||
===Is it not a waste of energy?=== | ===Is it not a waste of energy?=== |
Revision as of 10:00, 13 June 2011
Here you will find answers to the most commonly asked questions.
General
What are bitcoins?
Bitcoins are the unit of currency of the Bitcoin system. A commonly used shorthand for this is “BTC” to refer to a price or amount (eg: “100 BTC”). A Bitcoin isn't tangible. It is just a number associated with a Bitcoin Address. See also an easy intro to bitcoin.
How can I get Bitcoins?
There are five ways to get Bitcoins:
- Buy them on an exchange such as Mt. Gox or #bitcoin-otc on FreeNode.
- Accept Bitcoins as payment for goods or services.
- Find a local trader on tradebitcoin (or somewhere else) and trade with him in cash.
- Create a new block (currently yields 50 Bitcoins).
- Participate in a mining pool.
Can I buy Bitcoins with Paypal?
While it's possible to find an individual who wishes to sell Bitcoin to you via Paypal, (perhaps via #bitcoin-otc ) most major exchanges do not allow funding through Paypal. This is due to repeated cases where someone pays for Bitcoins with Paypal, receives their Bitcoins, and then fraudulently complains to Paypal that they never received their goods. Paypal too often sides with the fraudulent buyer in this case, and so exchangers no longer allow this method of funding.
Buying Bitcoins from individuals with this method is still possible, but requires mutual trust. In this case, Bitcoin seller beware.
How are new Bitcoins created?
New coins are generated by a network node each time it finds the solution to a certain mathematical problem (i.e. creates a new block), which is difficult to perform and can demonstrate a proof of work. The reward for solving a block is automatically adjusted so that in the first 4 years of the Bitcoin network, 10,500,000 BTC will be created. The amount is halved each 4 years, so it will be 5,250,000 over years 4-8, 2,625,000 over years 8-12 and so on. Thus the total number of coins will approach 21,000,000 BTC over time.
In addition, built into the network is a system that attempts to allocate new coins in blocks about every 10 minutes, on average, somewhere on the network. As the number of people who attempt to generate these new coins changes, the difficulty of creating new coins changes. This happens in a manner that is agreed upon by the network as a whole, based upon the time taken to generate the previous 2016 blocks. The difficulty is therefore related to the average computing resources devoted to generate these new coins over the time it took to create these previous blocks. The likelihood of somebody "discovering" one of these blocks is based on the computer they are using compared to all of the computers also generating blocks on the network.
What's the current total number of Bitcoins in existence?
The number of blocks times the coin value of a block is the number of coins in existence. The coin value of a block is 50 BTC for each of the first 210,000 blocks, 25 BTC for the next 210,000 blocks, then 12.5 BTC, 6.25 BTC and so on.
How divisible are Bitcoins?
Technically, a Bitcoin can be divided down to 8 decimals using existing data structures, so 0.00000001 BTC is the smallest amount currently possible. Discussions about and ideas for ways to provide for even smaller quantities of Bitcoins may be created in the future if the need for them ever arises.
What do I call the various denominations of Bitcoins?
There is a lot of discussion about the naming of these fractions of Bitcoins. The leading candidates are:
- 1 BTC = 1 Bitcoin
- 0.01 BTC = 1 cBTC = 1 Centi-Bitcoin (also referred to as Bitcent)
- 0.001 BTC = 1 mBTC = 1 Milli-Bitcoin (also referred to as mbit (pronounced em-bit) or millibit)
- 0.000 001 BTC = 1 μBTC = 1 Micro-Bitcoin (also referred to as ubit (pronounced yu-bit) or microbit)
The above follows the accepted international SI units for thousandths, millionths and billionths. There are many arguments against the special case of 0.01 BTC since it is unlikely to represent anything meaningful as the Bitcoin economy grows (it certainly won't be the equivalent of 0.01 USD, GBP or EUR). Equally, the inclusion of existing national currency denominations such as "cent", "nickel", "dime", "pence", "pound", "kopek" and so on are to be discouraged. This is a worldwide currency.
One exception is the "satoshi" which is smallest denomination currently possible
- 0.000 000 01 BTC = 1 Satoshi (pronounced sa-toh-shee)
which is so named in honour of Satoshi Nakamoto the pseudonym of the inventor of Bitcoin.
For an overview of all defined units of Bitcoin (including less common and niche units), see Units.
Further discussion on this topic can be found on the forums here:
How does the halving work when the number gets really small?
The reward will go from 0.00000001 BTC to 0. Then no more coins will likely be created.
The calculation is done as a right bitwise shift of a 64-bit signed integer, which means it is divided by 2 and rounded down. The integer is equal to the value in BTC * 100,000,000. This is how all Bitcoin balances/values are stored internally.
Keep in mind that using current rules this will take nearly 100 years before it becomes an issue and Bitcoins may change considerably before that happens.
How long will it take to generate all the coins?
The last block that will generate coins will be block #6,929,999. This should be generated around year 2140. Then the total number of coins in circulation will remain static at 20,999,999.9769 BTC.
Even if the allowed precision is expanded from the current 8 decimals, the total BTC in circulation will always be slightly below 21 million (assuming everything else stays the same). For example, with 16 decimals of precision, the end total would be 20999999.999999999496 BTC.
If no more coins are going to be generated, will more blocks be created?
Absolutely! Even before the creation of coins ends, the use of transaction fees will likely make creating new blocks more valuable from the fees than the new coins being created. When coin generation ends, what will sustain the ability to use bitcoins will be these fees entirely. There will be blocks generated after block #6,929,999, assuming that people are still using Bitcoins at that time.
But if no more coins are generated, what happens when Bitcoins are lost? Won't that be a problem?
Not at all. Because of the law of supply and demand, when fewer Bitcoins are available the ones that are left will be in higher demand, and therefore will have a higher value. So when Bitcoins are lost, the remaining Bitcoins will increase in value to compensate. As the value of Bitcoins increase, the number of Bitcoins required to purchase an item decreases. This is known as a deflationary economic model. Eventually, if and when it gets to the point where the largest transaction is less than 1BTC, then it's a simple matter of shifting the decimal place to the right a few places, and the system continues.
If every transaction is broadcast via the network, does BitCoin scale?
The Bitcoin protocol allows lightweight clients that can use Bitcoin without downloading the entire transaction history. As traffic grows and this becomes more critical, implementations of the concept will be developed. Full network nodes will at some point become a more specialized service.
With some modifications to the software, full BitCoin nodes could easily keep up with both VISA and MasterCard combined, using only fairly modest hardware (a couple of racks of machines using todays hardware). It's worth noting that the MasterCard network is structured somewhat like BitCoin itself - as a peer to peer broadcast network.
Learn more about Scalability.
Why do I have to wait 10 minutes before I can spend money I received?
10 minutes is the average time taken to find a block. It can be significantly more or less time than that depending on luck; 10 minutes is simply the average case.
Blocks (shown as "confirmations" in the GUI) are how the BitCoin achieves consensus on who owns what. Once a block is found everyone agrees that you now own those coins, so you can spend them again. Until then it's possible that some network nodes believe otherwise, if somebody is attempting to defraud the system by reversing a transaction. The more confirmations a transaction has, the less risk there is of a reversal. Only 6 blocks or 1 hour is enough to make reversal computationally impractical. This is dramatically better than credit cards which can see chargebacks occur up to three months after the original transaction!
Why ten minutes specifically? It is a tradeoff chosen by Satoshi between propagation time of new blocks in large networks and the amount of work wasted due to chain splits. If that made no sense to you, don't worry. Reading the technical paper should make things clearer.
Do you have to wait 10 minutes in order to buy or sell things with BitCoin?
No, it's reasonable to sell things without waiting for a confirmation as long as the transaction is not of high value.
When people ask this question they are usually thinking about applications like supermarkets or snack machines, as discussed in this thread from July 2010. Zero confirmation transactions still show up in the GUI, but you cannot spend them. You can however reason about the risk involved in assuming you will be able to spend them in future. In general, selling things that are fairly cheap (like snacks, digital downloads etc) for zero confirmations will not pose a problem if you are running a well connected node.
Why does my Bitcoin address keep changing?
Whenever the address listed in "Your address" receives a transaction, Bitcoin replaces it with a new address. This is meant to encourage you to use a new address for every transaction, which enhances anonymity. All of your old addresses are still usable: you can see them in Settings -> Your Receiving Addresses.
Economy
Where does the value of Bitcoin stem from? What backs up Bitcoin?
Bitcoins have value because they are accepted as payment by many. See the list of Bitcoin-accepting sites.
When we say that a currency is backed up by gold, we mean that there's a promise in place that you can exchange the currency for gold. In a sense, you could say that Bitcoin is "backed up" by the price tags of merchants – a price tag is a promise to exchange goods for a specified amount of currency.
It's a common misconception that Bitcoins gain their value from the cost of electricity required to generate them. Cost doesn't equal value – hiring 1,000 men to shovel a big hole in the ground may be costly, but not valuable. Also, even though scarcity is a critical requirement for a useful currency, it alone doesn't make anything valuable. For example, your fingerprints are scarce, but that doesn't mean they have any exchange value.
What if someone bought up all the existing Bitcoins?
What if somebody bought up all the gold in the world? Well, by attempting to buy it all, the buyer would just drive the prices up until he runs out of money.
Not all Bitcoins are for sale. Just as with gold, no one can buy a Bitcoin that isn't available for sale.
Bitcoin's monetary policy causes a deflationary spiral
See the article Deflationary spiral.
Doesn't Bitcoin unfairly benefit early adopters?
Early adopters have a large number of bitcoins now because they took a risk and invested resources in an unproven technology. By so doing, they have helped Bitcoin become what it is now and what it will be in the future (hopefully, a ubiquitous decentralized digital currency). It is only fair they will reap the benefits of their successful investment.
In any case, any bitcoin generated will probably change hands dozens of time as a medium of exchange, so the profit made from the initial distribution will be insignificant compared to the total commerce enabled by Bitcoin.
Is Bitcoin a Ponzi scheme?
In a Ponzi Scheme, the founders persuade investors that they’ll profit. Bitcoin does not make such a guarantee. There is no central entity, just individuals building an economy.
A ponzi scheme is a zero sum game. Early adopters can only profit at the expense of late adopters. Bitcoin has possible win-win outcomes. Early adopters profit from the rise in value. Late adopters profit from the usefulness of a stable and widely accepted p2p currency.
The fact that early adopters benefit more doesn't alone make anything a ponzi scheme. Apple stocks aren't ponzi even though the early investors got rich.
Networking
Do I need to configure my firewall to run bitcoin?
Bitcoin will connect to other nodes, usually on tcp port 8333. You will need to allow outgoing TCP connections to port 8333 if you want to allow your bitcoin client to connect to many nodes. Bitcoin will also try to connect to IRC (tcp port 6667) to meet other nodes to connect to.
If you want to restrict your firewall rules to a few ips and/or don't want to allow IRC connection, you can find stable nodes in the fallback nodes list. If your provider blocks the common IRC ports, note that lfnet also listens on port 7777. Connecting to this alternate port currently requires either recompiling Bitcoin, or changing routing rules. For example, on Linux you can evade a port 6667 block by doing something like this:
echo 173.246.103.92 irc.lfnet.org >> /etc/hosts iptables -t nat -A OUTPUT -p tcp --dest 173.246.103.92 --dport 6667 -j DNAT --to-destination :7777 -m comment --comment "bitcoind irc connection"
How does the peer finding mechanism work?
Bitcoin finds peers primarily by connecting to an IRC server (channel #bitcoin on irc.lfnet.org). If a connection to the IRC server cannot be established (like when connecting through TOR), an in-built node list will be used and the nodes will be queried for more node addresses.
Mining
What is mining?
Mining is the process of spending computation power to find valid blocks and thus create new Bitcoins.
Technically speaking, mining is the calculation of a hash of the previous block and a nonce. If the hash value is found to be less than the current difficulty, a new block is formed and the miner gets 50 newly generated Bitcoins. If the hash is not less than the current difficulty, a new nonce is used, and a new hash is calculated. This is done thousands or millions of times per second by each miner.
I've been mining for a long time and haven't created any new Bitcoins. What's wrong?
In the early days of Bitcoin, it was easy for anyone to find new blocks using standard CPUs. As more and more people started mining, the difficulty of finding new blocks has greatly increased to the point where the average time for a CPU to find a single block can be many years. The only cost- or time-effective method of mining is using a high-end graphics card with special software (see also Why a GPU mines faster than a CPU). Since CPU mining is essentially useless, it may be removed from future versions of the Bitcoin software.
Is mining used for some useful computation?
The computations done when mining are internal to Bitcoin and not related to any other distributed computing projects. They serve the purpose of securing the Bitcoin network, which is useful.
To give a general idea of the mining process, imagine this setup:
payload = <some data related to things happening on the Bitcoin network> nonce = 1 hash = SHA2( SHA2( payload + nonce ) )
The work performed by a miner consists of repeatedly increasing "nonce" until the hash function yields a value, that starts with a certain number of zeros.
As can be seen, the mining process doesn't compute anything special. It merely tries to find a number (also referred to as nonce) which - in combination with the payload - results in a hash with special properties.
The advantage of using such a mechanism consists of the fact, that it is very easy to check a result: Given the payload and a specific nonce, only a single call of the hashing function is needed to verify that the hash has the required properties. Since there is no known way to find these hashes other than brute force, this can be used as a "proof of work" that someone invested a lot of computing power to find the correct nonce for this payload.
This feature is then used in the Bitcoin network to secure various aspects. An attacker that wants to introduce malicious payload data into the network, will need to do the required proof of work before it will be accepted. And as long as honest miners have more computing power, they can always outpace an attacker.
Also see SHA2 and Proof-of-work system on Wikipedia.
Is it not a waste of energy?
Spending energy on creating a free monetary system is hardly a waste. Also, services necessary for the operation of currently widespread monetary systems, such as banks and credit card companies, also spend energy, arguably more than Bitcoin would.
Why don't we use calculations that are also useful for some other purpose?
To provide security for the Bitcoin network, the calculations involved need to have some very specific features. These features are incompatible with leveraging the computation for other purposes.
Help
I'd like to learn more. Where can I get help?
- Read the introduction to bitcoin
- See the videos, podcasts, and blog posts from the Press
- Read and post on the [[1]]
- Chat on one of the [IRC] channels
- Listen to this podcast, which goes into the details of how bitcoin works