31 template <
typename RecursiveCurve>
33 typename RecursiveCurve::Builder*
builder,
39 for (
auto& element : native_claim.challenge) {
56 requires Curve::is_stdlib_type
59 native_claim.challenge.reserve(
challenge.size());
61 for (
auto& recursive_challenge :
challenge) {
62 native_claim.challenge.emplace_back(recursive_challenge.get_value());
75 template <
typename Codec,
typename HashFn>
FF hash_with_origin_tagging(
const OriginTag&
tag)
const
78 std::vector<FF> claim_elements;
80 auto append_tagged = [&]<
typename U>(
const U& component) {
81 auto frs = bb::tag_and_serialize<in_circuit, Codec>(component,
tag);
82 claim_elements.insert(claim_elements.end(), frs.begin(), frs.end());
86 append_tagged(element);
94 bb::unset_free_witness_tags<in_circuit, FF>(claim_elements);
96 return HashFn::hash(claim_elements);
102 template <
typename TranscriptType>
FF hash_with_origin_tagging(
const TranscriptType& transcript)
const
105 return hash_with_origin_tagging<typename TranscriptType::Codec, typename TranscriptType::HashFunction>(
tag);