From 7bf8b7c25c944110dbe85ef9e4eebd858da34158 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Mon, 6 Feb 2012 15:48:00 -0500 Subject: [PATCH] -bip16 option (default: 1) to support / not support BIP 16. And bumped default BIP16 switchover date from Feb 15 to Mar 1 --- src/init.cpp | 33 ++++++++++++++++++++++++++------- src/main.cpp | 7 +++++-- src/main.h | 5 +---- src/util.cpp | 2 +- src/util.h | 2 +- 5 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 4bb3312..97f5ce7 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -474,19 +474,38 @@ bool AppInit2(int argc, char* argv[]) bool fTor = (fUseProxy && addrProxy.GetPort() == 9050); if (fTor) { - // Use SoftSetArg here so user can override any of these if they wish. + // Use SoftSetBoolArg here so user can override any of these if they wish. // Note: the GetBoolArg() calls for all of these must happen later. - SoftSetArg("-nolisten", true); - SoftSetArg("-noirc", true); - SoftSetArg("-nodnsseed", true); - SoftSetArg("-noupnp", true); - SoftSetArg("-upnp", false); - SoftSetArg("-dns", false); + SoftSetBoolArg("-nolisten", true); + SoftSetBoolArg("-noirc", true); + SoftSetBoolArg("-nodnsseed", true); + SoftSetBoolArg("-noupnp", true); + SoftSetBoolArg("-upnp", false); + SoftSetBoolArg("-dns", false); } fAllowDNS = GetBoolArg("-dns"); fNoListen = GetBoolArg("-nolisten"); + // This code can be removed once a super-majority of the network has upgraded. + if (GetBoolArg("-bip16", true)) + { + if (fTestNet) + SoftSetArg("-paytoscripthashtime", "1329264000"); // Feb 15 + else + SoftSetArg("-paytoscripthashtime", "1330578000"); // Mar 1 + + // Put "/P2SH/" in the coinbase so everybody can tell when + // a majority of miners support it + const char* pszP2SH = "/P2SH/"; + COINBASE_FLAGS << std::vector(pszP2SH, pszP2SH+strlen(pszP2SH)); + } + else + { + const char* pszP2SH = "NOP2SH"; + COINBASE_FLAGS << std::vector(pszP2SH, pszP2SH+strlen(pszP2SH)); + } + // Command-line args override in-wallet settings: if (mapArgs.count("-upnp")) fUseUPnP = GetBoolArg("-upnp"); diff --git a/src/main.cpp b/src/main.cpp index f0e5183..9e5f743 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -52,6 +52,8 @@ multimap mapOrphanBlocksByPrev; map mapOrphanTransactions; multimap mapOrphanTransactionsByPrev; +// Constant stuff for coinbase transactions we create: +CScript COINBASE_FLAGS; const string strMessageMagic = "Bitcoin Signed Message:\n"; @@ -1213,8 +1215,9 @@ bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex) // To avoid being on the short end of a block-chain split, // don't do secondary validation of pay-to-script-hash transactions - // until blocks with timestamps after paytoscripthashtime: - int64 nEvalSwitchTime = GetArg("-paytoscripthashtime", 1329264000); // Feb 15, 2012 + // until blocks with timestamps after paytoscripthashtime (see init.cpp for default). + // This code can be removed once a super-majority of the network has upgraded. + int64 nEvalSwitchTime = GetArg("-paytoscripthashtime", std::numeric_limits::max()); bool fStrictPayToScriptHash = (pindex->nTime >= nEvalSwitchTime); //// issue here: it doesn't know the version diff --git a/src/main.h b/src/main.h index 825c81e..38cdd81 100644 --- a/src/main.h +++ b/src/main.h @@ -49,10 +49,7 @@ static const int fHaveUPnP = false; #endif -// Put "/P2SH/" in the coinbase so everybody can tell when -// a majority of miners support it -static const char* pszP2SH = "/P2SH/"; -static const CScript COINBASE_FLAGS = CScript() << std::vector(pszP2SH, pszP2SH+strlen(pszP2SH)); +extern CScript COINBASE_FLAGS; diff --git a/src/util.cpp b/src/util.cpp index 6a4c2a2..0492977 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -488,7 +488,7 @@ bool SoftSetArg(const std::string& strArg, const std::string& strValue) return true; } -bool SoftSetArg(const std::string& strArg, bool fValue) +bool SoftSetBoolArg(const std::string& strArg, bool fValue) { if (fValue) return SoftSetArg(strArg, std::string("1")); diff --git a/src/util.h b/src/util.h index 19f0652..8f86ba0 100644 --- a/src/util.h +++ b/src/util.h @@ -442,7 +442,7 @@ bool SoftSetArg(const std::string& strArg, const std::string& strValue); * @param fValue Value (e.g. false) * @return true if argument gets set, false if it already had a value */ -bool SoftSetArg(const std::string& strArg, bool fValue); +bool SoftSetBoolArg(const std::string& strArg, bool fValue); -- 1.7.1