Cleanup: Wrap function arguments
This commit is contained in:
parent
be12669982
commit
d55e5e778b
12
src/main.cpp
12
src/main.cpp
|
@ -1812,7 +1812,17 @@ bool CheckTxInputs(const CTransaction& tx, CValidationState& state, const CCoins
|
||||||
}
|
}
|
||||||
}// namespace Consensus
|
}// namespace Consensus
|
||||||
|
|
||||||
bool ContextualCheckInputs(const CTransaction& tx, CValidationState &state, const CCoinsViewCache &inputs, bool fScriptChecks, unsigned int flags, bool cacheStore, PrecomputedTransactionData& txdata, const Consensus::Params& consensusParams, uint32_t consensusBranchId, std::vector<CScriptCheck> *pvChecks)
|
bool ContextualCheckInputs(
|
||||||
|
const CTransaction& tx,
|
||||||
|
CValidationState &state,
|
||||||
|
const CCoinsViewCache &inputs,
|
||||||
|
bool fScriptChecks,
|
||||||
|
unsigned int flags,
|
||||||
|
bool cacheStore,
|
||||||
|
PrecomputedTransactionData& txdata,
|
||||||
|
const Consensus::Params& consensusParams,
|
||||||
|
uint32_t consensusBranchId,
|
||||||
|
std::vector<CScriptCheck> *pvChecks)
|
||||||
{
|
{
|
||||||
if (!tx.IsCoinBase())
|
if (!tx.IsCoinBase())
|
||||||
{
|
{
|
||||||
|
|
|
@ -232,7 +232,13 @@ bool static CheckMinimalPush(const valtype& data, opcodetype opcode) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EvalScript(vector<vector<unsigned char> >& stack, const CScript& script, unsigned int flags, const BaseSignatureChecker& checker, uint32_t consensusBranchId, ScriptError* serror)
|
bool EvalScript(
|
||||||
|
vector<vector<unsigned char> >& stack,
|
||||||
|
const CScript& script,
|
||||||
|
unsigned int flags,
|
||||||
|
const BaseSignatureChecker& checker,
|
||||||
|
uint32_t consensusBranchId,
|
||||||
|
ScriptError* serror)
|
||||||
{
|
{
|
||||||
static const CScriptNum bnZero(0);
|
static const CScriptNum bnZero(0);
|
||||||
static const CScriptNum bnOne(1);
|
static const CScriptNum bnOne(1);
|
||||||
|
@ -1092,7 +1098,14 @@ SigVersion SignatureHashVersion(const CTransaction& txTo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint256 SignatureHash(const CScript& scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType, const CAmount& amount, uint32_t consensusBranchId, const PrecomputedTransactionData* cache)
|
uint256 SignatureHash(
|
||||||
|
const CScript& scriptCode,
|
||||||
|
const CTransaction& txTo,
|
||||||
|
unsigned int nIn,
|
||||||
|
int nHashType,
|
||||||
|
const CAmount& amount,
|
||||||
|
uint32_t consensusBranchId,
|
||||||
|
const PrecomputedTransactionData* cache)
|
||||||
{
|
{
|
||||||
if (nIn >= txTo.vin.size() && nIn != NOT_AN_INPUT) {
|
if (nIn >= txTo.vin.size() && nIn != NOT_AN_INPUT) {
|
||||||
// nIn out of range
|
// nIn out of range
|
||||||
|
@ -1165,12 +1178,17 @@ uint256 SignatureHash(const CScript& scriptCode, const CTransaction& txTo, unsig
|
||||||
return ss.GetHash();
|
return ss.GetHash();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TransactionSignatureChecker::VerifySignature(const std::vector<unsigned char>& vchSig, const CPubKey& pubkey, const uint256& sighash) const
|
bool TransactionSignatureChecker::VerifySignature(
|
||||||
|
const std::vector<unsigned char>& vchSig, const CPubKey& pubkey, const uint256& sighash) const
|
||||||
{
|
{
|
||||||
return pubkey.Verify(sighash, vchSig);
|
return pubkey.Verify(sighash, vchSig);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TransactionSignatureChecker::CheckSig(const vector<unsigned char>& vchSigIn, const vector<unsigned char>& vchPubKey, const CScript& scriptCode, uint32_t consensusBranchId) const
|
bool TransactionSignatureChecker::CheckSig(
|
||||||
|
const vector<unsigned char>& vchSigIn,
|
||||||
|
const vector<unsigned char>& vchPubKey,
|
||||||
|
const CScript& scriptCode,
|
||||||
|
uint32_t consensusBranchId) const
|
||||||
{
|
{
|
||||||
CPubKey pubkey(vchPubKey);
|
CPubKey pubkey(vchPubKey);
|
||||||
if (!pubkey.IsValid())
|
if (!pubkey.IsValid())
|
||||||
|
@ -1233,7 +1251,13 @@ bool TransactionSignatureChecker::CheckLockTime(const CScriptNum& nLockTime) con
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool VerifyScript(const CScript& scriptSig, const CScript& scriptPubKey, unsigned int flags, const BaseSignatureChecker& checker, uint32_t consensusBranchId, ScriptError* serror)
|
bool VerifyScript(
|
||||||
|
const CScript& scriptSig,
|
||||||
|
const CScript& scriptPubKey,
|
||||||
|
unsigned int flags,
|
||||||
|
const BaseSignatureChecker& checker,
|
||||||
|
uint32_t consensusBranchId,
|
||||||
|
ScriptError* serror)
|
||||||
{
|
{
|
||||||
set_error(serror, SCRIPT_ERR_UNKNOWN_ERROR);
|
set_error(serror, SCRIPT_ERR_UNKNOWN_ERROR);
|
||||||
|
|
||||||
|
|
|
@ -101,12 +101,23 @@ enum SigVersion
|
||||||
SIGVERSION_OVERWINTER = 1,
|
SIGVERSION_OVERWINTER = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
uint256 SignatureHash(const CScript &scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType, const CAmount& amount, uint32_t consensusBranchId, const PrecomputedTransactionData* cache = NULL);
|
uint256 SignatureHash(
|
||||||
|
const CScript &scriptCode,
|
||||||
|
const CTransaction& txTo,
|
||||||
|
unsigned int nIn,
|
||||||
|
int nHashType,
|
||||||
|
const CAmount& amount,
|
||||||
|
uint32_t consensusBranchId,
|
||||||
|
const PrecomputedTransactionData* cache = NULL);
|
||||||
|
|
||||||
class BaseSignatureChecker
|
class BaseSignatureChecker
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual bool CheckSig(const std::vector<unsigned char>& scriptSig, const std::vector<unsigned char>& vchPubKey, const CScript& scriptCode, uint32_t consensusBranchId) const
|
virtual bool CheckSig(
|
||||||
|
const std::vector<unsigned char>& scriptSig,
|
||||||
|
const std::vector<unsigned char>& vchPubKey,
|
||||||
|
const CScript& scriptCode,
|
||||||
|
uint32_t consensusBranchId) const
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -146,7 +157,19 @@ public:
|
||||||
MutableTransactionSignatureChecker(const CMutableTransaction* txToIn, unsigned int nInIn, const CAmount& amount) : TransactionSignatureChecker(&txTo, nInIn, amount), txTo(*txToIn) {}
|
MutableTransactionSignatureChecker(const CMutableTransaction* txToIn, unsigned int nInIn, const CAmount& amount) : TransactionSignatureChecker(&txTo, nInIn, amount), txTo(*txToIn) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
bool EvalScript(std::vector<std::vector<unsigned char> >& stack, const CScript& script, unsigned int flags, const BaseSignatureChecker& checker, uint32_t consensusBranchId, ScriptError* error = NULL);
|
bool EvalScript(
|
||||||
bool VerifyScript(const CScript& scriptSig, const CScript& scriptPubKey, unsigned int flags, const BaseSignatureChecker& checker, uint32_t consensusBranchId, ScriptError* serror = NULL);
|
std::vector<std::vector<unsigned char> >& stack,
|
||||||
|
const CScript& script,
|
||||||
|
unsigned int flags,
|
||||||
|
const BaseSignatureChecker& checker,
|
||||||
|
uint32_t consensusBranchId,
|
||||||
|
ScriptError* error = NULL);
|
||||||
|
bool VerifyScript(
|
||||||
|
const CScript& scriptSig,
|
||||||
|
const CScript& scriptPubKey,
|
||||||
|
unsigned int flags,
|
||||||
|
const BaseSignatureChecker& checker,
|
||||||
|
uint32_t consensusBranchId,
|
||||||
|
ScriptError* serror = NULL);
|
||||||
|
|
||||||
#endif // BITCOIN_SCRIPT_INTERPRETER_H
|
#endif // BITCOIN_SCRIPT_INTERPRETER_H
|
||||||
|
|
|
@ -168,7 +168,14 @@ void UpdateTransaction(CMutableTransaction& tx, unsigned int nIn, const Signatur
|
||||||
tx.vin[nIn].scriptSig = data.scriptSig;
|
tx.vin[nIn].scriptSig = data.scriptSig;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SignSignature(const CKeyStore &keystore, const CScript& fromPubKey, CMutableTransaction& txTo, unsigned int nIn, const CAmount& amount, int nHashType, uint32_t consensusBranchId)
|
bool SignSignature(
|
||||||
|
const CKeyStore &keystore,
|
||||||
|
const CScript& fromPubKey,
|
||||||
|
CMutableTransaction& txTo,
|
||||||
|
unsigned int nIn,
|
||||||
|
const CAmount& amount,
|
||||||
|
int nHashType,
|
||||||
|
uint32_t consensusBranchId)
|
||||||
{
|
{
|
||||||
assert(nIn < txTo.vin.size());
|
assert(nIn < txTo.vin.size());
|
||||||
|
|
||||||
|
@ -181,7 +188,13 @@ bool SignSignature(const CKeyStore &keystore, const CScript& fromPubKey, CMutabl
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SignSignature(const CKeyStore &keystore, const CTransaction& txFrom, CMutableTransaction& txTo, unsigned int nIn, int nHashType, uint32_t consensusBranchId)
|
bool SignSignature(
|
||||||
|
const CKeyStore &keystore,
|
||||||
|
const CTransaction& txFrom,
|
||||||
|
CMutableTransaction& txTo,
|
||||||
|
unsigned int nIn,
|
||||||
|
int nHashType,
|
||||||
|
uint32_t consensusBranchId)
|
||||||
{
|
{
|
||||||
assert(nIn < txTo.vin.size());
|
assert(nIn < txTo.vin.size());
|
||||||
CTxIn& txin = txTo.vin[nIn];
|
CTxIn& txin = txTo.vin[nIn];
|
||||||
|
@ -319,7 +332,11 @@ SignatureData CombineSignatures(const CScript& scriptPubKey, const BaseSignature
|
||||||
vector<vector<unsigned char> > vSolutions;
|
vector<vector<unsigned char> > vSolutions;
|
||||||
Solver(scriptPubKey, txType, vSolutions);
|
Solver(scriptPubKey, txType, vSolutions);
|
||||||
|
|
||||||
return CombineSignatures(scriptPubKey, checker, txType, vSolutions, Stacks(scriptSig1, consensusBranchId), Stacks(scriptSig2, consensusBranchId), consensusBranchId).Output();
|
return CombineSignatures(
|
||||||
|
scriptPubKey, checker, txType, vSolutions,
|
||||||
|
Stacks(scriptSig1, consensusBranchId),
|
||||||
|
Stacks(scriptSig2, consensusBranchId),
|
||||||
|
consensusBranchId).Output();
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -329,7 +346,11 @@ class DummySignatureChecker : public BaseSignatureChecker
|
||||||
public:
|
public:
|
||||||
DummySignatureChecker() {}
|
DummySignatureChecker() {}
|
||||||
|
|
||||||
bool CheckSig(const std::vector<unsigned char>& scriptSig, const std::vector<unsigned char>& vchPubKey, const CScript& scriptCode, uint32_t consensusBranchId) const
|
bool CheckSig(
|
||||||
|
const std::vector<unsigned char>& scriptSig,
|
||||||
|
const std::vector<unsigned char>& vchPubKey,
|
||||||
|
const CScript& scriptCode,
|
||||||
|
uint32_t consensusBranchId) const
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -342,7 +363,11 @@ const BaseSignatureChecker& DummySignatureCreator::Checker() const
|
||||||
return dummyChecker;
|
return dummyChecker;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DummySignatureCreator::CreateSig(std::vector<unsigned char>& vchSig, const CKeyID& keyid, const CScript& scriptCode, uint32_t consensusBranchId) const
|
bool DummySignatureCreator::CreateSig(
|
||||||
|
std::vector<unsigned char>& vchSig,
|
||||||
|
const CKeyID& keyid,
|
||||||
|
const CScript& scriptCode,
|
||||||
|
uint32_t consensusBranchId) const
|
||||||
{
|
{
|
||||||
// Create a dummy signature that is a valid DER-encoding
|
// Create a dummy signature that is a valid DER-encoding
|
||||||
vchSig.assign(72, '\000');
|
vchSig.assign(72, '\000');
|
||||||
|
|
|
@ -70,11 +70,29 @@ struct SignatureData {
|
||||||
bool ProduceSignature(const BaseSignatureCreator& creator, const CScript& scriptPubKey, SignatureData& sigdata, uint32_t consensusBranchId);
|
bool ProduceSignature(const BaseSignatureCreator& creator, const CScript& scriptPubKey, SignatureData& sigdata, uint32_t consensusBranchId);
|
||||||
|
|
||||||
/** Produce a script signature for a transaction. */
|
/** Produce a script signature for a transaction. */
|
||||||
bool SignSignature(const CKeyStore &keystore, const CScript& fromPubKey, CMutableTransaction& txTo, unsigned int nIn, const CAmount& amount, int nHashType, uint32_t consensusBranchId);
|
bool SignSignature(
|
||||||
bool SignSignature(const CKeyStore& keystore, const CTransaction& txFrom, CMutableTransaction& txTo, unsigned int nIn, int nHashType, uint32_t consensusBranchId);
|
const CKeyStore &keystore,
|
||||||
|
const CScript& fromPubKey,
|
||||||
|
CMutableTransaction& txTo,
|
||||||
|
unsigned int nIn,
|
||||||
|
const CAmount& amount,
|
||||||
|
int nHashType,
|
||||||
|
uint32_t consensusBranchId);
|
||||||
|
bool SignSignature(
|
||||||
|
const CKeyStore& keystore,
|
||||||
|
const CTransaction& txFrom,
|
||||||
|
CMutableTransaction& txTo,
|
||||||
|
unsigned int nIn,
|
||||||
|
int nHashType,
|
||||||
|
uint32_t consensusBranchId);
|
||||||
|
|
||||||
/** Combine two script signatures using a generic signature checker, intelligently, possibly with OP_0 placeholders. */
|
/** Combine two script signatures using a generic signature checker, intelligently, possibly with OP_0 placeholders. */
|
||||||
SignatureData CombineSignatures(const CScript& scriptPubKey, const BaseSignatureChecker& checker, const SignatureData& scriptSig1, const SignatureData& scriptSig2, uint32_t consensusBranchId);
|
SignatureData CombineSignatures(
|
||||||
|
const CScript& scriptPubKey,
|
||||||
|
const BaseSignatureChecker& checker,
|
||||||
|
const SignatureData& scriptSig1,
|
||||||
|
const SignatureData& scriptSig2,
|
||||||
|
uint32_t consensusBranchId);
|
||||||
|
|
||||||
/** Extract signature data from a transaction, and insert it. */
|
/** Extract signature data from a transaction, and insert it. */
|
||||||
SignatureData DataFromTransaction(const CMutableTransaction& tx, unsigned int nIn);
|
SignatureData DataFromTransaction(const CMutableTransaction& tx, unsigned int nIn);
|
||||||
|
|
|
@ -88,7 +88,13 @@ int zcashconsensus_verify_script(const unsigned char *scriptPubKey, unsigned int
|
||||||
PrecomputedTransactionData txdata(tx);
|
PrecomputedTransactionData txdata(tx);
|
||||||
CAmount am(0);
|
CAmount am(0);
|
||||||
uint32_t consensusBranchId = SPROUT_BRANCH_ID;
|
uint32_t consensusBranchId = SPROUT_BRANCH_ID;
|
||||||
return VerifyScript(tx.vin[nIn].scriptSig, CScript(scriptPubKey, scriptPubKey + scriptPubKeyLen), flags, TransactionSignatureChecker(&tx, nIn, am, txdata), consensusBranchId, NULL);
|
return VerifyScript(
|
||||||
|
tx.vin[nIn].scriptSig,
|
||||||
|
CScript(scriptPubKey, scriptPubKey + scriptPubKeyLen),
|
||||||
|
flags,
|
||||||
|
TransactionSignatureChecker(&tx, nIn, am, txdata),
|
||||||
|
consensusBranchId,
|
||||||
|
NULL);
|
||||||
} catch (const std::exception&) {
|
} catch (const std::exception&) {
|
||||||
return set_error(err, zcashconsensus_ERR_TX_DESERIALIZE); // Error deserializing
|
return set_error(err, zcashconsensus_ERR_TX_DESERIALIZE); // Error deserializing
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue