Bitcoin Core

Bitcoin Core

The start screen under Fedora
Original author(s) Satoshi Nakamoto
Developer(s) Bitcoin Core developers
Initial release 2009
Stable release 0.13.1 (October 27, 2016 (2016-10-27)) [±]
Repository github.com/bitcoin/bitcoin
Development status Active
Written in C++
Operating system Linux, Windows, OS X
Type Cryptocurrency
License MIT License
Website bitcoincore.org

Bitcoin Core is the open source client of the bitcoin cryptocurrency. Initially, the software was published by Satoshi Nakamoto under the name Bitcoin, then Bitcoin-Qt and later renamed to Bitcoin Core.[1] It is also known as the Satoshi client.[2] It is the reference implementation for bitcoin nodes that create the bitcoin network. Since its introduction the majority of bitcoin miners support its use.[3] In this way, the developers of Bitcoin Core are sanctioned to make changes to the underlying bitcoin protocol.[4] Bitcoin Core is maintained by Wladimir J. van der Laan.[5]

The MIT Digital Currency Initiative funds some of development of Bitcoin Core.[6] The project also maintains the cryptography library libsecp256k1 and others located at GitHub.[7] In August 2016, a warning was issued regarding the software being targeted by state-sponsored attackers.[5] The Bitcoin Foundation also warns that running the software may attract attacks which limit available download bandwidth.[8]

Features

It includes a transaction verification engine and connects to the bitcoin network as a full node.[2] Moreover a wallet, which can be used to transfer funds, is included by default.[7] The wallet allows for the sending and receiving of bitcoins. It does not facilitate the buying or selling of bitcoin. It allows users to generate QR codes to receive payment.

The software validates the entire blockchain, which includes all Bitcoin transactions ever. This distributed ledger which has reached more than 80 gigabytes in size must be downloaded or synchronised before full participation of the client may occur.[2] A command line-based daemon with a JSON-RPC interface, bitcoind, is bundled with Bitcoin Core. It provides access to testnet, a global testing environment that imitates the bitcoin main network or Mainnet. It uses an alternative blockchain where real bitcoin are not used and the blockchain cannot be adversely affected. Regtest or Regression Test Mode creates a private blockchain which is used as a local testing environment.[9] bitcoin-cli is the third program included. It allows users to send RPC commands to bitcoind.

Checkpoints have been hard corded into the client.[10] These maintain data integrity by keeping a part of the block chain data in the source code where it is able to be compared to the blockchain when its downloading is complete.[11] A one megabyte block size limit was added in 2010 by Satoshi Nakamoto as a temporary anti-spam measure. This limited the maximum network capacity to about three transactions per second.[12] Since then, some minor changes to the software have improved network capacity incrementally. A network alert system was included by Satoshi Nakamoto as a way of informing users of important news regarding Bitcoin.[13] In November 2016 it was retired. It had become obsolete as news on Bitcoin is now widely dissemenated. Miners are able to signal their decision on the incorporation of new features by voting.

A powerful scripting language is used to define transactions. This Forth-like language is part of one of three distinct application programming interfaces.[14] It can enable various transaction parameters. The script uses reverse Polish notation for validation. ScriptPubKey is used to "lock" transactions based on a set of future conditions. scriptSig is used to meet these conditions or "unlock" a transaction. Operations on the data are performed by various OP_Codes. Two stacks are used - main and alt. Looping is forbidden.

Development

The original creator of the bitcoin client has described their approach to the software's authorship as it being written first to prove to themselves that the concept of purely peer-to-peer electronic cash was valid and that a paper with solutions could be written.[15] While the majority of peers on the network may use Bitcoin Core, the developers' influence on bitcoin is limited by the choice of which implementation people voluntarily decide to use.[16] The lead developer is Wladimir J. van der Laan, who took over the role on 8 April 2014.[17] Gavin Andresen was the former lead maintainer for the software client. Andresen left the role of lead developer for bitcoin to work on the strategic development of its technology.[17]

Because there is no formal structure development is based around Bitcoin Improvement Proposals or BIPs which are similar to Request for Comments. Public mailing lists are used to vet initial expressions of ideas.[18] If enough support is displayed a BIP document is written. This is the standard for sharing ideas and gaining community feedback on improving bitcoin and was initiated by Amir Taaki in 2011.

The roadmap for the client includes data link layer solutions. Bitcoin Core is one of many Bitcoin full node software. It's competition includes Bitcoin XT and Bitcoin Classic. Both are derived from Bitcoin Core and contain implementation of hard fork proposals. These software forks allow bitcoin miners to demonstrate their vote on the direction of bitcoin's development.

