1#ifndef SECP256K1_TAPROOT_HPP
2#define SECP256K1_TAPROOT_HPP
47 const std::array<std::uint8_t, 32>& internal_key_x,
48 const std::uint8_t* merkle_root =
nullptr,
49 std::size_t merkle_root_len = 0);
53 const std::uint8_t* script, std::size_t script_len,
54 std::uint8_t leaf_version = 0xC0);
59 const std::array<std::uint8_t, 32>& a,
60 const std::array<std::uint8_t, 32>& b);
68 const std::array<std::uint8_t, 32>& internal_key_x,
69 const std::uint8_t* merkle_root =
nullptr,
70 std::size_t merkle_root_len = 0);
81 const std::uint8_t* merkle_root =
nullptr,
82 std::size_t merkle_root_len = 0);
89 const std::array<std::uint8_t, 32>& output_key_x,
90 int output_key_parity,
91 const std::array<std::uint8_t, 32>& internal_key_x,
92 const std::uint8_t* merkle_root =
nullptr,
93 std::size_t merkle_root_len = 0);
101 const std::array<std::uint8_t, 32>& leaf_hash,
102 const std::vector<std::array<std::uint8_t, 32>>& proof);
109 const std::vector<std::array<std::uint8_t, 32>>& leaf_hashes);
169 std::size_t input_index,
170 std::uint8_t hash_type,
171 const std::array<std::uint8_t, 32>& tapleaf_hash,
172 std::uint8_t key_version,
173 std::uint32_t code_separator_pos,
174 const std::uint8_t* annex =
nullptr,
175 std::size_t annex_len = 0) noexcept;
181 std::
size_t input_index,
182 std::uint8_t hash_type,
183 const std::uint8_t* annex =
nullptr,
184 std::
size_t annex_len = 0) noexcept;
std::array< std::uint8_t, 32 > taproot_keypath_sighash(const TapSighashTxData &tx_data, std::size_t input_index, std::uint8_t hash_type, const std::uint8_t *annex=nullptr, std::size_t annex_len=0) noexcept
Scalar taproot_tweak_privkey(const Scalar &private_key, const std::uint8_t *merkle_root=nullptr, std::size_t merkle_root_len=0)
std::array< std::uint8_t, 32 > taproot_merkle_root_from_proof(const std::array< std::uint8_t, 32 > &leaf_hash, const std::vector< std::array< std::uint8_t, 32 > > &proof)
std::array< std::uint8_t, 32 > tapscript_sighash(const TapSighashTxData &tx_data, std::size_t input_index, std::uint8_t hash_type, const std::array< std::uint8_t, 32 > &tapleaf_hash, std::uint8_t key_version, std::uint32_t code_separator_pos, const std::uint8_t *annex=nullptr, std::size_t annex_len=0) noexcept
std::array< std::uint8_t, 32 > taproot_leaf_hash(const std::uint8_t *script, std::size_t script_len, std::uint8_t leaf_version=0xC0)
std::array< std::uint8_t, 32 > taproot_tweak_hash(const std::array< std::uint8_t, 32 > &internal_key_x, const std::uint8_t *merkle_root=nullptr, std::size_t merkle_root_len=0)
std::pair< std::array< std::uint8_t, 32 >, int > taproot_output_key(const std::array< std::uint8_t, 32 > &internal_key_x, const std::uint8_t *merkle_root=nullptr, std::size_t merkle_root_len=0)
bool taproot_verify_commitment(const std::array< std::uint8_t, 32 > &output_key_x, int output_key_parity, const std::array< std::uint8_t, 32 > &internal_key_x, const std::uint8_t *merkle_root=nullptr, std::size_t merkle_root_len=0)
std::array< std::uint8_t, 32 > taproot_merkle_root(const std::vector< std::array< std::uint8_t, 32 > > &leaf_hashes)
std::array< std::uint8_t, 32 > taproot_branch_hash(const std::array< std::uint8_t, 32 > &a, const std::array< std::uint8_t, 32 > &b)
const std::uint8_t *const * input_scriptpubkeys
const std::uint64_t * input_amounts
const std::uint8_t *const * output_scriptpubkeys
const std::size_t * output_scriptpubkey_lens
const std::array< std::uint8_t, 32 > * prevout_txids
const std::uint64_t * output_values
const std::uint32_t * input_sequences
const std::size_t * input_scriptpubkey_lens
const std::uint32_t * prevout_vouts