Put OP_EVAL string in coinbase of generated blocks
authorGavin Andresen <gavinandresen@gmail.com>
Thu, 13 Oct 2011 20:03:58 +0000 (16:03 -0400)
committerGavin Andresen <gavinandresen@gmail.com>
Mon, 19 Dec 2011 18:24:48 +0000 (13:24 -0500)
src/base58.h
src/main.cpp

index 8fc546c..4be1198 100644 (file)
@@ -270,7 +270,7 @@ public:
 
     bool SetScriptHash160(const uint160& hash160)
     {
-        SetData(fTestNet ? 112 : 1, &hash160, 20);
+        SetData(fTestNet ? 111^2 : 2, &hash160, 20);
         return true;
     }
 
@@ -284,7 +284,7 @@ public:
                 nExpectedSize = 20; // Hash of public key
                 fExpectTestNet = false;
                 break;
-            case 1:
+            case 2:
                 nExpectedSize = 20; // OP_EVAL, hash of CScript
                 fExpectTestNet = false;
                 break;
@@ -293,7 +293,7 @@ public:
                 nExpectedSize = 20;
                 fExpectTestNet = true;
                 break;
-            case 112:
+            case 111^2:
                 nExpectedSize = 20;
                 fExpectTestNet = true;
                 break;
@@ -308,8 +308,8 @@ public:
         if (!IsValid())
             return false;
         if (fTestNet)
-            return nVersion == 112;
-        return nVersion == 1;
+            return nVersion == 111^2;
+        return nVersion == 2;
     }
 
     CBitcoinAddress()
index 0fb383f..1b5bf52 100644 (file)
@@ -2999,6 +2999,13 @@ void IncrementExtraNonce(CBlock* pblock, CBlockIndex* pindexPrev, unsigned int&
     }
     ++nExtraNonce;
     pblock->vtx[0].vin[0].scriptSig = CScript() << pblock->nTime << CBigNum(nExtraNonce);
+
+    // Put "OP_EVAL" in the coinbase so everybody can tell when
+    // a majority of miners support it
+    const char* pOpEvalName = GetOpName(OP_EVAL);
+    pblock->vtx[0].vin[0].scriptSig += CScript() << std::vector<unsigned char>(pOpEvalName, pOpEvalName+strlen(pOpEvalName));
+    assert(pblock->vtx[0].vin[0].scriptSig.size() <= 100);
+
     pblock->hashMerkleRoot = pblock->BuildMerkleTree();
 }