<p>For a given network, consensus means achieving a consistent view of the global state between all participants. For Bitcoin, this means that all nodes/wallets should be considering the same utxo set. For Ethereum, it involves all participants having the same state trie. Minor other variations exist for other networks.</p>

<p>Mining and protocol versions are simply means to achieve this consensus - miners are motivated to only select valid transactions (transactions that spend unspent utxos, and meet other validity requirements) as their block will be dropped by other participants in the network if they produce an invalid block.</p>

<p>Protocol versions are a little more forgiving. On one hand, you have the literal Bitcoin Wire protocol which nodes use to exchange block, transaction, and peer data. Changes to this are usually backwards compatible, so you can safely run a slightly older version of <code>bitcoind</code> on the mainnet without facing any issues.</p>

<p>Protocol could also refer to the concept of Bitcoin itself, and encompass things such as what is a valid transaction, whether segwit is enabled or not, etc. These can be backwards incompatible changes which require a hardfork, and thus require all users to update their software, or backwards compatible, which allows certain older versions to continue working.</p>

<p>Thus, in short, I would say that consensus is achieving a consistent world view, and mining and protocol versions are implementation details that help us all agree on that view.</p>

<p>Governance comes down more to social behaviour than literal control of the project - if the Bitcoin Core developers went rogue tomorrow and added code that allocated 50% of all block rewards to them, it would likely result in a quick revolt, and others in the community would fork Bitcoin from a point before that change. Thus, even though a small subset of people currently control what code goes into Bitcoin, they are not an absolute authority, and the community may choose to follow a different idea of Bitcoin.</p>

CC BY-SA 4.0
2019-08-13T23:28:28.310Z
2019-08-13T23:28:28.310Z
Raghav Sood
<p>Raghav's answer is nicely concise and comprehensive, but I thought I could elaborate on this last (important!) point:</p>

<blockquote>
  <p>Would governance therefore be the developers who have permission to merge changes into the main bitcoin code base?</p>
</blockquote>

<p>At any given point in time since the genesis block, the Bitcoin network's nodes have been in consensus about what the state of the network is. Each node's code dictates what <strong>that</strong> node considers to be valid, and by following these rules of validity the network's nodes all independently remain in consensus about the network's state at any given time. </p>

<p>So, as you've realized, the code is important: a change to it could change what is considered valid/invalid behaviour on the network. So who are the developers, and what sort of system of governance do they adhere to?</p>

<p>At this point is important to understand that <em>the Bitcoin network is defined by the many independent nodes that are running at any given point in time</em>, not by some github repository. This means that while <a href="http://github.com/bitcoin/bitcoin" rel="nofollow noreferrer">Github may be the current home of the Bitcoin project</a>, if someone merged a controversial change to the codebase (ie, one that a majority of users don’t agree with), then we should expect that the majority of users would simply not update their software, and thus the rule change would not be enacted on the network. Bitcoin software is generally not built to be auto-updated, because this function would grant developers an unnecessary amount of control over what the rules of the network are. In fact, I think you would be hard-pressed to find someone knowledgable in Bitcoin recommending installation of node software that includes automatic updates (ie through an appstore, automated package managers, etc), usually the opposite is true (build from source, check pgp sigs, etc). </p>

<p><em>"Don't trust, verify!"</em> is a popular saying amongst Bitcoiners, it is a philosophy embodied in the software design, development, and distribution. Anybody can propose a change to the codebase, and then debate of the change's merits will occur in public forums. An extremely high level of scrutiny is employed, and by these mechanisms the Bitcoin network has come to be quite resilient against change.</p>

<p><strong>The crux of this all is that Bitcoin's 'governance' comes from the bottom up (individual users independently define the rules), instead of from the top down (an administrator(s) define the rules).</strong> </p>

<p>I put 'governance' in quotations because the definition of government is: <em>the exercise of authority; direction; control; management</em>, but the Bitcoin network has no such position. Rather than something which is governed, <a href="https://en.wikipedia.org/wiki/Commons" rel="nofollow noreferrer">Bitcoin seems to be more of a commons</a>, owned by no one in particular, but available to all. </p>

<p>In the broader 'blockchain world', governance is a more relevant topic because almost all projects are centralized around a certain company or team, which is a fact that precludes them from becoming a monetary commons in the first place (and that is one of the key points that makes Bitcoin interesting, imo).</p>

