## Softforks details in a 0.12 full node

2

1

I have a 0.12 full node syncing in prune node.

This is what I get when I execute getblockchaininfo

pi@raspnode:~ \$ bitcoin-cli getblockchaininfo {
"chain" : "main",
"blocks" : 276483,
"bestblockhash" : "00000000000000017871bf646ec12c1e2dedacef87dcd357cea0da1ddb0b64b5",
"difficulty" : 1180923195.25802612,
"verificationprogress" : 0.11950119,
"chainwork" : "00000000000000000000000000000000000000000000084f5ed912538557eaa8",
"pruned" : true,
"softforks" : [
{
"id" : "bip34",
"version" : 2,
"enforce" : {
"status" : true,
"found" : 1000,
"required" : 750,
"window" : 1000
},
"reject" : {
"status" : true,
"found" : 1000,
"required" : 950,
"window" : 1000
}
},
{
"id" : "bip66",
"version" : 3,
"enforce" : {
"status" : false,
"found" : 0,
"required" : 750,
"window" : 1000
},
"reject" : {
"status" : false,
"found" : 0,
"required" : 950,
"window" : 1000
}
},
{
"id" : "bip65",
"version" : 4,
"enforce" : {
"status" : false,
"found" : 0,
"required" : 750,
"window" : 1000
},
"reject" : {
"status" : false,
"found" : 0,
"required" : 950,
"window" : 1000
}
}
],
"pruneheight" : 0 }


I would like to understand the new specs about softforks. I know id is the BIP id. But what about this block of code?

                "enforce" : {
"status" : false,
"found" : 0,
"required" : 750,
"window" : 1000
},
"reject" : {
"status" : false,
"found" : 0,
"required" : 950,
"window" : 1000
}


2

Soft forks are changes in blockchain rules that add restrictions on which blocks are valid. Soft forks require a certain portion of miners to show that they have upgraded their software in the blocks that they mine before the rules go into effect. This is done so that miners stay in sync about which blocks are valid and which blocks are invalid. What you're seeing in that data is basically a progress report of how many miners have upgraded their software to show support for each of the soft forks.

Let's look at BIP34:

    {
"id" : "bip34",
"version" : 2,
"enforce" : {
"status" : true,
"found" : 1000,
"required" : 750,
"window" : 1000
},
"reject" : {
"status" : true,
"found" : 1000,
"required" : 950,
"window" : 1000
}
}


This shows that BIP44 applies to all blocks with nVersion number greater than or equal to 2. It becomes enforced (the soft fork rules actually go into effect on blocks with version >= 2) when 750 (required) of the last 1000 (window) blocks have a version greater than or equal to 2. To date, 1000 (found) of the most recent 1000 blocks on the network have signaled support for BIP34 by using a version number greater than or equal to 2 in their block. Thus, since it is over 750, the "status" is true and it is being enforced.

The reject portion shows similar info, but it's describing when the network will no longer accept blocks with version below the BIP34 version. So, when 950 (required) of the last 1000 (window) blocks on the network have nVersion >= 2, blocks with version < 2 will no longer be accepted by the network. Currently, 1000 (found) blocks have had version >= 2, so the reject status is also true, meaning blocks with version < 2 are rejected by the network.