Bitcoin

From Cibernética Americana
Bitcoin
Bitcoin.png
Developer(s) Satoshi Nakamoto
Initial release Template:MONTHNAME 4, 2009 (2009-02-04)
Stable release 0.3.21 / Template:Start date and age
Development status Beta
Written in en:C++
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.
Type en:Electronic money
License en:MIT License
Website template:str right

Dominion Lede

This article was forked from the English wiki on 2011-05-06. I intended then to adapt the bitcoin system as the basis of my long awaited token economy. The BTC system, expresses economic assumptions and thinking which I don't endorse, typically failed analogies or assumptions about fundamentals of value and market operations.

Subsequently, I came to see little value in the project as I could not get past the perception that it conflated the store of value function of money and computability/cryptographic properties of the scheme together with other questionable implicit assumptions. Projects supported by living developers can change though, so this page preserves the state against which this value judgment was made, it can be revisited later, if appropriate.

English Lede

Bitcoin is a en:digital currency created in 2009 by Satoshi Nakamoto. The name also refers to the en: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 en:distributed database spread across nodes of a en:peer-to-peer network to journal transactions, and uses en: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 en:inflation by producing more of them.

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

Economics

As of 2011-5 there are just over 6 million Bitcoins in existence. At current prices, the total value of the Bitcoin economy is about 22 million USD.[2]

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.[3] The en:Electronic Frontier Foundation and en:Singularity Institute accept bitcoin donations.[4][5] Traders exchange regular currency (including US dollars, Russian rubles, and Japanese yen) for bitcoins through exchange sites.[6][self-published source?][7] Anyone can view the block-chain and observe transactions in real-time. Various services facilitate such monitoring.[8][9]

Monetary differences

Bitcoin
ISO 4217 Code none;[10] BTC used colloquially[11]
User(s) Supranational, Internet-based
Inflation Approximately predetermined[12]
Central bank None; decentralized, distributed

As opposed to conventional en:fiat currency, the bitcoin differs in that no overseer can control the value due to its decentralized nature,[13] 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.[12] Inflation cannot therefore be centrally manipulated to effect redistribution of value from general users.

 
Total Bitcoin supply over time.

Transfers are facilitated directly without the use of a financial processor between nodes. This type of transaction makes en: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.[12]

The total number of bitcoins tends to 21 million over time. The money supply grows as a en: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 en: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.[14] 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.[12]

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

The decentralization and anonymity embodied by Bitcoin appears to be a reaction to the U.S. government's prosecution of digital currency companies like en:e-gold and en:Liberty Dollar.[16] 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."[15]

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

Overview

Bitcoin relies on the transfer of amounts between public accounts using en:public key cryptography. All transactions are public and stored in a en:distributed database which is used to confirm transactions and prevent en:double-spending.

Addresses

Any person participating in the bitcoin network has a en:wallet containing an arbitrary number of cryptographic en:keypairs. The en: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.[14] 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.[17] 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

 
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 en:double-spending, the network implements what Nakamoto describes as a peer-to-peer distributed timestamp server,[18] 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,[19] 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.[20] 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 en: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.

Generating bitcoins

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 en:gold mining.[12] 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.[21] 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.[14] 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 en: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 en:CPUs using the standard client or use other software to take advantage of their en:GPUs.[14][22][23] Users can also generate bitcoins collectively.[24]

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.

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

Alternative implementations

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

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

See also

References

  1. http://weidai.com/bmoney.txt
  2. [1]
  3. "Bitcoin Trade". Bitcoin.org. Archived from the original on 22 December 2010. http://www.bitcoin.org/trade. 
  4. EFF Bitcoin donation page
  5. SIAI donation page
  6. Bitcoin Charts
  7. Thomas, Keir (2010-10-10). "Could the Wikileaks Scandal Lead to New Virtual Currency?". en:PC World. Archived from the original on 2010-10-10. http://www.pcworld.com/businesscenter/article/213230/could_the_wikileaks_scandal_lead_to_new_virtual_currency.html. 
  8. bitcoinwatch.com
  9. bitcoinmonitor.com
  10. "Current currency & funds code list". SNV-SIX Interbank Clearing. Archived from the original on 10 February 2010. http://www.currency-iso.org/iso_index/iso_tables/iso_tables_a1.htm. 
  11. Bitcoin website. Main page, FAQ, and (extensively) Trade page all use the abbreviation "BTC".
  12. 12.0 12.1 12.2 12.3 12.4 12.5 Nakamoto, Satoshi (24 May 2009). Bitcoin: A Peer-to-Peer Electronic Cash System. http://www.bitcoin.org/sites/default/files/bitcoin.pdf. 
  13. Bitcoin FAQ
  14. 14.0 14.1 14.2 14.3 14.4 Nathan Willis. "Bitcoin: Virtual money created by CPU cycles". en:LWN.net. Archived from the original on 2010-11-10. http://lwn.net/Articles/414452/. 
  15. 15.0 15.1 O'Brien, Danny (26 November 2010). "Imagine your computer as a wallet full of Bitcoins". en:The Irish Times. Archived from the original on 19 December 2010. http://www.irishtimes.com/newspaper/finance/2010/1126/1224284180416.html. 
  16. Herpel, Mark (6 December 2010). "2011 Observations on the Digital Currency Industry". SSRN (Article for DGC magazine Jan2011). Archived from the original on 19 December 2010. http://ssrn.com/abstract=1721076. 
  17. https://en.bitcoin.it/wiki/Transactions
  18. 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."
  19. "Bitcoin Wiki: Block Hashing Algorithm". Archived from the original on dd mm yyyy. http://www.bitcoin.org/wiki/doku.php?id=block_hashing_algorithm. 
  20. "Bitcoin Block Explorer". Archived from the original on dd mm yyyy. http://blockexplorer.com/. 
  21. Luongo, Thomas (2010-07-23). "The FED’s Real Monetary Problem". en:LewRockwell.com. Archived from the original on 2010-10-12. http://www.lewrockwell.com/orig6/luongo7.1.1.html. 
  22. DiabloMiner, OpenCL miner for BitCoin
  23. poclbm, Python OpenCL bitcoin miner
  24. Bitcoin Pooled Mining
  25. angry tapir, timothy (23 March 2011). "Google Engineer Releases Open Source Bitcoin Client". en:Slashdot. Archived from the original on 29 March 2011. http://news.slashdot.org/story/11/03/23/0210207/Google-Engineer-Releases-Open-Source-Bitcoin-Client. 
  26. tcatm. "bitcoin-js-remote". en:GitHub. Archived from the original on 29 March 2011. https://github.com/tcatm/bitcoin-js-remote. 
  27. Spesmilo, PySide Bitcoin client

External links