Forbid version=0 in special TXs (#2473)

This commit is contained in:
Alexander Block 2018-11-22 06:05:32 +01:00 committed by GitHub
parent 85157f9a9e
commit 5ffc31bce4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 6 deletions

View File

@ -766,7 +766,7 @@ class DIP3Test(BitcoinTestFramework):
# We can't really use this one as it would result in invalid merkle roots for masternode lists # We can't really use this one as it would result in invalid merkle roots for masternode lists
if len(bt['coinbase_payload']) != 0: if len(bt['coinbase_payload']) != 0:
cbtx = FromHex(CCbTx(), bt['coinbase_payload']) cbtx = FromHex(CCbTx(version=1), bt['coinbase_payload'])
if use_mnmerkleroot_from_tip: if use_mnmerkleroot_from_tip:
if 'cbTx' in tip_block: if 'cbTx' in tip_block:
cbtx.merkleRootMNList = int(tip_block['cbTx']['merkleRootMNList'], 16) cbtx.merkleRootMNList = int(tip_block['cbTx']['merkleRootMNList'], 16)

View File

@ -25,7 +25,7 @@ bool CheckCbTx(const CTransaction& tx, const CBlockIndex* pindexPrev, CValidatio
return state.DoS(100, false, REJECT_INVALID, "bad-cbtx-payload"); return state.DoS(100, false, REJECT_INVALID, "bad-cbtx-payload");
} }
if (cbTx.nVersion > CCbTx::CURRENT_VERSION) { if (cbTx.nVersion == 0 || cbTx.nVersion > CCbTx::CURRENT_VERSION) {
return state.DoS(100, false, REJECT_INVALID, "bad-cbtx-version"); return state.DoS(100, false, REJECT_INVALID, "bad-cbtx-version");
} }

View File

@ -85,7 +85,7 @@ bool CheckProRegTx(const CTransaction& tx, const CBlockIndex* pindexPrev, CValid
return state.DoS(100, false, REJECT_INVALID, "bad-protx-payload"); return state.DoS(100, false, REJECT_INVALID, "bad-protx-payload");
} }
if (ptx.nVersion > CProRegTx::CURRENT_VERSION) { if (ptx.nVersion == 0 || ptx.nVersion > CProRegTx::CURRENT_VERSION) {
return state.DoS(100, false, REJECT_INVALID, "bad-protx-version"); return state.DoS(100, false, REJECT_INVALID, "bad-protx-version");
} }
if (ptx.nType != 0) { if (ptx.nType != 0) {
@ -214,7 +214,7 @@ bool CheckProUpServTx(const CTransaction& tx, const CBlockIndex* pindexPrev, CVa
return state.DoS(100, false, REJECT_INVALID, "bad-protx-payload"); return state.DoS(100, false, REJECT_INVALID, "bad-protx-payload");
} }
if (ptx.nVersion > CProRegTx::CURRENT_VERSION) { if (ptx.nVersion == 0 || ptx.nVersion > CProRegTx::CURRENT_VERSION) {
return state.DoS(100, false, REJECT_INVALID, "bad-protx-version"); return state.DoS(100, false, REJECT_INVALID, "bad-protx-version");
} }
@ -267,7 +267,7 @@ bool CheckProUpRegTx(const CTransaction& tx, const CBlockIndex* pindexPrev, CVal
return state.DoS(100, false, REJECT_INVALID, "bad-protx-payload"); return state.DoS(100, false, REJECT_INVALID, "bad-protx-payload");
} }
if (ptx.nVersion > CProRegTx::CURRENT_VERSION) { if (ptx.nVersion == 0 || ptx.nVersion > CProRegTx::CURRENT_VERSION) {
return state.DoS(100, false, REJECT_INVALID, "bad-protx-version"); return state.DoS(100, false, REJECT_INVALID, "bad-protx-version");
} }
if (ptx.nMode != 0) { if (ptx.nMode != 0) {
@ -349,7 +349,7 @@ bool CheckProUpRevTx(const CTransaction& tx, const CBlockIndex* pindexPrev, CVal
return state.DoS(100, false, REJECT_INVALID, "bad-protx-payload"); return state.DoS(100, false, REJECT_INVALID, "bad-protx-payload");
} }
if (ptx.nVersion > CProRegTx::CURRENT_VERSION) { if (ptx.nVersion == 0 || ptx.nVersion > CProRegTx::CURRENT_VERSION) {
return state.DoS(100, false, REJECT_INVALID, "bad-protx-version"); return state.DoS(100, false, REJECT_INVALID, "bad-protx-version");
} }