![]() |
Bitcoin Core 30.99.0
P2P Digital Currency
|
#include <consensus/amount.h>#include <hash.h>#include <primitives/transaction.h>#include <script/script_error.h>#include <script/verify_flags.h>#include <span.h>#include <uint256.h>#include <cstddef>#include <cstdint>#include <optional>#include <vector>Go to the source code of this file.
Classes | |
| struct | PrecomputedTransactionData |
| struct | ScriptExecutionData |
| class | SigHashCache |
| Data structure to cache SHA256 midstates for the ECDSA sighash calculations (bare, P2SH, P2WPKH, P2WSH). More... | |
| class | BaseSignatureChecker |
| class | GenericTransactionSignatureChecker< T > |
| class | DeferringSignatureChecker |
Typedefs | |
| using | TransactionSignatureChecker = GenericTransactionSignatureChecker< CTransaction > |
| using | MutableTransactionSignatureChecker = GenericTransactionSignatureChecker< CMutableTransaction > |
Functions | |
| bool | CheckSignatureEncoding (const std::vector< unsigned char > &vchSig, script_verify_flags flags, ScriptError *serror) |
| template<class T > | |
| uint256 | SignatureHash (const CScript &scriptCode, const T &txTo, unsigned int nIn, int32_t nHashType, const CAmount &amount, SigVersion sigversion, const PrecomputedTransactionData *cache=nullptr, SigHashCache *sighash_cache=nullptr) |
| template<typename T > | |
| bool | SignatureHashSchnorr (uint256 &hash_out, ScriptExecutionData &execdata, const T &tx_to, uint32_t in_pos, uint8_t hash_type, SigVersion sigversion, const PrecomputedTransactionData &cache, MissingDataBehavior mdb) |
| uint256 | ComputeTapleafHash (uint8_t leaf_version, std::span< const unsigned char > script) |
| Compute the BIP341 tapleaf hash from leaf version & script. More... | |
| uint256 | ComputeTapbranchHash (std::span< const unsigned char > a, std::span< const unsigned char > b) |
| Compute the BIP341 tapbranch hash from two branches. More... | |
| uint256 | ComputeTaprootMerkleRoot (std::span< const unsigned char > control, const uint256 &tapleaf_hash) |
| Compute the BIP341 taproot script tree Merkle root from control block and leaf hash. More... | |
| bool | EvalScript (std::vector< std::vector< unsigned char > > &stack, const CScript &script, script_verify_flags flags, const BaseSignatureChecker &checker, SigVersion sigversion, ScriptExecutionData &execdata, ScriptError *error=nullptr) |
| bool | EvalScript (std::vector< std::vector< unsigned char > > &stack, const CScript &script, script_verify_flags flags, const BaseSignatureChecker &checker, SigVersion sigversion, ScriptError *error=nullptr) |
| bool | VerifyScript (const CScript &scriptSig, const CScript &scriptPubKey, const CScriptWitness *witness, script_verify_flags flags, const BaseSignatureChecker &checker, ScriptError *serror=nullptr) |
| size_t | CountWitnessSigOps (const CScript &scriptSig, const CScript &scriptPubKey, const CScriptWitness *witness, script_verify_flags flags) |
| int | FindAndDelete (CScript &script, const CScript &b) |
| const std::map< std::string, script_verify_flag_name > & | ScriptFlagNamesToEnum () |
| std::vector< std::string > | GetScriptFlagNames (script_verify_flags flags) |
Variables | |
| static constexpr script_verify_flags | SCRIPT_VERIFY_NONE {0} |
| Script verification flags. More... | |
| static constexpr int | MAX_SCRIPT_VERIFY_FLAGS_BITS = static_cast<int>(SCRIPT_VERIFY_END_MARKER) |
| static constexpr script_verify_flags::value_type | MAX_SCRIPT_VERIFY_FLAGS = ((script_verify_flags::value_type{1} << MAX_SCRIPT_VERIFY_FLAGS_BITS) - 1) |
| static constexpr size_t | WITNESS_V0_SCRIPTHASH_SIZE = 32 |
| Signature hash sizes. More... | |
| static constexpr size_t | WITNESS_V0_KEYHASH_SIZE = 20 |
| static constexpr size_t | WITNESS_V1_TAPROOT_SIZE = 32 |
| static constexpr uint8_t | TAPROOT_LEAF_MASK = 0xfe |
| static constexpr uint8_t | TAPROOT_LEAF_TAPSCRIPT = 0xc0 |
| static constexpr size_t | TAPROOT_CONTROL_BASE_SIZE = 33 |
| static constexpr size_t | TAPROOT_CONTROL_NODE_SIZE = 32 |
| static constexpr size_t | TAPROOT_CONTROL_MAX_NODE_COUNT = 128 |
| static constexpr size_t | TAPROOT_CONTROL_MAX_SIZE = TAPROOT_CONTROL_BASE_SIZE + TAPROOT_CONTROL_NODE_SIZE * TAPROOT_CONTROL_MAX_NODE_COUNT |
| const HashWriter | HASHER_TAPSIGHASH |
| Hasher with tag "TapSighash" pre-fed to it. More... | |
| const HashWriter | HASHER_TAPLEAF |
| Hasher with tag "TapLeaf" pre-fed to it. More... | |
| const HashWriter | HASHER_TAPBRANCH |
| Hasher with tag "TapBranch" pre-fed to it. More... | |
Definition at line 337 of file interpreter.h.
Definition at line 336 of file interpreter.h.
| anonymous enum |
Signature hash types/flags.
Definition at line 29 of file interpreter.h.
|
strong |
Enum to specify what *TransactionSignatureChecker's behavior should be when dealing with missing transaction data.
| Enumerator | |
|---|---|
| ASSERT_FAIL | Abort execution through assertion failure (for consensus code) |
| FAIL | Just act as if the signature was invalid. |
Definition at line 303 of file interpreter.h.
|
strong |
Definition at line 49 of file interpreter.h.
|
strong |
Definition at line 200 of file interpreter.h.
| bool CheckSignatureEncoding | ( | const std::vector< unsigned char > & | vchSig, |
| script_verify_flags | flags, | ||
| ScriptError * | serror | ||
| ) |
Definition at line 201 of file interpreter.cpp.
| uint256 ComputeTapbranchHash | ( | std::span< const unsigned char > | a, |
| std::span< const unsigned char > | b | ||
| ) |
Compute the BIP341 tapbranch hash from two branches.
Spans must be 32 bytes each.
Definition at line 1873 of file interpreter.cpp.
| uint256 ComputeTapleafHash | ( | uint8_t | leaf_version, |
| std::span< const unsigned char > | script | ||
| ) |
Compute the BIP341 tapleaf hash from leaf version & script.
Definition at line 1868 of file interpreter.cpp.
| uint256 ComputeTaprootMerkleRoot | ( | std::span< const unsigned char > | control, |
| const uint256 & | tapleaf_hash | ||
| ) |
Compute the BIP341 taproot script tree Merkle root from control block and leaf hash.
Requires control block to have valid length (33 + k*32, with k in {0,1,..,128}).
Definition at line 1884 of file interpreter.cpp.
| size_t CountWitnessSigOps | ( | const CScript & | scriptSig, |
| const CScript & | scriptPubKey, | ||
| const CScriptWitness * | witness, | ||
| script_verify_flags | flags | ||
| ) |
Definition at line 2135 of file interpreter.cpp.
| bool EvalScript | ( | std::vector< std::vector< unsigned char > > & | stack, |
| const CScript & | script, | ||
| script_verify_flags | flags, | ||
| const BaseSignatureChecker & | checker, | ||
| SigVersion | sigversion, | ||
| ScriptError * | error = nullptr |
||
| ) |
| bool EvalScript | ( | std::vector< std::vector< unsigned char > > & | stack, |
| const CScript & | script, | ||
| script_verify_flags | flags, | ||
| const BaseSignatureChecker & | checker, | ||
| SigVersion | sigversion, | ||
| ScriptExecutionData & | execdata, | ||
| ScriptError * | error = nullptr |
||
| ) |
Definition at line 407 of file interpreter.cpp.
Definition at line 229 of file interpreter.cpp.
| std::vector< std::string > GetScriptFlagNames | ( | script_verify_flags | flags | ) |
Definition at line 2196 of file interpreter.cpp.
| const std::map< std::string, script_verify_flag_name > & ScriptFlagNamesToEnum | ( | ) |
| uint256 SignatureHash | ( | const CScript & | scriptCode, |
| const T & | txTo, | ||
| unsigned int | nIn, | ||
| int32_t | nHashType, | ||
| const CAmount & | amount, | ||
| SigVersion | sigversion, | ||
| const PrecomputedTransactionData * | cache = nullptr, |
||
| SigHashCache * | sighash_cache = nullptr |
||
| ) |
Definition at line 1596 of file interpreter.cpp.
| bool SignatureHashSchnorr | ( | uint256 & | hash_out, |
| ScriptExecutionData & | execdata, | ||
| const T & | tx_to, | ||
| uint32_t | in_pos, | ||
| uint8_t | hash_type, | ||
| SigVersion | sigversion, | ||
| const PrecomputedTransactionData & | cache, | ||
| MissingDataBehavior | mdb | ||
| ) |
Definition at line 1479 of file interpreter.cpp.
| bool VerifyScript | ( | const CScript & | scriptSig, |
| const CScript & | scriptPubKey, | ||
| const CScriptWitness * | witness, | ||
| script_verify_flags | flags, | ||
| const BaseSignatureChecker & | checker, | ||
| ScriptError * | serror = nullptr |
||
| ) |
Definition at line 1998 of file interpreter.cpp.
|
extern |
Hasher with tag "TapBranch" pre-fed to it.
Definition at line 1464 of file interpreter.cpp.
|
extern |
Hasher with tag "TapLeaf" pre-fed to it.
Definition at line 1463 of file interpreter.cpp.
|
extern |
Hasher with tag "TapSighash" pre-fed to it.
Definition at line 1462 of file interpreter.cpp.
|
staticconstexpr |
Definition at line 159 of file interpreter.h.
|
staticconstexpr |
Definition at line 154 of file interpreter.h.
|
staticconstexpr |
Script verification flags.
All flags are intended to be soft forks: the set of acceptable scripts under flags (A | B) is a subset of the acceptable scripts under flag (A).
Definition at line 47 of file interpreter.h.
|
staticconstexpr |
Definition at line 243 of file interpreter.h.
|
staticconstexpr |
Definition at line 245 of file interpreter.h.
|
staticconstexpr |
Definition at line 246 of file interpreter.h.
|
staticconstexpr |
Definition at line 244 of file interpreter.h.
|
staticconstexpr |
Definition at line 241 of file interpreter.h.
|
staticconstexpr |
Definition at line 242 of file interpreter.h.
|
staticconstexpr |
Definition at line 238 of file interpreter.h.
|
staticconstexpr |
Signature hash sizes.
Definition at line 237 of file interpreter.h.
|
staticconstexpr |
Definition at line 239 of file interpreter.h.