<p>Most of what you ask about doesn't have anything to do with Version Bits actually. :)</p>

<p>Let's start from the top:</p>

<p><code>nVersion</code> is a four byte (32 bit) field in the block header. The version field was first interpreted as an integer with the genesis block introducing version 1. Later the network was softforked to create blocks of version two. From that point on it was required that all blocks have a version number equal or bigger than two. Expressed in binary, two is <code>0010</code>. Since the version field is little-endian, this meant that going forward it was thus required that the first three bits in the version field had to be <code>001</code>.</p>

<p><code>BIP0009: Version Bits</code> introduced the idea of interpreting the remaining 29 bits as flags instead of interpreting the whole field as one integer. It's also less of a vote but rather a signal of readiness for a softfork proposal. The readiness is expressed by setting the respective bit to 1 in the version field. (More rules for using Version Bits are specified in <a href="https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki" rel="nofollow noreferrer">BIP0009</a>.) It is thus possible to signal readiness for up to 29 softfork proposals at the same time. Therefore each Version Bits field corresponds to signaling about <strong>all softforks currently in deployment</strong>.</p>

<p>Out of the proposals you list, only SegWit uses Version Bits for deployment: <a href="https://github.com/bitcoin/bips/blob/master/bip-0009/assignments.mediawiki" rel="nofollow noreferrer">List of version bit deployments</a>. None of the other mentioned proposals is a softfork, and they don't make use of Version Bits for deployment. Instead, they communicate support by setting the Coinbase text.</p>

CC BY-SA 3.0
2017-01-01T13:14:24.960Z
They're not actually votes though. Any majority of miners can start enforcing a new rule - they don't need to indicate it in blocks, or even tell anyone about it. What version bits does is providing a way to signal readiness, so that a safe and coordinated transition point can be found.
Pieter Wuille
CC BY-SA 3.0
2017-08-17T11:57:03.537Z
I know it has taken a while, but thanks to your help I was able to create a page that breaks the nVersion field down in to bits to show the different signals: http://learnmeabitcoin.com/browser/block/version/20000002. Hopefully anyone else reading this may find it useful.
inersha
CC BY-SA 4.0
2020-02-01T02:01:10.783Z
The top three version bits being `001` doesn't have to do with the number 2 in binary. It just means the top byte has a value from 32 to 63, which is why in hex, nVersion starts with `0x2` or `0x3`. In fact, the last version before BIP9 was 4. BIP9 actually says the top three bits can be `010` or `011`; these are reserved for future upgrades.  (the top bit has to be 0 since nVersion is signed).
Chan-Ho Suh
CC BY-SA 3.0
2016-12-31T13:36:33.947Z
2017-01-01T13:51:44.203Z
2017-01-01T13:51:44.203Z
Murch
<p>I don't fully understand how version bits voting works, but I'm trying familiarize myself with the current options.</p>

<p>Are these the most popular for voting at the moment?</p>

<pre><code>0x20000000 = Bitcoin Unlimited?
0x20000002 = Segwit?
0x20000007 = XT?
0x30000000 = 2MB Blocks?
</code></pre>

<p>Is there a list of them in one place anywhere?</p>

<p>Also, is it correct to say that each vote corresponds to a <strong>specific BIP</strong>?</p>

<bip9-version-bits>
What are the possible Version Bits votes?
inersha
# What are the possible Version Bits votes?

(Asked by: username_0 on 2016-12-30)

I don't fully understand how version bits voting works, but I'm trying familiarize myself with the current options.

Are these the most popular for voting at the moment?

```
0x20000000 = Bitcoin Unlimited?
0x20000002 = Segwit?
0x20000007 = XT?
0x30000000 = 2MB Blocks?

```

Is there a list of them in one place anywhere?

Also, is it correct to say that each vote corresponds to a **specific BIP**?

**Tags:** bip9-version-bits


---

## 1 answers

### Answer by username_1 on 2016-12-31. Score: 4 | Accepted answer

Most of what you ask about doesn't have anything to do with Version Bits actually. :)

Let's start from the top:

`nVersion` is a four byte (32 bit) field in the block header. The version field was first interpreted as an integer with the genesis block introducing version 1. Later the network was softforked to create blocks of version two. From that point on it was required that all blocks have a version number equal or bigger than two. Expressed in binary, two is `0010`. Since the version field is little-endian, this meant that going forward it was thus required that the first three bits in the version field had to be `001`.

`BIP0009: Version Bits` introduced the idea of interpreting the remaining 29 bits as flags instead of interpreting the whole field as one integer. It's also less of a vote but rather a signal of readiness for a softfork proposal. The readiness is expressed by setting the respective bit to 1 in the version field. (More rules for using Version Bits are specified in [BIP0009](https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki).) It is thus possible to signal readiness for up to 29 softfork proposals at the same time. Therefore each Version Bits field corresponds to signaling about **all softforks currently in deployment**.

Out of the proposals you list, only SegWit uses Version Bits for deployment: [List of version bit deployments](https://github.com/bitcoin/bips/blob/master/bip-0009/assignments.mediawiki). None of the other mentioned proposals is a softfork, and they don't make use of Version Bits for deployment. Instead, they communicate support by setting the Coinbase text.

> **Comments:**
> **username_2**: They're not actually votes though. Any majority of miners can start enforcing a new rule - they don't need to indicate it in blocks, or even tell anyone about it. What version bits does is providing a way to signal readiness, so that a safe and coordinated transition point can be found.  
> **username_0**: I know it has taken a while, but thanks to your help I was able to create a page that breaks the nVersion field down in to bits to show the different signals: http://learnmeabitcoin.com/browser/block/version/20000002. Hopefully anyone else reading this may find it useful.  
> **username_3**: The top three version bits being `001` doesn't have to do with the number 2 in binary. It just means the top byte has a value from 32 to 63, which is why in hex, nVersion starts with `0x2` or `0x3`. In fact, the last version before BIP9 was 4. BIP9 actually says the top three bits can be `010` or `011`; these are reserved for future upgrades.  (the top bit has to be 0 since nVersion is signed).  

---

