7

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?

1 Answer 1

4

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

3
  • 4
    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. Commented Jan 1, 2017 at 13:14
  • 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: learnmeabitcoin.com/browser/block/version/20000002. Hopefully anyone else reading this may find it useful.
    – inersha
    Commented Aug 17, 2017 at 11:57
  • 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). Commented Feb 1, 2020 at 2:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.