24#define DISABLE_FREE_WITNESS_CHECK
25#define DISABLE_DIFFERENT_TRANSCRIPT_CHECKS
26#define DISABLE_CHILD_TAG_CHECKS
30#define AZTEC_NO_ORIGIN_TAGS
32#define STANDARD_TESTING_TAGS \
33 const size_t parent_id = 0; \
34 [[maybe_unused]] const auto clear_tag = OriginTag(); \
35 const auto submitted_value_origin_tag = OriginTag( \
36 parent_id, 0, true); \
37 const auto next_submitted_value_origin_tag = OriginTag( \
38 parent_id, 1, true); \
39 const auto challenge_origin_tag = OriginTag( \
40 parent_id, 0, false); \
41 const auto next_challenge_tag = OriginTag( \
42 parent_id, 1, false); \
43 const auto first_two_merged_tag = \
44 OriginTag(submitted_value_origin_tag, \
45 challenge_origin_tag);
47 const auto first_and_third_merged_tag = \
48 OriginTag(submitted_value_origin_tag, \
51 const auto first_second_third_merged_tag = OriginTag( \
52 first_two_merged_tag, next_challenge_tag);
54 const auto first_to_fourth_merged_tag = \
55 OriginTag(first_second_third_merged_tag, \
56 next_submitted_value_origin_tag);
58 const auto instant_death_tag = []() { \
59 auto some_tag = OriginTag(); \
67#ifndef AZTEC_NO_ORIGIN_TAGS
70 static constexpr size_t CONSTANT =
static_cast<size_t>(-1);
71 static constexpr size_t FREE_WITNESS =
static_cast<size_t>(-2);
108 OriginTag(
size_t parent_index,
size_t child_index,
bool is_submitted =
true)
135 template <
class... T>
143 for (
const auto& next_tag : { rest... }) {
155#ifndef DISABLE_FREE_WITNESS_CHECK
176inline std::ostream&
operator<<(std::ostream& os, OriginTag
const& v)
178 return os <<
"{ p_t: " << v.parent_tag <<
", ch_t: " << v.child_tag <<
", instadeath: " << v.instant_death <<
" }";
191 OriginTag(
size_t parent_index [[maybe_unused]],
192 size_t child_index [[maybe_unused]],
193 bool is_submitted [[maybe_unused]] =
true)
202 static bool is_empty() {
return true; };
207inline std::ostream&
operator<<(std::ostream& os, OriginTag
const&)
209 return os <<
"{ Origin Tag tracking is disabled in release builds }";
#define BB_ASSERT_LT(left, right,...)
std::ostream & operator<<(std::ostream &os, uint256_t const &a)
Entry point for Barretenberg command-line interface.
void check_child_tags(const uint256_t &tag_a, const uint256_t &tag_b)
Detect if two elements from the same transcript are performing a suspicious interaction.
std::integral_constant< size_t, I > tag
void unset_free_witness()
numeric::uint256_t child_tag
static constexpr size_t CONSTANT
OriginTag & operator=(const OriginTag &other)=default
static constexpr size_t FREE_WITNESS
bool is_free_witness() const
bool operator==(const OriginTag &other) const