Branch data Line data Source code
1 : : // Copyright (c) 2021 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 : : 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 : 16 : << ToByteVector([] { 16 : 16 : uint256 hash; 17 : 16 : CSHA256().Write(WITNESS_STACK_ELEM_OP_TRUE.data(), WITNESS_STACK_ELEM_OP_TRUE.size()).Finalize(hash.begin()); 18 : 16 : return hash; 19 : : }())}; 20 : : 21 : : static const std::vector<uint8_t> EMPTY{}; 22 : : static const CScript P2WSH_EMPTY{ 23 : : CScript{} 24 : : << OP_0 25 : 16 : << ToByteVector([] { 26 : 16 : uint256 hash; 27 : 16 : CSHA256().Write(EMPTY.data(), EMPTY.size()).Finalize(hash.begin()); 28 : 16 : 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 // BITCOIN_TEST_UTIL_SCRIPT_H