![]() |
Bitcoin Core 29.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, 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, 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.
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 1833 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 1828 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 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.