Changeset View
Changeset View
Standalone View
Standalone View
src/script/interpreter.h
// Copyright (c) 2009-2010 Satoshi Nakamoto | // Copyright (c) 2009-2010 Satoshi Nakamoto | ||||
// Copyright (c) 2009-2016 The Bitcoin Core developers | // Copyright (c) 2009-2016 The Bitcoin Core developers | ||||
// Copyright (c) 2017-2018 The Bitcoin developers | // Copyright (c) 2017-2018 The Bitcoin developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#ifndef BITCOIN_SCRIPT_INTERPRETER_H | #ifndef BITCOIN_SCRIPT_INTERPRETER_H | ||||
#define BITCOIN_SCRIPT_INTERPRETER_H | #define BITCOIN_SCRIPT_INTERPRETER_H | ||||
#include <primitives/transaction.h> | #include <primitives/transaction.h> | ||||
#include <script/script_error.h> | #include <script/script_error.h> | ||||
#include <script/script_flags.h> | #include <script/script_flags.h> | ||||
#include <script/script_metrics.h> | |||||
#include <script/sighashtype.h> | #include <script/sighashtype.h> | ||||
#include <cstdint> | #include <cstdint> | ||||
#include <string> | #include <string> | ||||
#include <vector> | #include <vector> | ||||
class CPubKey; | class CPubKey; | ||||
class CScript; | class CScript; | ||||
▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | public: | ||||
bool CheckSequence(const CScriptNum &nSequence) const final override; | bool CheckSequence(const CScriptNum &nSequence) const final override; | ||||
}; | }; | ||||
using TransactionSignatureChecker = | using TransactionSignatureChecker = | ||||
GenericTransactionSignatureChecker<CTransaction>; | GenericTransactionSignatureChecker<CTransaction>; | ||||
using MutableTransactionSignatureChecker = | using MutableTransactionSignatureChecker = | ||||
GenericTransactionSignatureChecker<CMutableTransaction>; | GenericTransactionSignatureChecker<CMutableTransaction>; | ||||
/** | |||||
* Struct for holding cumulative results from executing a script or a sequence | |||||
* of scripts. | |||||
*/ | |||||
struct ScriptExecutionMetrics { | |||||
int nSigChecks = 0; | |||||
}; | |||||
bool EvalScript(std::vector<std::vector<uint8_t>> &stack, const CScript &script, | bool EvalScript(std::vector<std::vector<uint8_t>> &stack, const CScript &script, | ||||
uint32_t flags, const BaseSignatureChecker &checker, | uint32_t flags, const BaseSignatureChecker &checker, | ||||
ScriptExecutionMetrics &metrics, ScriptError *error = nullptr); | ScriptExecutionMetrics &metrics, ScriptError *error = nullptr); | ||||
static inline bool EvalScript(std::vector<std::vector<uint8_t>> &stack, | static inline bool EvalScript(std::vector<std::vector<uint8_t>> &stack, | ||||
const CScript &script, uint32_t flags, | const CScript &script, uint32_t flags, | ||||
const BaseSignatureChecker &checker, | const BaseSignatureChecker &checker, | ||||
ScriptError *error = nullptr) { | ScriptError *error = nullptr) { | ||||
ScriptExecutionMetrics dummymetrics; | ScriptExecutionMetrics dummymetrics; | ||||
Show All 25 Lines |