Use block times for 'hard' OP_EVAL switchover, and refactored EvalScript
[novacoin.git] / src / keystore.h
index 942fb9a..669bf90 100644 (file)
@@ -6,6 +6,7 @@
 #define BITCOIN_KEYSTORE_H
 
 #include "crypter.h"
+#include "script.h"
 
 // A virtual base class for key stores
 class CKeyStore
@@ -31,9 +32,10 @@ public:
     virtual void GetKeys(std::set<CBitcoinAddress> &setAddress) const =0;
     virtual bool GetPubKey(const CBitcoinAddress &address, std::vector<unsigned char>& vchPubKeyOut) const;
 
-    virtual bool AddCScript(const uint160 &hash, const std::vector<unsigned char>& data) =0;
+    // Support for BIP 0013 : see https://en.bitcoin.it/wiki/BIP_0013
+    virtual bool AddCScript(const uint160 &hash, const CScript& redeemScript) =0;
     virtual bool HaveCScript(const uint160 &hash) const =0;
-    virtual bool GetCScript(const uint160 &hash, std::vector<unsigned char>& dataOut) const =0;
+    virtual bool GetCScript(const uint160 &hash, CScript& redeemScriptOut) const =0;
 
     // Generate a new key, and add it to the store
     virtual std::vector<unsigned char> GenerateNewKey();
@@ -48,14 +50,14 @@ public:
 };
 
 typedef std::map<CBitcoinAddress, CSecret> KeyMap;
-typedef std::map<uint160, std::vector<unsigned char> > DataMap;
+typedef std::map<uint160, CScript > ScriptMap;
 
 // Basic key store, that keeps keys in an address->secret map
 class CBasicKeyStore : public CKeyStore
 {
 protected:
     KeyMap mapKeys;
-    DataMap mapData;
+    ScriptMap mapScripts;
 
 public:
     bool AddKey(const CKey& key);
@@ -92,9 +94,9 @@ public:
         }
         return false;
     }
-    virtual bool AddCScript(const uint160 &hash, const std::vector<unsigned char>& data);
+    virtual bool AddCScript(const uint160 &hash, const CScript& redeemScript);
     virtual bool HaveCScript(const uint160 &hash) const;
-    virtual bool GetCScript(const uint160 &hash, std::vector<unsigned char>& dataOut) const;
+    virtual bool GetCScript(const uint160 &hash, CScript& redeemScriptOut) const;
 };
 
 typedef std::map<CBitcoinAddress, std::pair<std::vector<unsigned char>, std::vector<unsigned char> > > CryptedKeyMap;