Bitcoin Core 28.99.0
P2P Digital Currency
|
#include <consensus/amount.h>
#include <hash.h>
#include <primitives/transaction.h>
#include <script/script_error.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 | BaseSignatureChecker |
class | GenericTransactionSignatureChecker< T > |
class | DeferringSignatureChecker |
Typedefs | |
using | TransactionSignatureChecker = GenericTransactionSignatureChecker< CTransaction > |
using | MutableTransactionSignatureChecker = GenericTransactionSignatureChecker< CMutableTransaction > |
Functions | |
bool | CheckSignatureEncoding (const std::vector< unsigned char > &vchSig, unsigned int 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) |
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, Span< const unsigned char > script) |
Compute the BIP341 tapleaf hash from leaf version & script. More... | |
uint256 | ComputeTapbranchHash (Span< const unsigned char > a, Span< const unsigned char > b) |
Compute the BIP341 tapbranch hash from two branches. More... | |
uint256 | ComputeTaprootMerkleRoot (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, unsigned int flags, const BaseSignatureChecker &checker, SigVersion sigversion, ScriptExecutionData &execdata, ScriptError *error=nullptr) |
bool | EvalScript (std::vector< std::vector< unsigned char > > &stack, const CScript &script, unsigned int flags, const BaseSignatureChecker &checker, SigVersion sigversion, ScriptError *error=nullptr) |
bool | VerifyScript (const CScript &scriptSig, const CScript &scriptPubKey, const CScriptWitness *witness, unsigned int flags, const BaseSignatureChecker &checker, ScriptError *serror=nullptr) |
size_t | CountWitnessSigOps (const CScript &scriptSig, const CScript &scriptPubKey, const CScriptWitness *witness, unsigned int flags) |
int | FindAndDelete (CScript &script, const CScript &b) |
Variables | |
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 307 of file interpreter.h.
Definition at line 306 of file interpreter.h.
anonymous enum |
Signature hash types/flags.
Definition at line 28 of file interpreter.h.
anonymous enum : uint32_t |
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 45 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 274 of file interpreter.h.
|
strong |
Definition at line 190 of file interpreter.h.
bool CheckSignatureEncoding | ( | const std::vector< unsigned char > & | vchSig, |
unsigned int | flags, | ||
ScriptError * | serror | ||
) |
Definition at line 200 of file interpreter.cpp.
Compute the BIP341 tapbranch hash from two branches.
Spans must be 32 bytes each.
Definition at line 1833 of file interpreter.cpp.
Compute the BIP341 tapleaf hash from leaf version & script.
Definition at line 1828 of file interpreter.cpp.
uint256 ComputeTaprootMerkleRoot | ( | 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 1844 of file interpreter.cpp.
size_t CountWitnessSigOps | ( | const CScript & | scriptSig, |
const CScript & | scriptPubKey, | ||
const CScriptWitness * | witness, | ||
unsigned int | flags | ||
) |
Definition at line 2095 of file interpreter.cpp.
bool EvalScript | ( | std::vector< std::vector< unsigned char > > & | stack, |
const CScript & | script, | ||
unsigned int | flags, | ||
const BaseSignatureChecker & | checker, | ||
SigVersion | sigversion, | ||
ScriptError * | error = nullptr |
||
) |
bool EvalScript | ( | std::vector< std::vector< unsigned char > > & | stack, |
const CScript & | script, | ||
unsigned int | flags, | ||
const BaseSignatureChecker & | checker, | ||
SigVersion | sigversion, | ||
ScriptExecutionData & | execdata, | ||
ScriptError * | error = nullptr |
||
) |
Definition at line 406 of file interpreter.cpp.
Definition at line 228 of file interpreter.cpp.
uint256 SignatureHash | ( | const CScript & | scriptCode, |
const T & | txTo, | ||
unsigned int | nIn, | ||
int32_t | nHashType, | ||
const CAmount & | amount, | ||
SigVersion | sigversion, | ||
const PrecomputedTransactionData * | cache = nullptr |
||
) |
Definition at line 1568 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 1478 of file interpreter.cpp.
bool VerifyScript | ( | const CScript & | scriptSig, |
const CScript & | scriptPubKey, | ||
const CScriptWitness * | witness, | ||
unsigned int | flags, | ||
const BaseSignatureChecker & | checker, | ||
ScriptError * | serror = nullptr |
||
) |
Definition at line 1958 of file interpreter.cpp.
|
extern |
Hasher with tag "TapBranch" pre-fed to it.
Definition at line 1463 of file interpreter.cpp.
|
extern |
Hasher with tag "TapLeaf" pre-fed to it.
Definition at line 1462 of file interpreter.cpp.
|
extern |
Hasher with tag "TapSighash" pre-fed to it.
Definition at line 1461 of file interpreter.cpp.
|
staticconstexpr |
Definition at line 233 of file interpreter.h.
|
staticconstexpr |
Definition at line 235 of file interpreter.h.
|
staticconstexpr |
Definition at line 236 of file interpreter.h.
|
staticconstexpr |
Definition at line 234 of file interpreter.h.
|
staticconstexpr |
Definition at line 231 of file interpreter.h.
|
staticconstexpr |
Definition at line 232 of file interpreter.h.
|
staticconstexpr |
Definition at line 228 of file interpreter.h.
|
staticconstexpr |
Signature hash sizes.
Definition at line 227 of file interpreter.h.
|
staticconstexpr |
Definition at line 229 of file interpreter.h.