Add CScriptCheck: a closure representing a script check

This commit is contained in:
Pieter Wuille
2012-12-01 22:30:06 +01:00
parent f1136200a6
commit 2800ce7367
2 changed files with 34 additions and 8 deletions

View File

@@ -430,7 +430,6 @@ enum GetMinFee_mode
GMF_SEND,
};
// Modes for script/signature checking
enum CheckSig_mode
{
CS_NEVER, // never validate scripts
@@ -1015,7 +1014,33 @@ public:
}
};
/** Closure representing one script verification
* Note that this stores references to the spending transaction */
class CScriptCheck
{
private:
CScript scriptPubKey;
const CTransaction *ptxTo;
unsigned int nIn;
unsigned int nFlags;
int nHashType;
public:
CScriptCheck() {}
CScriptCheck(const CCoins& txFromIn, const CTransaction& txToIn, unsigned int nInIn, unsigned int nFlagsIn, int nHashTypeIn) :
scriptPubKey(txFromIn.vout[txToIn.vin[nInIn].prevout.n].scriptPubKey),
ptxTo(&txToIn), nIn(nInIn), nFlags(nFlagsIn), nHashType(nHashTypeIn) { }
bool operator()() const;
void swap(CScriptCheck &check) {
scriptPubKey.swap(check.scriptPubKey);
std::swap(ptxTo, check.ptxTo);
std::swap(nIn, check.nIn);
std::swap(nFlags, check.nFlags);
std::swap(nHashType, check.nHashType);
}
};
/** A transaction with a merkle branch linking it to the block chain. */
class CMerkleTx : public CTransaction