1

If I run command to fetch a block, I see version 2 is returned:

getblock 0000000000000000ae22455f90306f43e8c806585fe2dfc3b0e92ac7b7620bff

Output

{
"hash" : "0000000000000000ae22455f90306f43e8c806585fe2dfc3b0e92ac7b7620bff",
"confirmations" : 5885,
"size" : 249065,
"height" : 280557,
"version" : 2,
"merkleroot" : "5b4c401a2ad5a82ef26efb1d7ad82a0b6abea18118b50a12b555ea9e8663042b",
"tx" : [    .... snip ...

and when I run the command to fetch a transaction, I see that version 1 is returned

 getrawtransaction 260ef6a9bbb401ecbfdace19c84ae3245f0ab5b229ea716209a38e9ec0fd14c1 1

output

{
"hex" : "01000000027f4e827503d7d52617.. snip ..9763caaf4b6216343fa460b88ac00000000",
"txid" : "260ef6a9bbb401ecbfdace19c84ae3245f0ab5b229ea716209a38e9ec0fd14c1",
"version" : 1,
"locktime" : 0,
"vin" : [

Question

I read somewhere that BIP32 will cause both of them to be version 3. Can anyone explain:

  • Where I can find a concise list of rules of what is expected from each version (it's not on the wiki)

  • When that version changed (year and/or block number)

  • Are old version banned, or are they still supported?

3

BIP0034 added Version 2 blocks. It enforces the rule that the transaction version is 1 (this was previously not enforced and there are some weird transaction versions in the block chain). It also requires the coinbase transaction input script to contain the block height as the first data element.

There has been discussion about a new Version 3 block and Version 3 transaction which would enforce canonical encoding. This would be a solution to the transaction malleability problem. Skipping transaction Version 2 would make the versions the same once more for both blocks and transactions.

You can read the Bitcoin Improvement Proposals here.

| improve this answer | |
0

BIP-0066 compliance requires a Block's nVersion to be set to 3 by proposing "to restrict valid signatures to exactly what is mandated by DER, to make the consensus rules not depend on OpenSSL's signature parsing. A change like this is required if implementations would want to remove all of OpenSSL from the consensus code."

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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