Policy: allow transaction version 2 relay policy.

This commit introduces a way to gracefully bump the default
transaction version in a two step process.
This commit is contained in:
BtcDrak 2016-02-19 19:52:31 +00:00
parent 02c2435802
commit 12c89c9185
2 changed files with 8 additions and 1 deletions

View file

@ -55,7 +55,7 @@ bool IsStandard(const CScript& scriptPubKey, txnouttype& whichType)
bool IsStandardTx(const CTransaction& tx, std::string& reason) bool IsStandardTx(const CTransaction& tx, std::string& reason)
{ {
if (tx.nVersion > CTransaction::CURRENT_VERSION || tx.nVersion < 1) { if (tx.nVersion > CTransaction::MAX_STANDARD_VERSION || tx.nVersion < 1) {
reason = "version"; reason = "version";
return false; return false;
} }

View file

@ -206,8 +206,15 @@ private:
void UpdateHash() const; void UpdateHash() const;
public: public:
// Default transaction version.
static const int32_t CURRENT_VERSION=1; static const int32_t CURRENT_VERSION=1;
// Changing the default transaction version requires a two step process: first
// adapting relay policy by bumping MAX_STANDARD_VERSION, and then later date
// bumping the default CURRENT_VERSION at which point both CURRENT_VERSION and
// MAX_STANDARD_VERSION will be equal.
static const int32_t MAX_STANDARD_VERSION=2;
// The local variables are made const to prevent unintended modification // The local variables are made const to prevent unintended modification
// without updating the cached hash value. However, CTransaction is not // without updating the cached hash value. However, CTransaction is not
// actually immutable; deserialization and assignment are implemented, // actually immutable; deserialization and assignment are implemented,