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