Treat non-version-1 transactions as non-standard

Adds CBlock::CURRENT_VERSION and CTransaction::CURRENT_VERSION
constants, and makes non-CURRENT_VERSION transactions nonstandard.
This will help make future upgrades smoother.
This commit is contained in:
Gavin Andresen 2012-06-27 12:43:19 -04:00
parent 6e3a1a3742
commit dae3e10a5a
2 changed files with 7 additions and 2 deletions

View File

@ -268,6 +268,9 @@ bool CTransaction::ReadFromDisk(COutPoint prevout)
bool CTransaction::IsStandard() const bool CTransaction::IsStandard() const
{ {
if (nVersion > CTransaction::CURRENT_VERSION)
return false;
BOOST_FOREACH(const CTxIn& txin, vin) BOOST_FOREACH(const CTxIn& txin, vin)
{ {
// Biggest 'standard' txin is a 3-signature 3-of-3 CHECKMULTISIG // Biggest 'standard' txin is a 3-signature 3-of-3 CHECKMULTISIG

View File

@ -386,6 +386,7 @@ typedef std::map<uint256, std::pair<CTxIndex, CTransaction> > MapPrevTx;
class CTransaction class CTransaction
{ {
public: public:
static const int CURRENT_VERSION=1;
int nVersion; int nVersion;
std::vector<CTxIn> vin; std::vector<CTxIn> vin;
std::vector<CTxOut> vout; std::vector<CTxOut> vout;
@ -411,7 +412,7 @@ public:
void SetNull() void SetNull()
{ {
nVersion = 1; nVersion = CTransaction::CURRENT_VERSION;
vin.clear(); vin.clear();
vout.clear(); vout.clear();
nLockTime = 0; nLockTime = 0;
@ -817,6 +818,7 @@ class CBlock
{ {
public: public:
// header // header
static const int CURRENT_VERSION=1;
int nVersion; int nVersion;
uint256 hashPrevBlock; uint256 hashPrevBlock;
uint256 hashMerkleRoot; uint256 hashMerkleRoot;
@ -858,7 +860,7 @@ public:
void SetNull() void SetNull()
{ {
nVersion = 1; nVersion = CBlock::CURRENT_VERSION;
hashPrevBlock = 0; hashPrevBlock = 0;
hashMerkleRoot = 0; hashMerkleRoot = 0;
nTime = 0; nTime = 0;