script.h raw
1 // Copyright (c) 2021-present The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5 #ifndef BITCOIN_TEST_UTIL_SCRIPT_H
6 #define BITCOIN_TEST_UTIL_SCRIPT_H
7
8 #include <crypto/sha256.h>
9 #include <script/script.h>
10 #include <script/verify_flags.h>
11
12 static const std::vector<uint8_t> WITNESS_STACK_ELEM_OP_TRUE{uint8_t{OP_TRUE}};
13 static const CScript P2WSH_OP_TRUE{
14 CScript{}
15 << OP_0
16 << ToByteVector([] {
17 uint256 hash;
18 CSHA256().Write(WITNESS_STACK_ELEM_OP_TRUE.data(), WITNESS_STACK_ELEM_OP_TRUE.size()).Finalize(hash.begin());
19 return hash;
20 }())};
21
22 static const std::vector<uint8_t> EMPTY{};
23 static const CScript P2WSH_EMPTY{
24 CScript{}
25 << OP_0
26 << ToByteVector([] {
27 uint256 hash;
28 CSHA256().Write(EMPTY.data(), EMPTY.size()).Finalize(hash.begin());
29 return hash;
30 }())};
31 static const std::vector<std::vector<uint8_t>> P2WSH_EMPTY_TRUE_STACK{{static_cast<uint8_t>(OP_TRUE)}, {}};
32 static const std::vector<std::vector<uint8_t>> P2WSH_EMPTY_TWO_STACK{{static_cast<uint8_t>(OP_2)}, {}};
33
34 /** Flags that are not forbidden by an assert in script validation */
35 bool IsValidFlagCombination(script_verify_flags flags);
36
37 #endif // BITCOIN_TEST_UTIL_SCRIPT_H
38