-bip16 option (default: 1) to support / not support BIP 16. And bumped default BIP16...
authorGavin Andresen <gavinandresen@gmail.com>
Mon, 6 Feb 2012 20:48:00 +0000 (15:48 -0500)
committerGavin Andresen <gavinandresen@gmail.com>
Mon, 6 Feb 2012 21:27:05 +0000 (16:27 -0500)
src/init.cpp
src/main.cpp
src/main.h
src/util.cpp
src/util.h

index 4bb3312..97f5ce7 100644 (file)
@@ -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<unsigned char>(pszP2SH, pszP2SH+strlen(pszP2SH));
+    }
+    else
+    {
+        const char* pszP2SH = "NOP2SH";
+        COINBASE_FLAGS << std::vector<unsigned char>(pszP2SH, pszP2SH+strlen(pszP2SH));
+    }
+
     // Command-line args override in-wallet settings:
     if (mapArgs.count("-upnp"))
         fUseUPnP = GetBoolArg("-upnp");
index f0e5183..9e5f743 100644 (file)
@@ -52,6 +52,8 @@ multimap<uint256, CBlock*> mapOrphanBlocksByPrev;
 map<uint256, CDataStream*> mapOrphanTransactions;
 multimap<uint256, CDataStream*> 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<int64_t>::max());
     bool fStrictPayToScriptHash = (pindex->nTime >= nEvalSwitchTime);
 
     //// issue here: it doesn't know the version
index 825c81e..38cdd81 100644 (file)
@@ -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<unsigned char>(pszP2SH, pszP2SH+strlen(pszP2SH));
+extern CScript COINBASE_FLAGS;
 
 
 
index 6a4c2a2..0492977 100644 (file)
@@ -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"));
index 19f0652..8f86ba0 100644 (file)
@@ -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);