CC BY-SA 4.0
2019-08-14T20:54:06.767Z
2019-08-15T10:04:04.427Z
2019-08-15T10:04:04.427Z
chytrik
<p>Consensus. From Bitcoin Wiki. "Consensus" is an ambiguous and problematic word which can mean several different things, both in Bitcoin and elsewhere. It is often used to hand-wave decision issues as, "well, everyone will basically agree."</p>

<p><a href="https://en.bitcoin.it/wiki/Consensus" rel="nofollow noreferrer">See more</a></p>

CC BY-SA 4.0
2019-08-15T11:32:43.083Z
2019-08-15T11:32:43.083Z
Braxston Beex Rousell
<p>I’m really struggling to get my head around a particular piece of lingo in the bitcoin/blockchain space, and would really appreciate if someone was able to give a bit of clarity. I have been doing a lot of reading trying to figure this out, but the more I read, the more confusing it seems to become.</p>

<p>Basically, it concerns consensus and governance.</p>

<p>With blockchain tech, as far as I understand, we have the following:</p>

<ul>
<li>‘consensus’ needed amongst miners as to what the ‘next block of transactions’ is that is added to the chain (and the longest chain, becomes the valid chain in the network).</li>
<li>‘consensus’ needed about which version of the protocol is used (disagreement leading to a hard fork)</li>
</ul>