External video
Visualization of code changes during 2015

Core developers prefer to gradually enlarge Bitcoin's transaction handling capabilities.[19] The developers believe in the premise that barriers to running a full node should be kept low as possible so that the blockchain layer at the very lowest level remains highly decentralized.[20]

Version history

Between 2011 and 2013 new versions of the software were released at Bitcoin.org.[21] Developers wanted to differentiate themselves as creators of software rather than advocates for bitcoin and so now maintain bitcoincore.org for just the software.

Bitcoin 0.1 was released on 9 January 2009 with only Windows supported.[22] This was followed by some minor bug fixing versions. On 16 December 2009 Bitcoin 0.2 was released. It included a Linux version for the first time and made use of multi-core processors for mining.[22] In version 0.3.2 Nakamoto included checkpoints as a safeguard. After the release of version 0.3.9 Satoshi Nakamoto left the project[22] and shortly after stopped communicating on online forums. By this time development of the software was being undertaken by a wide group of independent developers which is referred to as a community, many of whom had various ideas on how to improve Bitcoin.[22]

Bitcoin-Qt version 0.5.0 was released on 1 November 2011. It introduced a front end that uses the Qt user interface toolkit.[23] The software previously used Berkeley DB for database management. Developers switched to LevelDB in release 0.8 in order to reduce blockchain synchronization time.[24] The update to this release resulted in a minor blockchain fork on the 11 March 2013. The fork was resolved shortly afterwards.[24] Seeding nodes through IRC was discontinued in version 0.8.2. From version 0.9.0 the software was renamed to Bitcoin Core. Although Bitcoin Core does not use OpenSSL for the operation of the network, the software did use OpenSSL for remote procedure calls. Version 0.9.1 was released to remove the networks vulnerability to the Heartbleed bug.[25]

Release 0.10 was made public on 16 February 2015.[26] It introduced a consensus library which gave programmers easy access to the rules governing consensus on the network. The developers have stated that for consensus on soft forks a super-majority of 95% of hash power is required for agreement.[27] In version 0.11.2 developers added a new feature which allowed transactions to be made unspendable until a specific time in the future.[28] Bitcoin Core 0.12.1 was released on April 15, 2016 and enabled multiple soft forks to occur concurrently.[29] Around 100 contributors worked on Bitcoin Core 0.13.0 which was released on 23 August 2016. It introduced more than ten significant changes.[30]

In October 2016, Bitcoin Core’s 0.13.1 release featured a soft fork that included a scaling improvement aiming to optimize the Bitcoin blocksize.[31] 35 developers were engaged to deploy the patch which was originally finalised in April.[32] This release featured the activation of Segregated Witness (SegWit) which aimed to place downward pressure on transaction fees as well as increase the maximum transaction capacity of the network.[33] Estimates place the total block size using SegWit at about 1.7 mb.[34] The 0.13.1 release endured extensive testing and research leading to some delays in its release date.[3] Segwit aims to prevent various forms of transaction malleability.[35] Segwit cannot be activated until ~95% of miners using Bitcoin Core concurrently agree to its use.[36]

See also

