Consensus

From Bitcoin Wiki
Jump to: navigation, search

"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."

In Bitcoin, the word "consensus" is unfortunately used in several very different ways. Really, all of these usages should be replaced by distinct, different words, and the word consensus should never be used.

Consensus rules

The consensus rules are the specific set of rules that all Bitcoin full nodes will unfailingly enforce when considering the validity of a block and its transactions. For example, the Bitcoin consensus rules require that blocks only create a certain number of bitcoins. If a block creates more bitcoins than is allowed, all full nodes will reject this block, even if every other node and miner in the world accepts it. Adding new consensus rules can generally be done as a softfork, while removing any consensus rule requires a hardfork. Rules regarding the behavior of the mere network protocol are not consensus rules, even if a change to the network protocol behavior breaks backward-compatibility. The consensus rules are only concerned with the validity of blocks and transactions.

These rules are called consensus rules because Bitcoin requires that all participants in the Bitcoin economy have consensus (with the meaning of the next definition) as to the consensus rules. If the economy disagrees about the consensus rules, then the currency and economy splits into two or more totally-independent pieces.

Unlike the other two definitions, this is a very concrete concept.

For clarity, these rules should be called hard rules or the rules of Bitcoin instead of consensus rules.

Near-unanimity

"Consensus" can mean something like "no significant objection among the set of people who 'matter'". In Bitcoin, this is the standard required to roll out a hardfork: there should be no significant section of the Bitcoin economy that will actively oppose the hardfork.

For clarity, this level of agreement should be called non-contentious or near-unanimous.

General agreement

Consensus can mean something like "a strong majority when the participants are weighted for expertise and/or strength of argument." As an example, if four experts strongly agree to something and provide strong arguments for it, but five laymen merely state that they oppose the proposal, then the proposal would in most cases be said to have consensus. However, if four experts present strong arguments for a proposal, and three experts present equally strong arguments against it, then it would probably not be said to have consensus. This is commonly the way that technical decisions are made in open source projects, including many Bitcoin open source projects.

For clarity, this level of agreement should be called general agreement.