<p>In the Bitcoin blockchain, each <strong>block</strong> has a <a href="https://en.bitcoin.it/wiki/Protocol_documentation#block" rel="noreferrer">32-bit field</a> called <code>version</code>. Right now, it takes on simple small values like 2 or 3.</p>

<p>As an example of changes, block version 3 introduced new rules about transaction validity, as well as anti-malleability measures. Miners with the new Bitcoin client create blocks with the version set to 3 to signal their capability to other network participants. Once enough v3 blocks are mined, the Bitcoin clients start enabling their incompatible (potentially fork-causing) new features, and also reject blocks with versions below 3.</p>

<p>The version bits proposal is a generalization of this concept. Suppose someone proposes an incompatible feature X and wants to see if they can gather support for it. They somehow agree on which bit to use in order to show support for this feature, and compatible clients will mine blocks with this bit set to 1. To fabricate an example as an illustration:</p>

<pre><code>Version field: 00001000 00000000 00000010 00000000
                   ^      ^            ^
                   |      |            Supports large blocks
                   |      Does not support infinite inflation
                   Supports cat emoticons
</code></pre>

<p>This allows multiple features to be proposed in parallel rather than sequentially.</p>

<p>The rest of the <a href="https://gist.github.com/sipa/bf69659f43e763540550" rel="noreferrer">article</a> talks about consensus, recycling old bits, and other related pragmatic considerations.</p>

CC BY-SA 3.0
2015-08-24T20:01:32.740Z
Minor correction: XT uses a version field of 0x20000007
Nick ODell
CC BY-SA 3.0
2015-08-24T20:49:50.027Z
Whoops, my bad. I got confused with the mainline version 4 proposal: https://bitcoin.org/en/developer-reference#block-versions
Nayuki
CC BY-SA 3.0
2015-08-24T18:46:05.567Z
2015-08-24T20:52:53.800Z
2015-08-24T20:52:53.800Z
Nayuki
<p>What does <a href="https://gist.github.com/sipa/bf69659f43e763540550" rel="noreferrer">Pieter Wuille's version bits proposal</a> change? How does a miner signal support for a particular fork? Can the version bits system be used with hard forks?</p>

<bitcoin-core-development><bip9-version-bits>
What are version bits?
Nick ODell
# What are version bits?

(Asked by: username_0 on 2015-08-24)

What does [Pieter Wuille's version bits proposal](https://gist.github.com/sipa/bf69659f43e763540550) change? How does a miner signal support for a particular fork? Can the version bits system be used with hard forks?

**Tags:** bitcoin-core-development, bip9-version-bits


---

## 1 answers

### Answer by username_1 on 2015-08-24. Score: 10 | Accepted answer

In the Bitcoin blockchain, each **block** has a [32-bit field](https://en.bitcoin.it/wiki/Protocol_documentation#block) called `version`. Right now, it takes on simple small values like 2 or 3.

As an example of changes, block version 3 introduced new rules about transaction validity, as well as anti-malleability measures. Miners with the new Bitcoin client create blocks with the version set to 3 to signal their capability to other network participants. Once enough v3 blocks are mined, the Bitcoin clients start enabling their incompatible (potentially fork-causing) new features, and also reject blocks with versions below 3.

The version bits proposal is a generalization of this concept. Suppose someone proposes an incompatible feature X and wants to see if they can gather support for it. They somehow agree on which bit to use in order to show support for this feature, and compatible clients will mine blocks with this bit set to 1. To fabricate an example as an illustration:

```
Version field: 00001000 00000000 00000010 00000000
                   ^      ^            ^
                   |      |            Supports large blocks
                   |      Does not support infinite inflation
                   Supports cat emoticons

```

This allows multiple features to be proposed in parallel rather than sequentially.

The rest of the [article](https://gist.github.com/sipa/bf69659f43e763540550) talks about consensus, recycling old bits, and other related pragmatic considerations.

> **Comments:**
> **username_0**: Minor correction: XT uses a version field of 0x20000007  
> **username_1**: Whoops, my bad. I got confused with the mainline version 4 proposal: https://bitcoin.org/en/developer-reference#block-versions  

---