References

  1. Rebranding to Bitcoin Core. Bitcoin Project. Retrieved 8 November 2016.
  2. 1 2 3 Antonopoulos, Andreas M. (2014). Mastering Bitcoin: Unlocking Digital Cryptocurrencies. O'Reilly Media, Inc. p. 31-32. ISBN 1491902647. Retrieved 6 November 2016.
  3. 1 2 Joseph Young (3 November 2016). "Bitcoin Core is Most Talented Dev Team, Says VC". The Coin Telegraph. Retrieved 7 November 2016.
  4. Gervais, Arthur; Ghassan O. Karame; Srdjan Capkun; Vedran Capkun. "Is Bitcoin a Decentralized Currency" (PDF). pp. 4–5. Retrieved 9 September 2016.
  5. 1 2 "0.13.0 Binary Safety Warning". Bitcoin Project. 17 August 2016. Retrieved 8 November 2016.
  6. Brian Forde (5 April 2016). "Welcome to the MIT Media Lab, Gavin, Wlad, and Cory". Coindesk. Retrieved 7 November 2016.
  7. 1 2 Bitcoin Core: About. Retrieved 8 November 2016.
  8. "Running A Full Node". Bitcoin Project. Retrieved 9 November 2016.
  9. "Bitcoin Developer Examples". Bitcoin Core. Retrieved 14 November 2016.
  10. "checkpoints.cpp". Repository source code. GitHub, Inc. Retrieved 13 November 2016.
  11. David Gilsom (28 August 2013). "Feathercoin secures its block chain with advanced checkpointing". CoinDesk. Retrieved 13 November 2016.
  12. Mike Orcutt (19 May 2015). "Leaderless Bitcoin Struggles to Make Its Most Crucial Decision". MIT Technology Review. Retrieved 15 November 2016.
  13. "Alert System Retirement". Bitcoin Project. 1 November 2016. Retrieved 16 November 2016.
  14. "Bitcoin is a money platform with many APIs". Radar. O'Reilly. 29 May 2013. Retrieved 19 November 2016.
  15. "Re: Bitcoin P2P e-cash paper". The Cryptography Mailing List. Satoshi Nakamoto Institute. 9 October 2016. Retrieved 13 November 2016.
  16. Aaron van Wirdum (7 September 2016). "A Primer on Bitcoin Governance, or Why Developers Aren't in Charge of the Protocol". Bitcoin Magazine. BTC Inc. Retrieved 13 November 2016.
  17. 1 2 Preukschat, Alex; Josep Busquet (2015). Bitcoin: The Hunt of Satoshi Nakamoto. Europe Comics. p. 87. ISBN 9791032800201. Retrieved 16 November 2016.
  18. Bailey Reutzel (14 May 2016). "Bitcoin Core is Seeking to Overhaul How it Upgrades its Code". Coindesk. Retrieved 7 November 2016.
  19. Ian Allison (28 October 2016). "If Bitcoin hard forked over block size, what would the market decide?". International Business Times. IBTimes Co. Retrieved 7 November 2016.
  20. Kyle Torpey (4 March 2016). "Four Key Disagreements Between Bitcoin Classic and Bitcoin Core". Bitcoin Magazine. BTC Inc. Retrieved 7 November 2016.
  21. "About bitcoin.org". Bitcoin Project. Retrieved 14 November 2016.
  22. 1 2 3 4 "History of Cryptocurrency, Part I: From Bitcoin's Inception to the Crypto-Boom". The CoinTelegraph. 4 November 2015. Retrieved 13 November 2016.
  23. "Bitcoin-Qt version 0.5.0 released". Bitcoin Project. 1 November 2011. Retrieved 13 November 2016.
  24. 1 2 Vitalik Buterin (13 March 2013). "Bitcoin Network Shaken by Blockchain Fork". Bitcoin Magazine. BTC Inc. Retrieved 7 November 2016.
  25. Venzen Khaosan (8 April 2014). "OpenSSL Heartbleed Security Bug "Massive"". cryptocoin news. Retrieved 16 November 2016.
  26. Joon Ian Wong (17 February 2015). "Bitcoin Core 0.10 Gives Developers Simplified Access to Network Consensus". Coindesk. Retrieved 7 November 2016.
  27. Aaron van Wirdum (26 February 2016). "Why Some Changes to Bitcoin Require Consensus: Bitcoin's 4 Layers". Bitcoin Magazine. BTC Inc. Retrieved 15 November 2016.
  28. "Bitcoin Core version 0.11.2 released". Bitcoin Project. 13 November 2015. Retrieved 14 November 2016.
  29. Kyle Torpey (15 April 2016). "Bitcoin Core 0.12.1 Released, Major Step Forward for Scalability". Bitcoin Magazine. NASDAQ.com. Retrieved 7 November 2016.
  30. Aaron van Wirdum (22 August 2016). "What's New in Bitcoin Core 0.13.0?". Bitcoin Magazine. BTC Inc. Retrieved 7 November 2016.
  31. Joseph Young (18 October 2016). "Ready, Steady, Fork: Bitcoin Core to Release SegWit in November". Retrieved 7 November 2016.
  32. Luke Parker (29 October 2016). "Bitcoin scaling solution, Segwit, released". Brave New Coin. Retrieved 7 November 2016.
  33. "Bitcoin Core 0.13.1". Bitcoin Core. Retrieved 25 October 2016.
  34. Scott Fargo (29 October 2016). "Bitcoin Core 0.13.1 Enables SegWit to Ease Block Sizes". Bitcoin.com. Saint Bitts LLC. Retrieved 7 November 2016.
  35. "Segregated Witness Benefits". Bitcoin Core. Retrieved 14 November 2016.
  36. BIP 0009
This article is issued from Wikipedia - version of the 11/22/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.