34 auto variables_in_one_gate = res.second;
35 EXPECT_EQ(cc.size(), 1);
36 EXPECT_EQ(variables_in_one_gate.size(), 0);
37 if (variables_in_one_gate.size() > 0) {
39 std::vector<uint32_t>(variables_in_one_gate.begin(), variables_in_one_gate.end())[0];
47 auto variables_in_one_gate = res.second;
48 EXPECT_EQ(cc.size(), 1);
49 EXPECT_EQ(variables_in_one_gate.size(), 0);
50 if (variables_in_one_gate.size() > 0) {
52 std::vector<uint32_t>(variables_in_one_gate.begin(), variables_in_one_gate.end())[0];
78 fr_ct out = pedersen_hash::hash({ left, right });
99 for (
size_t i = 0; i < 256; ++i) {
100 left = pedersen_hash::hash({ left, right });
105 EXPECT_EQ(result,
true);
117 for (
size_t i = 0; i < 8; ++i) {
121 std::vector<uint32_t> witness_indices;
122 for (
auto& wi : witness_inputs) {
123 witness_indices.emplace_back(wi.witness_index);
127 builder.update_used_witnesses(witness_indices);
128 constexpr size_t hash_idx = 10;
129 auto result = pedersen_hash::hash(witness_inputs, hash_idx);
130 result.fix_witness();
138 for (
size_t i = 0; i < 7; ++i) {
139 std::vector<fr> inputs;
169 for (
auto input : inputs) {
174 for (
auto wit : witnesses) {
175 builder.update_used_witnesses(wit.witness_index);
177 fr_ct result = pedersen_hash::hash(witnesses);
186 std::vector<fr> native_inputs;
189 constexpr size_t size = 200;
190 for (
size_t i = 0; i < size; ++i) {
196 for (
auto wi : witness_inputs) {
197 builder.update_used_witnesses(wi.witness_index);
199 auto result = pedersen_hash::hash(witness_inputs);
200 result.fix_witness();
205using CircuitTypes = testing::Types<bb::UltraCircuitBuilder, bb::MegaCircuitBuilder>;
211 TestFixture::test_pedersen_two();
216 TestFixture::test_pedersen_large();
221 TestFixture::test_hash_eight();
226 TestFixture::test_large_inputs();
231 TestFixture::test_multi_hash();
static void analyze_circuit(Builder &builder)
typename _curve::byte_array_ct byte_array_ct
typename _curve::witness_ct witness_ct
static void test_large_inputs()
static void test_hash_eight()
static void test_pedersen_two()
typename _curve::ScalarField fr_ct
static void test_pedersen_large()
typename stdlib::pedersen_hash< Builder > pedersen_hash
static void test_multi_hash()
typename _curve::public_witness_ct public_witness_ct
static bool check(const Builder &circuit)
Check the witness satisifies the circuit.
bb::fr get_value() const
Given a := *this, compute its value given by a.v * a.mul + a.add.
stdlib class that evaluates in-circuit pedersen hashes, consistent with behavior in crypto::pedersen_...
std::pair< std::vector< ConnectedComponent >, std::unordered_set< uint32_t > > analyze_circuit()
void print_variable_info(const uint32_t real_idx)
this method prints all information about gates where variable was found
TYPED_TEST(BoomerangStdlibPedersen, Small)
testing::Types< bb::UltraCircuitBuilder, bb::MegaCircuitBuilder > CircuitTypes
TYPED_TEST_SUITE(BoomerangStdlibPedersen, CircuitTypes)
RNG & get_debug_randomness(bool reset, std::uint_fast64_t seed)
Entry point for Barretenberg command-line interface.
field< Bn254FrParams > fr
StaticAnalyzer_< bb::fr, bb::MegaCircuitBuilder > MegaStaticAnalyzer
UltraStaticAnalyzer StaticAnalyzer
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static constexpr field one()
static field random_element(numeric::RNG *engine=nullptr) noexcept
BB_INLINE constexpr field from_montgomery_form() const noexcept
field_t< CircuitBuilder > ScalarField
byte_array< CircuitBuilder > byte_array_ct
public_witness_t< CircuitBuilder > public_witness_ct
witness_t< CircuitBuilder > witness_ct