Difference between revisions of "Bitcoin Core"

From Bitcoin Wiki
Jump to: navigation, search
(cleaned up page a little bit, added emphasis on the fact that bitcoin core is a full node)
(Features: remove block size discussion not specific to bitcoin core, move network alert to new bullet point)
 
(8 intermediate revisions by 4 users not shown)
Line 23: Line 23:
 
* Payment requests (BIP 70)
 
* Payment requests (BIP 70)
 
* Coin control
 
* Coin control
 +
* Bitcoin Core uses OpenTimestamps.org to timestamp merge commits.<ref>{{cite web|url=https://github.com/bitcoin/bitcoin/blob/ebd786b72a2a15143d7ef4ea2229fef121bd8f12/contrib/devtools/README.md#create-and-verify-timestamps-of-merge-commits|title=Bitcoin Core devtools README - Create and verify timestamps of merge commits|date=|website=GitHub|archive-url=|archive-date=|accessdate=May 5, 2018}}</ref>
 +
* Checkpoints which have been hard coded into the client are used only to prevent Denial of Service attacks against nodes which are initially syncing the chain. For this reason the checkpoints included are only as of several years ago.<ref name="check">{{cite web |url=https://github.com/bitcoin/bitcoin/blob/master/src/checkpoints.cpp |title=checkpoints.cpp |work=Repository source code |publisher=GitHub, Inc. |accessdate=13 November 2016 }}</ref><ref>{{cite web |title=bitcoin/chainparams.cpp |url=https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp |website=GitHub |accessdate=21 October 2018}}</ref>
 +
* A network alert system was included by Satoshi Nakamoto as a way of informing users of important news regarding bitcoin.<ref name="asr">{{cite web |url=https://bitcoin.org/en/alert/2016-11-01-alert-retirement |title=Alert System Retirement |date=1 November 2016 |publisher=Bitcoin Project |accessdate=16 November 2016 }}</ref> In November 2016 it was retired. It had become obsolete as news on bitcoin is now widely disseminated.
 +
 +
== Naming Controversy ==
 +
 +
Some people like Peter Todd, Luke-jr and Greg Maxwell warned against the renaming to Bitcoin Core because it implied a centralization.<ref>https://www.reddit.com/r/Bitcoin/comments/60jmq2/a_proposal_for_and_demo_of_a_new_bitcoin_address/df73k2h/</ref><ref>https://www.reddit.com/r/Bitcoin/comments/60owl3/did_you_know_that_bitcoin_core_opposed_its_own/</ref><ref>https://bitcoinfoundation.org/forum/index.php?/topic/95-new-name-for-bitcoin-qt-bitcoind/&</ref>.
 +
 +
Bitcoin Core right now may be the most popular or "reference" [[full node]] implementation, but that status depends on the [[economic majority]] continuing to use it<ref>https://bitcoinmagazine.com/articles/a-primer-on-bitcoin-governance-or-why-developers-aren-t-in-charge-of-the-protocol-1473270427/</ref>. Should one day come where another implementation overtakes it economically, that implementation would become the reference implementation. In one situation in 2017 significant parts of the economy moved to the BIP148 [[UASF]] implementation<ref>https://bitcoinmagazine.com/articles/long-road-segwit-how-bitcoins-biggest-protocol-upgrade-became-reality/</ref> and then moved back to Core after BIP148 was successful. The point here is that Bitcoin Core does not control bitcoin and the naming "Core" is misleading in that respect.
 +
 +
On the other hand, many people are happy with the name Bitcoin Core and continue to use it. As long as it's emphasized that Bitcoin Core is just one possible software implementation of bitcoin that people are free to use or not use.
 +
 +
==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. The lead developer is Wladimir J. van der Laan, who took over the role on 8 April 2014.<ref name="hunt"/> [[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.<ref name="hunt">Bitcoin: The Hunt of Satoshi Nakamoto, Alex Preukschat, Josep Busquet, 2015, Europe Comics, ISBN 9791032800201, page 87 [https://play.google.com/store/books/details?id=438FCwAAQBAJ]</ref> Bitcoin Core developers have been in charge of bitcoin's development since [[Satoshi Nakamoto]] left the project.<ref name="wtbf">{{Cite news |url=https://www.forbes.com/sites/laurashin/2017/10/23/will-this-battle-for-the-soul-of-bitcoin-destroy-it/#62d19db23d3c |title=Will This Battle For The Soul Of Bitcoin Destroy It? |author=Laura Shin |accessdate=14 April 2018 |date=23 October 2017 |work=Forbes }}</ref> Bitcoin Core in 2015 was central to a dispute with [[Bitcoin XT]], a competing client that sought to increase the blocksize.<ref name="NewYorker">{{Cite news |url=https://www.newyorker.com/business/currency/inside-the-fight-over-bitcoins-future
 +
|title=Inside the Fight Over Bitcoin’s Future |author=Maria Bustillos |accessdate=29 June 2020 |date=25 August 2015 |work=New Yorker}}</ref> Over a dozen different companies and industry groups fund the development of Bitcoin Core.<ref>{{cite web|url=https://blog.bitmex.com/who-funds-bitcoin-development/|title=Who Funds Bitcoin Development?|date=2020-03-28|publisher=BitMex Research|access-date=2020-06-30}}</ref>
 +
 +
[https://www.youtube.com/watch?v=FIt7GLxxIpY Visualization of code changes during 2015]
 +
 +
==Version history==
 +
Bitcoin 0.1 was released on 9 January 2009 by Satoshi Nakamoto with only Windows supported. 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. In version 0.3.2 Nakamoto included checkpoints as a safeguard. After the release of version 0.3.9, Satoshi Nakamoto left the project and shortly after stopped communicating on online forums.
 +
 +
Between 2011 and 2013 new versions of the software were released at Bitcoin.org.<ref name="abo">{{cite web |url=https://bitcoin.org/en/about-us#sponsorship |title=About bitcoin.org |publisher=Bitcoin Project |accessdate=14 November 2016 }}</ref> 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-Qt version 0.5.0 was released on 1 November 2011. It introduced a front end that uses the Qt user interface toolkit.<ref name="bqt">{{cite web |url=https://bitcoin.org/en/release/v0.5.0 |title=Bitcoin-Qt version 0.5.0 released |date=1 November 2011 |publisher=Bitcoin Project |accessdate=13 November 2016 }}</ref> The software previously used Berkeley DB for database management. Developers switched to LevelDB in release 0.8 in order to reduce blockchain synchronization time ([[initial block download]], beware, a misnomer). The update to this release resulted in a minor blockchain fork on the 11 March 2013. The fork was resolved shortly afterwards. Seeding nodes through Internet Relay Chat was discontinued in version 0.8.2. From version 0.9.0 the software was renamed to Bitcoin Core. Transaction fees were reduced again by a factor of ten as a means to encourage microtransactions. 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 network's vulnerability to the Heartbleed bug.
 +
 +
Release 0.10 was made public on 16 February 2015. It introduced a consensus library which gave programmers easy access to the rules governing consensus on the network. In version 0.11.2 developers added a new feature which allowed transactions to be made unspendable until a specific time in the future.<ref name="v0.11.2">{{cite web |url=https://bitcoin.org/en/release/v0.11.2 |title=Bitcoin Core version 0.11.2 released |date=13 November 2015 |publisher=Bitcoin Project |accessdate=14 November 2016 }}</ref> Bitcoin Core 0.12.1 was released on April 15, 2016 and enabled multiple soft forks to occur concurrently.<ref name="0.12.1rel">{{Cite news |url=http://www.nasdaq.com/article/bitcoin-core-0121-released-major-step-forward-for-scalability-cm607209 |title=Bitcoin Core 0.12.1 Released, Major Step Forward for Scalability |author=Kyle Torpey |accessdate=7 November 2016 |date=15 April 2016 |work=Bitcoin Magazine |publisher=NASDAQ.com }}</ref> Around 100 contributors worked on Bitcoin Core 0.13.0 which was released on 23 August 2016.
 +
 +
In July 2016, the CheckSequenceVerify soft fork activated.<ref>Mastering Bitcoin: Programming the Open Blockchain. Quote "BIP-68 and BIP-112 were activated in May 2016 as a soft fork upgrade to the consensus rules."</ref>
 +
 +
In October 2016, Bitcoin Core’s 0.13.1 release featured the "[[Segwit]]" soft fork that included a scaling improvement aiming to optimize the bitcoin blocksize. The patch which was originally finalised in April, and 35 developers were engaged to deploy it. This release featured Segregated Witness ([[SegWit]]) which aimed to place downward pressure on transaction fees as well as increase the maximum transaction capacity of the network.<ref name="rel13.1">{{cite web |url=https://bitcoincore.org/en/releases/0.13.1/ |title=Bitcoin Core 0.13.1 |publisher=Bitcoin Core |accessdate=25 October 2016 }}</ref> The 0.13.1 release endured extensive testing and research leading to some delays in its release date. SegWit prevents various forms of transaction malleability.<ref name="swb">{{cite web|url=https://bitcoincore.org/en/2016/01/26/segwit-benefits/|title=Segregated Witness Benefits|last=|first=|date=January 26, 2016|work=Bitcoin Core|archive-url=|archive-date=|accessdate=October 20, 2018}}</ref>
 +
 +
In September 2018, a Bitcoin Cash developer discovered the vulnerability CVE 2018-17144 in the Bitcoin Core software that could allow an attacker to crash vulnerable Bitcoin Core nodes and exceed the 21 million coin limit.<ref>{{Cite news|url=https://bitcoincore.org/en/2018/09/20/notice/|title=CVE-2018-17144 Full Disclosure|work=Bitcoin Core|access-date=2018-09-23|language=en}}</ref>
 +
 +
==Bitcoin Improvement Proposals==
 +
A [[Bitcoin Improvement Proposal]] (BIP) is a design document, typically describing a new feature for Bitcoin with a concise technical specification of the feature and the rationale for it. Bitcoin Core implements some of these design documents.
 +
 +
==See also==
 +
 +
* [[bitcoind]]
 +
* [[Full node]]
 +
* [[Bitcoin Knots]]
 +
* [[QBitcoin]]
  
 
==External Links==
 
==External Links==
Line 32: Line 74:
 
* [https://github.com/bitcoin/bitcoin Current GitHub repository shared with bitcoind]
 
* [https://github.com/bitcoin/bitcoin Current GitHub repository shared with bitcoind]
  
<references
+
== References ==
  
/>
+
<references/>
 
 
==See also==
 
 
 
* [[Full node]]
 
* [[QBitcoin]]
 
* [[bitcoind]]
 
  
 
[[es:Bitcoin-Qt]]
 
[[es:Bitcoin-Qt]]

Latest revision as of 17:12, 30 June 2020

Bitcoin Core (formerly Bitcoin-Qt) is the third Bitcoin client, developed by Wladimir van der Laan based on the original reference code by Satoshi Nakamoto.[1][2] It has been bundled with bitcoind since version 0.5. Bitcoin-Qt has been rebranded to Bitcoin Core since version 0.9.0 [3].

Bitcoin Core can be used as a desktop client for regular payments or as a server utility for merchants and other payment services.

Current version

Source code (and build instructions for supported platforms) can be found on the Bitcoin GitHub page.

Features

  • Most popular software implementation of a bitcoin full node. Provides trustless validation that all of bitcoin's consensus rules are being followed.
  • Has an RPC interface allowing developers to interface with Core and access the bitcoin currency trustlessly.
  • Has a GUI frontend, Bitcoin-Qt, allowing ordinary users to use bitcoin with full validation.
  • Compatibility with Linux (both GNOME and KDE), Mac OS X and Windows
  • All functionality of the original wxWidgets client
  • Asks for confirmation before sending coins
  • CSV export of transactions
  • Clearer transaction list with status icons and real-time filtering
  • Progress bar on initial block download
  • Languages: Dutch, English, German, Chinese and many more. Translations are being done by volunteers on Transifex.
  • Sendmany support in UI (send to multiple recipients in one transaction)
  • Multiple unit support, can show subdivided bitcoins (mBTC, µBTC) for users that like large numbers (only decimal units)
  • Splash screen that details progress
  • Debug window
  • Payment requests (BIP 70)
  • Coin control
  • Bitcoin Core uses OpenTimestamps.org to timestamp merge commits.[4]
  • Checkpoints which have been hard coded into the client are used only to prevent Denial of Service attacks against nodes which are initially syncing the chain. For this reason the checkpoints included are only as of several years ago.[5][6]
  • A network alert system was included by Satoshi Nakamoto as a way of informing users of important news regarding bitcoin.[7] In November 2016 it was retired. It had become obsolete as news on bitcoin is now widely disseminated.

Naming Controversy

Some people like Peter Todd, Luke-jr and Greg Maxwell warned against the renaming to Bitcoin Core because it implied a centralization.[8][9][10].

Bitcoin Core right now may be the most popular or "reference" full node implementation, but that status depends on the economic majority continuing to use it[11]. Should one day come where another implementation overtakes it economically, that implementation would become the reference implementation. In one situation in 2017 significant parts of the economy moved to the BIP148 UASF implementation[12] and then moved back to Core after BIP148 was successful. The point here is that Bitcoin Core does not control bitcoin and the naming "Core" is misleading in that respect.

On the other hand, many people are happy with the name Bitcoin Core and continue to use it. As long as it's emphasized that Bitcoin Core is just one possible software implementation of bitcoin that people are free to use or not use.

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. The lead developer is Wladimir J. van der Laan, who took over the role on 8 April 2014.[13] 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.[13] Bitcoin Core developers have been in charge of bitcoin's development since Satoshi Nakamoto left the project.[14] Bitcoin Core in 2015 was central to a dispute with Bitcoin XT, a competing client that sought to increase the blocksize.[15] Over a dozen different companies and industry groups fund the development of Bitcoin Core.[16]

Visualization of code changes during 2015

Version history

Bitcoin 0.1 was released on 9 January 2009 by Satoshi Nakamoto with only Windows supported. 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. In version 0.3.2 Nakamoto included checkpoints as a safeguard. After the release of version 0.3.9, Satoshi Nakamoto left the project and shortly after stopped communicating on online forums.

Between 2011 and 2013 new versions of the software were released at Bitcoin.org.[17] 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-Qt version 0.5.0 was released on 1 November 2011. It introduced a front end that uses the Qt user interface toolkit.[18] The software previously used Berkeley DB for database management. Developers switched to LevelDB in release 0.8 in order to reduce blockchain synchronization time (initial block download, beware, a misnomer). The update to this release resulted in a minor blockchain fork on the 11 March 2013. The fork was resolved shortly afterwards. Seeding nodes through Internet Relay Chat was discontinued in version 0.8.2. From version 0.9.0 the software was renamed to Bitcoin Core. Transaction fees were reduced again by a factor of ten as a means to encourage microtransactions. 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 network's vulnerability to the Heartbleed bug.

Release 0.10 was made public on 16 February 2015. It introduced a consensus library which gave programmers easy access to the rules governing consensus on the network. In version 0.11.2 developers added a new feature which allowed transactions to be made unspendable until a specific time in the future.[19] Bitcoin Core 0.12.1 was released on April 15, 2016 and enabled multiple soft forks to occur concurrently.[20] Around 100 contributors worked on Bitcoin Core 0.13.0 which was released on 23 August 2016.

In July 2016, the CheckSequenceVerify soft fork activated.[21]

In October 2016, Bitcoin Core’s 0.13.1 release featured the "Segwit" soft fork that included a scaling improvement aiming to optimize the bitcoin blocksize. The patch which was originally finalised in April, and 35 developers were engaged to deploy it. This release featured Segregated Witness (SegWit) which aimed to place downward pressure on transaction fees as well as increase the maximum transaction capacity of the network.[22] The 0.13.1 release endured extensive testing and research leading to some delays in its release date. SegWit prevents various forms of transaction malleability.[23]

In September 2018, a Bitcoin Cash developer discovered the vulnerability CVE 2018-17144 in the Bitcoin Core software that could allow an attacker to crash vulnerable Bitcoin Core nodes and exceed the 21 million coin limit.[24]

Bitcoin Improvement Proposals

A Bitcoin Improvement Proposal (BIP) is a design document, typically describing a new feature for Bitcoin with a concise technical specification of the feature and the rationale for it. Bitcoin Core implements some of these design documents.

See also

External Links

References

  1. https://gavintech.blogspot.co.uk/2012/03/full-disclosure-bitcoin-qt-on-windows.html, Full disclosure: Bitcoin-Qt on Windows vulnerability, 21st October 2012
  2. https://nvd.nist.gov/vuln/detail/CVE-2012-4682, Vulnerability Summary for CVE-2012-4682, 21st October 2012
  3. "Bitcoin Core version 0.9.0 released". Bitcoin.org. https://bitcoin.org/en/release/v0.9.0. Retrieved 19 March 2014.
  4. "Bitcoin Core devtools README - Create and verify timestamps of merge commits". https://github.com/bitcoin/bitcoin/blob/ebd786b72a2a15143d7ef4ea2229fef121bd8f12/contrib/devtools/README.md#create-and-verify-timestamps-of-merge-commits. Retrieved May 5, 2018.
  5. "checkpoints.cpp". Repository source code. GitHub, Inc.. https://github.com/bitcoin/bitcoin/blob/master/src/checkpoints.cpp. Retrieved 13 November 2016.
  6. "bitcoin/chainparams.cpp". https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp. Retrieved 21 October 2018.
  7. "Alert System Retirement". Bitcoin Project. 1 November 2016. https://bitcoin.org/en/alert/2016-11-01-alert-retirement. Retrieved 16 November 2016.
  8. https://www.reddit.com/r/Bitcoin/comments/60jmq2/a_proposal_for_and_demo_of_a_new_bitcoin_address/df73k2h/
  9. https://www.reddit.com/r/Bitcoin/comments/60owl3/did_you_know_that_bitcoin_core_opposed_its_own/
  10. https://bitcoinfoundation.org/forum/index.php?/topic/95-new-name-for-bitcoin-qt-bitcoind/&
  11. https://bitcoinmagazine.com/articles/a-primer-on-bitcoin-governance-or-why-developers-aren-t-in-charge-of-the-protocol-1473270427/
  12. https://bitcoinmagazine.com/articles/long-road-segwit-how-bitcoins-biggest-protocol-upgrade-became-reality/
  13. 13.0 13.1 Bitcoin: The Hunt of Satoshi Nakamoto, Alex Preukschat, Josep Busquet, 2015, Europe Comics, ISBN 9791032800201, page 87 [1]
  14. Laura Shin (23 October 2017). "Will This Battle For The Soul Of Bitcoin Destroy It?". Forbes. https://www.forbes.com/sites/laurashin/2017/10/23/will-this-battle-for-the-soul-of-bitcoin-destroy-it/#62d19db23d3c. Retrieved 14 April 2018.
  15. Maria Bustillos (25 August 2015). "Inside the Fight Over Bitcoin’s Future". New Yorker. https://www.newyorker.com/business/currency/inside-the-fight-over-bitcoins-future. Retrieved 29 June 2020.
  16. "Who Funds Bitcoin Development?". BitMex Research. 2020-03-28. https://blog.bitmex.com/who-funds-bitcoin-development/.
  17. "About bitcoin.org". Bitcoin Project. https://bitcoin.org/en/about-us#sponsorship. Retrieved 14 November 2016.
  18. "Bitcoin-Qt version 0.5.0 released". Bitcoin Project. 1 November 2011. https://bitcoin.org/en/release/v0.5.0. Retrieved 13 November 2016.
  19. "Bitcoin Core version 0.11.2 released". Bitcoin Project. 13 November 2015. https://bitcoin.org/en/release/v0.11.2. Retrieved 14 November 2016.
  20. Kyle Torpey (15 April 2016). "Bitcoin Core 0.12.1 Released, Major Step Forward for Scalability". Bitcoin Magazine (NASDAQ.com). http://www.nasdaq.com/article/bitcoin-core-0121-released-major-step-forward-for-scalability-cm607209. Retrieved 7 November 2016.
  21. Mastering Bitcoin: Programming the Open Blockchain. Quote "BIP-68 and BIP-112 were activated in May 2016 as a soft fork upgrade to the consensus rules."
  22. "Bitcoin Core 0.13.1". Bitcoin Core. https://bitcoincore.org/en/releases/0.13.1/. Retrieved 25 October 2016.
  23. "Segregated Witness Benefits". Bitcoin Core. January 26, 2016. https://bitcoincore.org/en/2016/01/26/segwit-benefits/. Retrieved October 20, 2018.
  24. "CVE-2018-17144 Full Disclosure" (in en). Bitcoin Core. https://bitcoincore.org/en/2018/09/20/notice/.