<p>My main question about the above, are they both referred to as ‘consensus’ or is there terminology which separates the two? (Whenever I open a new article about governance and consensus, I have to read half of it to figure out as to which type of ‘consensus’ the writer is referring to.</p>

<p>Would governance therefore be the developers who have permission to merge changes into the main bitcoin code base?</p>

CC BY-SA 4.0
2019-08-13T16:36:10.243Z
This description leads me to think that consensus refers to both transactions and protocol updates (if this is the correct terminology): “The consensus in off-chain systems is typically achieved by leaders in the community. For instance, Bitcoin’s off-chain consensus (not consensus on transactions) is reached by large mining players such as Bitmain, core devs, and business entities interacting with each other and coming to an agreement.” https://blockonomi.com/blockchain-governance
timhc22
CC BY-SA 4.0
2019-08-13T21:52:19.273Z
Users govern by choosing which software to run, the developers have no governance other than over users which choose to blindly update to their software, but then that isn't really governance.
JBaczuk
CC BY-SA 4.0
2019-08-13T23:45:39.510Z
Do updates work like from an app store, or even like from a package manager? Or does one need to make updates manually, including minor version changes?
timhc22
CC BY-SA 4.0
2019-08-13T23:50:01.143Z
There are many ways to install the software including package managers, binaries, or build from source. Bitcoin Core is open source so you can view, modify, and build the code if you want. See https://github.com/bitcoin/bitcoin
JBaczuk
<consensus><terminology><governance>
What is "consensus"?
timhc22
# What is "consensus"?

(Asked by: username_0 on 2019-08-13)

I’m really struggling to get my head around a particular piece of lingo in the bitcoin/blockchain space, and would really appreciate if someone was able to give a bit of clarity. I have been doing a lot of reading trying to figure this out, but the more I read, the more confusing it seems to become.

Basically, it concerns consensus and governance.

With blockchain tech, as far as I understand, we have the following:

* ‘consensus’ needed amongst miners as to what the ‘next block of transactions’ is that is added to the chain (and the longest chain, becomes the valid chain in the network).
* ‘consensus’ needed about which version of the protocol is used (disagreement leading to a hard fork)

My main question about the above, are they both referred to as ‘consensus’ or is there terminology which separates the two? (Whenever I open a new article about governance and consensus, I have to read half of it to figure out as to which type of ‘consensus’ the writer is referring to.

Would governance therefore be the developers who have permission to merge changes into the main bitcoin code base?

**Tags:** consensus, terminology, governance

> **Comments:**
> **username_0**: This description leads me to think that consensus refers to both transactions and protocol updates (if this is the correct terminology): “The consensus in off-chain systems is typically achieved by leaders in the community. For instance, Bitcoin’s off-chain consensus (not consensus on transactions) is reached by large mining players such as Bitmain, core devs, and business entities interacting with each other and coming to an agreement.” https://blockonomi.com/blockchain-governance  
> **username_1**: Users govern by choosing which software to run, the developers have no governance other than over users which choose to blindly update to their software, but then that isn't really governance.  
> **username_0**: Do updates work like from an app store, or even like from a package manager? Or does one need to make updates manually, including minor version changes?  
> **username_1**: There are many ways to install the software including package managers, binaries, or build from source. Bitcoin Core is open source so you can view, modify, and build the code if you want. See https://github.com/bitcoin/bitcoin  

---

## 3 answers

### Answer by username_2 on 2019-08-13. Score: 3

For a given network, consensus means achieving a consistent view of the global state between all participants. For Bitcoin, this means that all nodes/wallets should be considering the same utxo set. For Ethereum, it involves all participants having the same state trie. Minor other variations exist for other networks.

Mining and protocol versions are simply means to achieve this consensus - miners are motivated to only select valid transactions (transactions that spend unspent utxos, and meet other validity requirements) as their block will be dropped by other participants in the network if they produce an invalid block.

Protocol versions are a little more forgiving. On one hand, you have the literal Bitcoin Wire protocol which nodes use to exchange block, transaction, and peer data. Changes to this are usually backwards compatible, so you can safely run a slightly older version of `bitcoind` on the mainnet without facing any issues.

Protocol could also refer to the concept of Bitcoin itself, and encompass things such as what is a valid transaction, whether segwit is enabled or not, etc. These can be backwards incompatible changes which require a hardfork, and thus require all users to update their software, or backwards compatible, which allows certain older versions to continue working.

Thus, in short, I would say that consensus is achieving a consistent world view, and mining and protocol versions are implementation details that help us all agree on that view.

Governance comes down more to social behaviour than literal control of the project - if the Bitcoin Core developers went rogue tomorrow and added code that allocated 50% of all block rewards to them, it would likely result in a quick revolt, and others in the community would fork Bitcoin from a point before that change. Thus, even though a small subset of people currently control what code goes into Bitcoin, they are not an absolute authority, and the community may choose to follow a different idea of Bitcoin.


---

### Answer by username_3 on 2019-08-14. Score: 2

username_2's answer is nicely concise and comprehensive, but I thought I could elaborate on this last (important!) point:

> Would governance therefore be the developers who have permission to merge changes into the main bitcoin code base?

At any given point in time since the genesis block, the Bitcoin network's nodes have been in consensus about what the state of the network is. Each node's code dictates what **that** node considers to be valid, and by following these rules of validity the network's nodes all independently remain in consensus about the network's state at any given time.

So, as you've realized, the code is important: a change to it could change what is considered valid/invalid behaviour on the network. So who are the developers, and what sort of system of governance do they adhere to?

At this point is important to understand that *the Bitcoin network is defined by the many independent nodes that are running at any given point in time*, not by some github repository. This means that while [Github may be the current home of the Bitcoin project](http://github.com/bitcoin/bitcoin), if someone merged a controversial change to the codebase (ie, one that a majority of users don’t agree with), then we should expect that the majority of users would simply not update their software, and thus the rule change would not be enacted on the network. Bitcoin software is generally not built to be auto-updated, because this function would grant developers an unnecessary amount of control over what the rules of the network are. In fact, I think you would be hard-pressed to find someone knowledgable in Bitcoin recommending installation of node software that includes automatic updates (ie through an appstore, automated package managers, etc), usually the opposite is true (build from source, check pgp sigs, etc).

*"Don't trust, verify!"* is a popular saying amongst Bitcoiners, it is a philosophy embodied in the software design, development, and distribution. Anybody can propose a change to the codebase, and then debate of the change's merits will occur in public forums. An extremely high level of scrutiny is employed, and by these mechanisms the Bitcoin network has come to be quite resilient against change.

**The crux of this all is that Bitcoin's 'governance' comes from the bottom up (individual users independently define the rules), instead of from the top down (an administrator(s) define the rules).**

I put 'governance' in quotations because the definition of government is: *the exercise of authority; direction; control; management*, but the Bitcoin network has no such position. Rather than something which is governed, [Bitcoin seems to be more of a commons](https://en.wikipedia.org/wiki/Commons), owned by no one in particular, but available to all.

In the broader 'blockchain world', governance is a more relevant topic because almost all projects are centralized around a certain company or team, which is a fact that precludes them from becoming a monetary commons in the first place (and that is one of the key points that makes Bitcoin interesting, imo).


---

### Answer by username_4 on 2019-08-15. Score: 0

Consensus. From Bitcoin Wiki. "Consensus" is an ambiguous and problematic word which can mean several different things, both in Bitcoin and elsewhere. It is often used to hand-wave decision issues as, "well, everyone will basically agree."

[See more](https://en.bitcoin.it/wiki/Consensus)


---

