Jump to content

Bitcoin

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 187.143.153.84 (talk) at 09:23, 25 May 2011 (NPOV on lack of central authority - upsides and downsides.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Bitcoin
Developer(s)Satoshi Nakamoto
Initial releaseFebruary 4, 2009 (2009-02-04)
Stable release
0.3.21 / April 27, 2011; 13 years ago (2011-04-27)
Written inC++
Operating systemWindows, Linux, Mac OS X
Available inEnglish, German, Spanish, French, Dutch, Portuguese, Italian and Russian.
TypeElectronic money
LicenseMIT License
Websitewww.bitcoin.org

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 has no central authority or issuer. Bitcoin uses a distributed database spread across nodes of a peer-to-peer network to journal transactions, and uses cryptography 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. Because of this, Bitcoin transactions are difficult to trace or regulate, making them attractive to sellers of illegal products such as drugs[1].

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.[2]

Bitcoin is one of the first implementations of a concept called 'cryptocurrency', first described in 1998 by Wei Dai on the cypherpunk mailing list.[3][citation needed]

Economics

Bitcoin
ISO 4217
Demographics
User(s)Transnational, Internet-based
Issuance
Central bankNone; decentralized, distributed
Valuation
InflationCurrently highly deflationary; predetermined currency supply limits[2]

As of May 2011 there are just over 6.2 million bitcoins in existence. The Bitcoin economy is in the beta stage of development. Bitcoins are currently accepted in some cases for online services, work for hire, tangible goods, and charitable donations.[6] The Free Software Foundation, Electronic Frontier Foundation and Singularity Institute accept Bitcoin donations.[7][8][9] Traders exchange regular currency (including US dollars, Russian rubles, and Japanese yen) for bitcoins through exchange sites.[10][self-published source?][11] Anyone can view the block-chain and observe transactions in real-time. Various services facilitate such monitoring.[12][13]

Monetary differences

Total Bitcoin supply over time.

As opposed to conventional fiat currency, Bitcoin has no centralized issuing authority.[14] There is a limited controlled expansion of the monetary base hardcoded in the Bitcoin software, but it is predictable and known to all parties in advance.[2] This lack of a central authority can be seen as an advantage, because inflation cannot be centrally manipulated to effect redistribution of value from general users. Others see it as a disadvantage, as a central bank can serve as a stabilizing influence and reduce exchange rate volatility. Most national currencies are also guaranteed to be usable in certain cases, such as paying the taxes of that nation; bitcoins have no such guaranteed use.

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.[2]

The total number of bitcoins is programmed to approach 21 million over time. The money supply is expected to grow as a geometric series every 210,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 could experience systematic price deflation (increase in real value) because of 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.[15] This geometric expansion, combined with the expansion of Bitcoin users, means that early adopters were able to "mine" more free bitcoins each than later adopters, and this trend will continue unless the number of users collapses. Thus, later nodes are expected to depend on their ability to competitively collect transaction fees to process transactions, rather than relying on the incentive of newly created bitcoins ("mining") to record transactions into blocks.[2]

Outcome

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."[16]

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.[17] 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."[16]

Bitcoin has a built-in deflation mechanism. As the supply of more bitcoins runs out and the 'Bitcoin economy' grows, the value of a single bitcoin increases. It is argued that the expectation that the value of bitcoins may grow may serve as an incentive to form an asset price bubble and a deterrent to using bitcoins as a "currency".[18] The USD exchange rate for bitcoins has increased by a hundredfold over the last eight months (from six cents to over six dollars), and by tenfold in bitcoin prices in the last six weeks.[19]

Technology

Bitcoin software running under Windows 7

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.[2]

Overview

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.

Addresses

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.[15] 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.

Transactions

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.[20] 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 sends 123.45 BTC to Bob, a public record is created that allows anyone to see that 123.45 was sent from one address to another. 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

The main chain (black) consists of the longest series of blocks from the genesis block (green) to the current block. Orphan blocks (grey) exist outside of the main chain.

To prevent double-spending, the network implements what Nakamoto describes as a peer-to-peer distributed timestamp server,[21] 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 broadcast 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,[22] 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.[23] 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.

Generation

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.[2] 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.[24] 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.[15] 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.[15][25][26] Users can also generate bitcoins collectively.[27]

So that one block gets generated every ten minutes[28], 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.[citation needed]

Transaction fees

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.[15]

Alternative implementations

Besides the original C++ Bitcoin client, there is an open source implementation of the Bitcoin protocol in Java called BitCoinJ developed by Mike Hearn, a Google engineer.[29]

Alternative user interfaces include bitcoin-js-remote, a JavaScript web user interface for Bitcoin wallets,[30] as well as Spesmilo, a PySide interface more open to a diversity of users which can run independently of an external wallet.[31]

See also

References

  1. ^ http://www.forbes.com/forbes/2011/0509/technology-psilocybin-bitcoins-gavin-andresen-crypto-currency.html
  2. ^ a b c d e f g Nakamoto, Satoshi (24 May 2009). Bitcoin: A Peer-to-Peer Electronic Cash System (PDF). Retrieved 14 December 2010.
  3. ^ http://weidai.com/bmoney.txt
  4. ^ "Current currency & funds code list". SNV-SIX Interbank Clearing. Retrieved 10 February 2010.
  5. ^ Bitcoin website. Main page, FAQ, and (extensively) Trade page all use the abbreviation "BTC".
  6. ^ "Bitcoin Trade". Bitcoin.org. Retrieved 22 December 2010.
  7. ^ Other ways to donate to the Free Software Foundation
  8. ^ EFF Bitcoin donation page
  9. ^ SIAI donation page
  10. ^ Bitcoin Charts
  11. ^ Thomas, Keir (10 October 2010). "Could the Wikileaks Scandal Lead to New Virtual Currency?". PC World. Retrieved 10 October 2010.
  12. ^ bitcoinwatch.com
  13. ^ bitcoinmonitor.com
  14. ^ Bitcoin FAQ
  15. ^ a b c d e Nathan Willis (10 November 2010). "Bitcoin: Virtual money created by CPU cycles". LWN.net.
  16. ^ a b O'Brien, Danny (26 November 2010). "Imagine your computer as a wallet full of Bitcoins". The Irish Times. Retrieved 19 December 2010.
  17. ^ Herpel, Mark (6 December 2010). "2011 Observations on the Digital Currency Industry". SSRN (Article for DGC magazine Jan2011). Retrieved 18 May 2011.
  18. ^ http://www.quora.com/Is-the-cryptocurrency-Bitcoin-a-good-idea
  19. ^ http://bitcoinweekly.com/articles/causes-behind-the-bitcoin-price-rally
  20. ^ https://en.bitcoin.it/wiki/Transactions
  21. ^ 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."
  22. ^ "Bitcoin Wiki: Block Hashing Algorithm".
  23. ^ "Bitcoin Block Explorer".
  24. ^ Luongo, Thomas (23 July 2010). "The FED's Real Monetary Problem". LewRockwell.com. Retrieved 12 October 2010.
  25. ^ DiabloMiner, OpenCL miner for BitCoin
  26. ^ poclbm, Python OpenCL bitcoin miner
  27. ^ Bitcoin Pooled Mining
  28. ^ https://en.bitcoin.it/wiki/Category:Mining
  29. ^ angry tapir, timothy (23 March 2011). "Google Engineer Releases Open Source Bitcoin Client". Slashdot. Retrieved 18 May 2011.
  30. ^ tcatm. "bitcoin-js-remote". GitHub. Retrieved 18 May 2011.
  31. ^ Spesmilo, PySide Bitcoin client