Difference between revisions of "Bitcoin"
m (Protected "Bitcoin" ([edit=sysop] (indefinite) [move=sysop] (indefinite)))
Revision as of 02:29, 6 May 2011
|Initial release||Template:MONTHNAME 4, 2009|
|Stable release||0.3.21 / Template:Start date and age|
|Operating system||Windows, Linux, Mac OS X|
|Size||5.2 MiB - 9.7 MiB|
|Available in||English, German, Spanish, French, Dutch, Portuguese, Italian and Russian.|
Bitcoin is a digital currency created in 2009 by Satoshi Nakamoto. The name also refers to the open source software he designed that uses it, and the peer-to-peer network that it forms. Unlike most currencies, bitcoin does not rely on trusting any central issuer. Bitcoin uses a distributed database spread across nodes of a peer-to-peer network to journal transactions, and uses cryptography in order to provide basic security functions, such as ensuring that bitcoins can only be spent by the person who owns them, and never more than once.
Bitcoin's design allows for anonymous ownership and transfers of value. Bitcoins can be saved on a personal computer in the form of a wallet file or kept with a third party wallet service, and in either case Bitcoins can be sent over the Internet to anyone with a Bitcoin address. Bitcoin's peer-to-peer topology and lack of central administration make it infeasible for any authority, governmental or otherwise, to manipulate the value of bitcoins or induce inflation by producing more of them.
|ISO 4217 Code||none; BTC used colloquially|
|Central bank||None; decentralized, distributed|
The Bitcoin economy is still small relative to long-since established economies and the software is still in the beta stage of development. But real goods and services, such as used cars and freelance software development contracts, are now being traded. Bitcoins are accepted for both online services and tangible goods. The Electronic Frontier Foundation and Singularity Institute accept bitcoin donations. Traders exchange regular currency (including US dollars, Russian rubles, and Japanese yen) for bitcoins through exchange sites.[self-published source?] Anyone can view the block-chain and observe transactions in real-time. Various services facilitate such monitoring.
As opposed to conventional fiat currency, the bitcoin differs in that no overseer can control the value due to its decentralized nature, mitigating possible instability caused by central banks. There is a limited controlled inflation hardcoded in the Bitcoin software, but it is predictable and known to all parties in advance. Inflation cannot therefore be centrally manipulated to effect redistribution of value from general users.
Transfers are facilitated directly without the use of a financial processor between nodes. This type of transaction makes chargebacks impossible. The Bitcoin client broadcasts the transaction to surrounding nodes who propagate the payment across the network. Corrupted or invalid transactions are rejected by honest clients. Transactions are mostly free, however a fee may be paid to other nodes to prioritize transaction processing.
The total number of bitcoins tends to 21 million over time. The money supply grows as a geometric series every 21,000 blocks (roughly every 4 years); by 2013 half of the total supply will have been generated, and by 2017, 3/4 will have been generated. As it approaches that mark the value of bitcoins will likely begin to experience price deflation (increase in real value) due to the lack of new introduction. Bitcoins, however, are divisible to eight decimal places (giving 2.1 x 1015 total units), removing practical limitations to downward price adjustments in a deflationary environment. Rather than relying on the incentive of newly created bitcoins to record transactions into blocks, nodes in this period are expected to depend on their ability to competitively collect transaction fees to process transactions.
Proposed failure scenarios for Bitcoin include a currency devaluation, a declining user base, or a global governmental crackdown on the software. Succession to another similar cryptocurrency system is also possible, if a new one were to be created and considered to be more legitimate (e.g. backed by a large tech company or institution) or advantageous over Bitcoin in its current form (e.g. more scalable or user-friendly). It may not be possible to "ban all crypto-cash like Bitcoin."
The decentralization and anonymity embodied by Bitcoin appears to be a reaction to the U.S. government's prosecution of digital currency companies like e-gold and Liberty Dollar. In an Irish Times investigative article Danny O'Brien reported "When I show people this Bitcoin economy, they ask: 'Is this legal?' They ask: 'Is it a con?' I imagine there are lawyers and economists struggling to answer both questions. I suspect you will be able to add lawmakers to that list shortly."
Bitcoin is a peer-to-peer implementation of Wei Dai's b-money proposal and Nick Szabo's Bitgold proposal. The principles of the system are described in Satoshi Nakamoto's 2008 Bitcoin whitepaper.
Bitcoin relies on the transfer of amounts between public accounts using public key cryptography. All transactions are public and stored in a distributed database which is used to confirm transactions and prevent double-spending.
Any person participating in the bitcoin network has a wallet containing an arbitrary number of cryptographic keypairs. The public keys, or bitcoin addresses, act as the receiving endpoints for all payments. Their corresponding private keys authorize payments from that user only. Addresses contain no information about their owner and are generally anonymous. Addresses in human-readable form are strings of random numbers and letters around 33 characters in length, always beginning with the number 1, of the form 175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W. Bitcoin users can own multiple addresses, and in fact can generate new ones without any practical limit, as generating a new address requires relatively little computing, simply equivalent to generating a public/private key pair, and requires no contact with any nodes of the network. Creating single-purpose/single-use addresses helps preserve a user's anonymity.
Bitcoins contain the current owner's public key (address). When user A transfers some to user B, A relinquishes ownership on them by adding B’s public key (address) to those coins and signing them with his own private key. He then broadcasts these bitcoins in an appropriate message, the transaction, on the peer-to-peer network. The rest of the network nodes validate the cryptographic signatures and the amounts of the transaction before accepting it.
Because transactions are broadcast to the entire network, they are inherently public. Unlike regular banking, which preserves customer privacy by keeping transaction records private, transactional anonymity is accomplished in Bitcoin by keeping the ownership of addresses private, while at the same time publishing all transactions. As an example, if Alice send 123.45 BTC to Bob, a public record is created that allows anyone to see that 123.45 was sent from one of Alice's addresses to one of Bob's addresses. However, unless Alice or Bob make their ownership of these addresses publicly known in some way, it is difficult for anyone else to connect the transaction with them.
Block-chain and Confirmations
To prevent double-spending, the network implements what Nakamoto describes as a peer-to-peer distributed timestamp server, which assigns sequential identifiers to each transaction which are then hardened against modification using the idea of chained proofs of work (shown in the Bitcoin client as confirmations).
Any time a transaction is made, it immediately starts out showing unconfirmed. The confirmation status is reflective of the likelihood that the transaction could be successfully reversed in the event of a deliberate attempt to do so. Any transaction broadcasted to other nodes does not become confirmed until acknowledged in a collectively maintained timestamped-list of all known transactions, the block chain.
In particular, each generating node collects all unacknowledged transactions it knows of in a file known as a block, which references all recent transactions as well as the previous valid block known to that node. It then tries to produce a cryptographic hash of that block with certain characteristics, an effort that requires on average a predictable amount of repetitious trial and error. When a node finds such a solution, it announces it to the rest of the network. Peers receiving the new solved block validate it before accepting it, adding it to the chain.
When a transaction is first acknowledged in a block, it receives one confirmation. The transaction itself is only acknowledged once, but blocks themselves are acknowledged repeatedly as time passes and the chain grows. Each time that first block is acknowledged by future blocks, the transaction is considered to have received another confirmation. After six confirmations, the Bitcoin client switches from showing "unconfirmed" to "confirmed". Although a transaction is technically "confirmed" after a single confirmation, the client avoids reporting it until several confirmations later, just to ensure that it is overwhelmingly likely that the transactions are part of the main block chain rather than an orphaned one, and more importantly, practically impossible to reverse.
Eventually, the block-chain contains the cryptographic ownership history of all coins from their creator-address to their current owner-address. Therefore, if a user attempts to reuse coins he had already spent, the network will reject the transaction.
The whole history of transactions must be stored inside the block chain database, which grows constantly as new records are added and never removed. By design, some but not all users need the entire database to use Bitcoin - some users only need the portion of the database that pertains to the coins they own or might receive in the future. Presently, the database is small enough (less than 200 MB as of April 2011) that all users of the Bitcoin software receive the entire database over the peer-to-peer network shortly after running the software the first time.
Nakamoto conceived that as the database became larger, applications for Bitcoin without the entire database on each user's computer would be desirable. To enable this, a Merkle tree is used to organize the transaction records in such a way that a future Bitcoin client can locally delete portions of its own database it knows it will never need in the future, such as earlier transaction records of Bitcoins that have changed ownership multiple times, while keeping the cryptographic integrity of the remaining database intact.
The Bitcoin network creates and distributes a batch of new bitcoins approximately six times per hour at random to somebody running the software with the "generate coins" option selected. Any user can potentially receive a batch by running it, or an equivalent program specialized for the equipment the user owns. Generating bitcoins is often referred to as "mining", a term analogous to gold mining. The probability that a given user will receive a batch depends on the computing power he contributes to the network relative to the computing power of all nodes combined. The amount of bitcoins created per batch is never more than 50 BTC (plus transaction fees), and the awards are programmed to decrease over time down to zero, such that no more than 21 million will ever exist. As this payout decreases, the motive for users to run block-generating nodes is expected to change to earning transaction fees.
All generating nodes of the network are competing to be the first to find a solution to a cryptographic problem about their candidate-block, a problem that requires repetitious trial and error. When a node finds such a valid solution, it announces it to the rest of the network and claims a new batch of bitcoins. Peers receiving the new solved-block validate it before accepting it, adding it to the chain. Nodes can employ their CPUs using the standard client or use other software to take advantage of their GPUs. Users can also generate bitcoins collectively.
So that one block gets generated every ten minutes, each node separately readjusts the difficulty of the problem it tries to solve every two weeks according to any changes of the collective CPU-power of the peer-to-peer network.
Because nodes have no obligation to include transactions in the blocks they generate, Bitcoin senders may voluntarily pay a transaction fee. Doing so will speed up the transaction and provide incentive for users to run nodes, especially as the difficulty of generating bitcoins increases or the reward per block amount decreases over time. Nodes collect the transaction fees associated with all transactions included in their candidate block.
- Anonymous internet banking
- Ripple monetary system
- Digital gold currency
- "Current currency & funds code list". SNV-SIX Interbank Clearing. Archived from the original. Error: You must specify the date the archive was made using the
|archivedate=parameter. http://www.currency-iso.org/iso_index/iso_tables/iso_tables_a1.htm. Retrieved on 10 February 2010.
- Bitcoin website. Main page, FAQ, and (extensively) Trade page all use the abbreviation "BTC".
- Nakamoto, Satoshi (24 May 2009). Bitcoin: A Peer-to-Peer Electronic Cash System. http://www.bitcoin.org/sites/default/files/bitcoin.pdf. Retrieved on 14 December 2010.
- "Bitcoin Trade". Bitcoin.org. Archived from the original. Error: You must specify the date the archive was made using the
|archivedate=parameter. http://www.bitcoin.org/trade. Retrieved on 22 December 2010.
- EFF Bitcoin donation page
- SIAI donation page
- Bitcoin Charts
- Thomas, Keir (2010-10-10). "Could the Wikileaks Scandal Lead to New Virtual Currency?". PC World. Archived from the original. Error: You must specify the date the archive was made using the
|archivedate=parameter. http://www.pcworld.com/businesscenter/article/213230/could_the_wikileaks_scandal_lead_to_new_virtual_currency.html. Retrieved on 2010-10-10.
- Bitcoin FAQ
- Nathan Willis (2010-11-10). "Bitcoin: Virtual money created by CPU cycles". LWN.net. Archived from the original. Error: You must specify the date the archive was made using the
- O'Brien, Danny (26 November 2010). "Imagine your computer as a wallet full of Bitcoins". The Irish Times. Archived from the original. Error: You must specify the date the archive was made using the
|archivedate=parameter. http://www.irishtimes.com/newspaper/finance/2010/1126/1224284180416.html. Retrieved on 19 December 2010.
- Herpel, Mark (6 December 2010). "2011 Observations on the Digital Currency Industry". SSRN (Article for DGC magazine Jan2011). Archived from the original. Error: You must specify the date the archive was made using the
|archivedate=parameter. http://ssrn.com/abstract=1721076. Retrieved on 19 December 2010.
- In his white paper, Nakamoto wrote: "we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions."
- "Bitcoin Wiki: Block Hashing Algorithm". Archived from the original. Error: You must specify the date the archive was made using the
- "Bitcoin Block Explorer". Archived from the original. Error: You must specify the date the archive was made using the
Luongo, Thomas (2010-07-23). "The FED’s Real Monetary Problem". LewRockwell.com. Archived from the original. Error: You must specify the date the archive was made using the
|archivedate=parameter. http://www.lewrockwell.com/orig6/luongo7.1.1.html. Retrieved on 2010-10-12.
- DiabloMiner, OpenCL miner for BitCoin
- poclbm, Python OpenCL bitcoin miner
- Bitcoin Pooled Mining
- angry tapir, timothy (23 March 2011). "Google Engineer Releases Open Source Bitcoin Client". Slashdot. Archived from the original. Error: You must specify the date the archive was made using the
|archivedate=parameter. http://news.slashdot.org/story/11/03/23/0210207/Google-Engineer-Releases-Open-Source-Bitcoin-Client. Retrieved on 29 March 2011.
- tcatm. "bitcoin-js-remote". GitHub. Archived from the original. Error: You must specify the date the archive was made using the
|archivedate=parameter. https://github.com/tcatm/bitcoin-js-remote. Retrieved on 29 March 2011.
- Spesmilo, PySide Bitcoin client