diff --git a/src/komodo_cryptoconditions.h b/src/komodo_cryptoconditions.h index d5e643c91..3cfc15e12 100644 --- a/src/komodo_cryptoconditions.h +++ b/src/komodo_cryptoconditions.h @@ -1,8 +1,19 @@ +#ifndef KOMODO_CRYPTOCONDITIONS_H +#define KOMODO_CRYPTOCONDITIONS_H +#include "cryptoconditions/include/cryptoconditions.h" + +extern int32_t ASSETCHAINS_CC; + +static bool IsCryptoConditionsEnabled() { + return 0 != ASSETCHAINS_CC; +} /* * Method stub for aux conditions. Unimplemented, thus fails if an aux condition is encountered. */ -int komodoCCAux(CC *cond, void *context) { +static int komodoCCAux(CC *cond, void *context) { return 0; } + +#endif /* KOMODO_CRYPTOCONDITIONS_H */ diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp index 94727cbca..4e03527a4 100644 --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -13,7 +13,6 @@ #include "pubkey.h" #include "script/script.h" #include "uint256.h" -#include "cryptoconditions/include/cryptoconditions.h" #include "komodo_cryptoconditions.h" @@ -940,7 +939,9 @@ bool EvalScript(vector >& stack, const CScript& script, un case OP_CHECKCRYPTOCONDITION: case OP_CHECKCRYPTOCONDITIONVERIFY: { - // (fulfillment condition -- bool) + if (!IsCryptoConditionsEnabled()) { + goto INTERPRETER_DEFAULT; + } if (stack.size() < 2) return set_error(serror, SCRIPT_ERR_INVALID_STACK_OPERATION); @@ -982,6 +983,7 @@ bool EvalScript(vector >& stack, const CScript& script, un } break; +INTERPRETER_DEFAULT: default: return set_error(serror, SCRIPT_ERR_BAD_OPCODE); } diff --git a/src/script/standard.cpp b/src/script/standard.cpp index 4dadaff56..60f059ac3 100644 --- a/src/script/standard.cpp +++ b/src/script/standard.cpp @@ -9,6 +9,7 @@ #include "script/script.h" #include "util.h" #include "utilstrencodings.h" +#include "komodo_cryptoconditions.h" #include @@ -68,11 +69,13 @@ bool Solver(const CScript& scriptPubKey, txnouttype& typeRet, vector