31 std::vector<fr> input_vals;
32 for (
const auto& input : inputs) {
33 input_vals.push_back(input.get_value());
36 auto result = pedersen_commitment::commit(inputs,
context);
39 EXPECT_EQ(result.x.get_value(), expected.x);
40 EXPECT_EQ(result.y.get_value(), expected.y);
69 check_circuit_and_gate_count(
builder, 2912);
77 for (
size_t i = 0; i < 8; ++i) {
90 check_circuit_and_gate_count(
builder, 3994);
92 check_circuit_and_gate_count(
builder, 3997);
99 std::vector<fr> inputs;
103 auto result = pedersen_commitment::commit(witness_inputs);
106 EXPECT_EQ(result.x.get_value(),
fr::zero());
107 EXPECT_EQ(result.y.get_value(),
fr::zero());
109 check_circuit_and_gate_count(
builder, 0);
119 check_circuit_and_gate_count(
builder, 2838);
124 EXPECT_EQ(
builder.get_tables_size(), 14340);
133 for (
size_t i = 0; i < 2; ++i) {
138 check_circuit_and_gate_count(
builder, 2910);
142 EXPECT_EQ(
builder.get_tables_size(), 28680);
151 for (
size_t i = 0; i < 3; ++i) {
159 check_circuit_and_gate_count(
builder, 3485);
161 check_circuit_and_gate_count(
builder, 3488);
165 EXPECT_EQ(
builder.get_tables_size(), 28680);
173 for (
size_t i = 0; i < 32; ++i) {
181 check_circuit_and_gate_count(
builder, 12156);
183 check_circuit_and_gate_count(
builder, 12159);
207 for (
size_t i = 0; i < 4; ++i) {
222 for (
size_t i = 0; i < 6; ++i) {
227 check_circuit_and_gate_count(
builder, 0);
245 std::vector<fr> inputs;
248 for (
size_t i = 0; i < 5; ++i) {
254 auto result1 = pedersen_commitment::commit(witness_inputs);
255 auto result2 = pedersen_commitment::commit(witness_inputs);
258 EXPECT_EQ(result1.x.get_value(), result2.x.get_value());
259 EXPECT_EQ(result1.y.get_value(), result2.y.get_value());
262 EXPECT_EQ(result1.x.get_value(), expected.x);
263 EXPECT_EQ(result1.y.get_value(), expected.y);
266 EXPECT_EQ(check_result,
true);
270using CircuitTypes = testing::Types<bb::UltraCircuitBuilder, bb::MegaCircuitBuilder>;
276 TestFixture::test_pedersen();
281 TestFixture::test_mixed_witnesses_and_constants();
286 TestFixture::test_empty_input();
291 TestFixture::test_single_input();
296 TestFixture::test_two_inputs();
301 TestFixture::test_three_inputs();
306 TestFixture::test_large_input();
311 TestFixture::test_zero_values();
316 TestFixture::test_custom_generator_context();
321 TestFixture::test_all_constants();
326 TestFixture::test_special_field_element();
331 TestFixture::test_determinism();
static void test_all_constants()
static void test_custom_generator_context()
typename stdlib::pedersen_commitment< Builder > pedersen_commitment
static void test_two_inputs()
static void test_zero_values()
static void verify_commitment(Builder &builder, const std::vector< stdlib::field_t< Builder > > &inputs, crypto::GeneratorContext< curve::Grumpkin > context={})
static void test_single_input()
typename _curve::witness_ct witness_ct
static void test_empty_input()
static void test_mixed_witnesses_and_constants()
typename _curve::ScalarField fr_ct
typename _curve::public_witness_ct public_witness_ct
static void test_determinism()
static void test_large_input()
static void test_special_field_element()
static void test_three_inputs()
static void test_pedersen()
static bool check(const Builder &circuit)
Check the witness satisifies the circuit.
static AffineElement commit_native(const std::vector< Fq > &inputs, GeneratorContext context={})
Given a vector of fields, generate a pedersen commitment using the indexed generators.
bb::fr get_value() const
Given a := *this, compute its value given by a.v * a.mul + a.add.
In-circuit Pedersen commitment implementation.
StrictMock< MockContext > context
testing::Types< bb::UltraCircuitBuilder, bb::MegaCircuitBuilder > CircuitTypes
RNG & get_debug_randomness(bool reset, std::uint_fast64_t seed)
void check_circuit_and_gate_count(Builder &builder, uint32_t expected_gates_without_base)
Utility function for gate count checking and circuit verification.
Entry point for Barretenberg command-line interface.
TYPED_TEST_SUITE(ShpleminiTest, TestSettings)
field< Bn254FrParams > fr
TYPED_TEST(ShpleminiTest, CorrectnessOfMultivariateClaimBatching)
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
static constexpr field zero()
field_t< CircuitBuilder > ScalarField
public_witness_t< CircuitBuilder > public_witness_ct
witness_t< CircuitBuilder > witness_ct