“Bitcoin Core” explained

In the current crypto space there seems to pop up a frequent misunderstanding of the term “Bitcoin Core”. Sometimes, it is used as a name for a cryptocurrency (usually implying that this cryptocurrency forked off from the original Bitcoin protocol, or deviated from the “original vision”), sometimes it seems to describe a group of people/developers and sometimes people say that it doesn’t exist at all.

All of these notions are incorrect: Bitcoin Core obviously does exist but not in the forms mentioned above. The discussions involving that name can be highly confusing for people who are new to the space. Here I would like to briefly explain what Bitcoin Core actually is. The text is targeted at beginners, hence simplifying many details. Also, please feel free to skip right to the TL;DR section at the bottom first.


So what actually is Bitcoin Core? It is a reference implementation of the Bitcoin protocol, as Wikipedia says. But what does this actually mean?

Protocol, in computer science, [is] a set of rules or procedures for transmitting data between electronic devices, such as computers. In order for computers to exchange information, there must be a preexisting agreement as to how the information will be structured and how each side will send and receive it.

(source)

To give an example: the browser client, which you are currently using to read this text, is a software which behaves accordingly to particular, well-defined rules (protocol), namely the Hyper Text Transfer Protocol, or HTTP in short. You can use a different browser, but this other browser still would be using the exactly same underlying protocol (HTTP) in order to view this internet page.

Bitcoin as a software also runs on a network protocol, the fundamentals of which have been laid out in the Bitcoin whitepaper, written and published by Satoshi Nakamoto in 2008. An implementation (the actual software that is running on that protocol), was published in the following year by the same person, naming it simply Bitcoin 0.1.

During the years after the initial release, more and more developers got involved and contributed their ideas, feedback and code to the software. In November 2013 there has been a proposal to brand the software “Bitcoin Core” for a clearer distinction between Bitcoin as a network and Bitcoin as a client/software. The name was suggested by Gavin Andresen, and after some discussions it was adopted.

From there on, Bitcoin Core has been the name of the client (and, implicitly, of the integrated wallet). The home of this client, where you can inspect its code, follow all the updates and many of the discussions can be found here: https://github.com/bitcoin/bitcoin. An additional source of information, with articles, explanations, BIPs (Bitcoin Improvement Proposal) and downloads can be found on https://bitcoincore.org.

As we can see, Bitcoin Core is actually a software/client/implementation (using these words somewhat interchangeably for the sake of simplicity), which runs on the Bitcoin protocol. One could use a different software, such as Bitcoin Knots, to run on the same protocol and to send/receive exactly the same bitcoin. Choosing between Bitcoin Core and Bitcoin Knots is similar to choosing between Firefox and Chrome: different clients utilizing the same underlying protocol.

“Bitcoin Core” in other contexts

In other circumstances, Bitcoin Core is sometimes used to describe a group of people who are actively contributing to the Github repository (counting 540 contributors at the time of writing, although this includes currently inactive ones). That group doesn’t have any commonly defined goals, ideals, objectives, or requirements for membership (there is no actual “membership” either). In fact, it is very common for the contributors to strongly disagree on technical details or on more general topics, which frequently can be seen by the discussions on the pull requests or on the bitcoin developer mailinglist. The perhaps most famous recent example was the division of opinions on the UASF movement/BIP148 in the developer community (a small sample of diverging views can be observed here).

Referring to this group of people as Bitcoin Core makes sense in some way, but it overlooks the fact that within this group there are many disagreements, heated debates and contradictory opinions. There is no defined team that can be quoted as a whole or that can be said to have done this/not having done that. The single possible, defining commonality of the group is the contribution to the code on Github, but fixing bugs or proposing improvements, however frequently, does not automatically make a particular contributor agree with every other member of the group on every technical or ideological subject. The contributions can be made by anyone, anonymously; the only decisive factor for the integration is the rigorous peer review by other contributors, and after that, the choice of the actual users (node operators/miners) to use the Bitcoin Core software on their machines.

When Bitcoin Core is used to describe not only the contributing developers on Github, but also the supporters of this group, the meaning becomes even fuzzier. What does “supporting” actually mean here? Am I a supporter if I find myself agreeing with some of the developers on some particular topics? How can I be called a supporter, if the group is not a homogenous organization, but a patchwork of opinions, anonymous personas, ideas and people contributing in very different ways? The only reasonable and clear definition of a Bitcoin Core supporter would be someone who is actually running the Bitcoin Core software on their full node.

Furthermore, there are frequent attempts to attach the “Core” appendix to the actual cryptocurrency Bitcoin (BTC). Usually, this either happens out of lack of understanding or to support certain narratives, mostly in the context of comparing Bitcoin (BTC) to Bitcoin Cash/Bcash (BCH). Using “Bitcoin Core” in this way is factually incorrect, as it is only the name for a particular software running on the Bitcoin network/protocol, and not the actual coin itself. Bitcoin (the cryptocurrency) is not the same as Bitcoin Core (the client), although the latter is an integral component of the current ecosystem.

Comparing Bitcoin Core with Bitcoin ABC (an implementation of the Bitcoin Cash protocol) would make much more sense, as both refer to a software (albeit on different networks), while Bitcoin and Bitcoin Cash are the names of the actual coins (or their respective protocols or networks, depending on the context).

TL;DR

basically, there are three different ways how the term “Bitcoin Core” is used, but only one of them actually makes sense:

correct: an actual software/client running on the Bitcoin protocol, which you can download here or check its code here

somewhat correct, but vague: developers contributing to Bitcoin Core Github repository linked above

potentially misleading, very vague: “supporters” of Bitcoin Core — depending what the speaker means by “supporters” and his/her understanding of “Bitcoin Core”

very misleading, factually wrong: a currency (or a fork of Bitcoin)

very misleading, factually wrong: “there is no such thing as Bitcoin Core”

Like what you read? Give Rain Dog Dance a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.