Browse Source

enable cryptoconditions spending

pull/4/head
Scott Sadler 6 years ago
parent
commit
5b383ba7f4
  1. 23
      src/script/script.cpp
  2. 4
      src/script/standard.cpp

23
src/script/script.cpp

@ -227,21 +227,26 @@ bool CScript::IsPayToCryptoCondition() const
{
const_iterator pc = this->begin();
vector<unsigned char> data;
int i;
int i = 0;
while (pc < this->end())
{
opcodetype opcode;
if (!this->GetOp(pc, opcode, data))
return 0;
if (0 == i)
if (opcode != OP_PUSHDATA1)
return 0;
if (1 == i)
if (opcode != OP_CHECKCRYPTOCONDITION)
switch (i++) {
case 0:
// Binary condition should be less than 76 bytes
if (!(opcode > OP_0 && opcode < OP_PUSHDATA1))
return 0;
break;
case 1:
if (opcode != OP_CHECKCRYPTOCONDITION)
return 0;
break;
default:
return 0;
if (i > 1)
return 0;
i++;
break;
}
}
return 1;
}

4
src/script/standard.cpp

@ -71,7 +71,7 @@ bool Solver(const CScript& scriptPubKey, txnouttype& typeRet, vector<vector<unsi
// Shortcut for pay-to-crypto-condition
if (scriptPubKey.IsPayToCryptoCondition()) {
typeRet = TX_CRYPTOCONDITION;
//vSolutionsRet.push_back("hello there");
// TODO: Extract solutions
return true;
}
@ -186,6 +186,8 @@ int ScriptSigArgsExpected(txnouttype t, const std::vector<std::vector<unsigned c
return vSolutions[0][0] + 1;
case TX_SCRIPTHASH:
return 1; // doesn't include args needed by the script
case TX_CRYPTOCONDITION:
return 1;
}
return -1;
}

Loading…
Cancel
Save