script.h raw
1 // Copyright (c) 2021 The Limenka 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 LIMENKA_TEST_UTIL_SCRIPT_H
6 #define LIMENKA_TEST_UTIL_SCRIPT_H
7
8 #include <crypto/sha256.h>
9 #include <script/script.h>
10
11 static const std::vector<uint8_t> WITNESS_STACK_ELEM_OP_TRUE{uint8_t{OP_TRUE}};
12 static const CScript P2WSH_OP_TRUE{
13 CScript{}
14 << OP_0
15 << ToByteVector([] {
16 uint256 hash;
17 CSHA256().Write(WITNESS_STACK_ELEM_OP_TRUE.data(), WITNESS_STACK_ELEM_OP_TRUE.size()).Finalize(hash.begin());
18 return hash;
19 }())};
20
21 static const std::vector<uint8_t> EMPTY{};
22 static const CScript P2WSH_EMPTY{
23 CScript{}
24 << OP_0
25 << ToByteVector([] {
26 uint256 hash;
27 CSHA256().Write(EMPTY.data(), EMPTY.size()).Finalize(hash.begin());
28 return hash;
29 }())};
30 static const std::vector<std::vector<uint8_t>> P2WSH_EMPTY_TRUE_STACK{{static_cast<uint8_t>(OP_TRUE)}, {}};
31 static const std::vector<std::vector<uint8_t>> P2WSH_EMPTY_TWO_STACK{{static_cast<uint8_t>(OP_2)}, {}};
32
33 /** Flags that are not forbidden by an assert in script validation */
34 bool IsValidFlagCombination(unsigned flags);
35
36 #endif // LIMENKA_TEST_UTIL_SCRIPT_H
37