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