basic implementation of transaction replacement. requires cleanup and testing

This commit is contained in:
Scott Sadler
2018-03-08 15:15:01 -03:00
parent b21d2e0f9d
commit 2b2c75de29
12 changed files with 396 additions and 87 deletions

View File

@@ -1154,18 +1154,18 @@ bool TransactionSignatureChecker::CheckSig(const vector<unsigned char>& vchSigIn
extern "C"
{
static int komodoCCAux(CC *cond, void *transactionSignatureChecker);
static int komodoCCEval(CC *cond, void *transactionSignatureChecker);
}
static int komodoCCAux(CC *cond, void *checker) {
return ((TransactionSignatureChecker*)checker)->CheckAuxCondition(cond);
static int komodoCCEval(CC *cond, void *checker) {
return ((TransactionSignatureChecker*)checker)->CheckEvalCondition(cond);
}
bool TransactionSignatureChecker::CheckCryptoCondition(const CC *cond, const std::vector<unsigned char>& condBin, const CScript& scriptCode) const
{
uint256 message = SignatureHash(scriptCode, *txTo, nIn, SIGHASH_ALL);
return cc_verify(cond, (const unsigned char*)&message, 32, 0,
condBin.data(), condBin.size(), komodoCCAux, (void*)this);
condBin.data(), condBin.size(), komodoCCEval, (void*)this);
}
bool TransactionSignatureChecker::CheckLockTime(const CScriptNum& nLockTime) const

View File

@@ -125,7 +125,7 @@ public:
bool CheckSig(const std::vector<unsigned char>& scriptSig, const std::vector<unsigned char>& vchPubKey, const CScript& scriptCode) const;
bool CheckLockTime(const CScriptNum& nLockTime) const;
bool CheckCryptoCondition(const CC *cond, const std::vector<unsigned char>& condBin, const CScript& scriptCode) const;
int CheckAuxCondition(const CC *cond) const;
bool CheckEvalCondition(const CC *cond) const;
};
class MutableTransactionSignatureChecker : public TransactionSignatureChecker