Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
pedersen.test.cpp
Go to the documentation of this file.
1#include "pedersen.hpp"
4#include <gtest/gtest.h>
5
6namespace bb::crypto {
7
8using bb::fr;
9
10TEST(Pedersen, Commitment)
11{
12 auto x = pedersen_commitment::Fq::one();
13 auto r = pedersen_commitment::commit_native({ x, x });
14 auto expected =
15 grumpkin::g1::affine_element(fr(uint256_t("2f7a8f9a6c96926682205fb73ee43215bf13523c19d7afe36f12760266cdfe15")),
16 fr(uint256_t("01916b316adbbf0e10e39b18c1d24b33ec84b46daddf72f43878bcc92b6057e6")));
17 EXPECT_EQ(r, expected);
18}
19
20TEST(Pedersen, CommitmentWithZero)
21{
22 auto x = pedersen_commitment::Fq::zero();
23 auto y = pedersen_commitment::Fq::one();
24 auto r = pedersen_commitment::commit_native({ x, y });
25 auto expected =
26 grumpkin::g1::affine_element(fr(uint256_t("054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402")),
27 fr(uint256_t("209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126")));
28 EXPECT_EQ(r, expected);
29}
30
31TEST(Pedersen, CommitmentProf)
32{
33 GTEST_SKIP() << "Skipping mini profiler.";
34 auto x = fr::random_element();
35 auto y = fr::random_element();
36 Timer t;
37 for (int i = 0; i < 10000; ++i) {
39 }
40 info(t.nanoseconds() / 1000 / 10000);
41}
42
43// Useful for pasting into ts version of pedersen.
44TEST(Pedersen, GeneratorPrinter)
45{
46 GTEST_SKIP() << "Skipping generator-for-ts printer.";
48 auto generators = ctx.generators->get_default_generators()->get(128);
49 for (auto g : generators) {
50 info("[", g.x, "n, ", g.y, "n],");
51 }
52}
53
54}; // namespace bb::crypto
Get the execution between a block of code.
Definition timer.hpp:12
int64_t nanoseconds() const
Return the number of nanoseconds elapsed since the start of the timer.
Definition timer.hpp:43
static AffineElement commit_native(const std::vector< Fq > &inputs, GeneratorContext context={})
Given a vector of fields, generate a pedersen commitment using the indexed generators.
Definition pedersen.cpp:24
typename crypto::GeneratorContext< Curve > GeneratorContext
Definition pedersen.hpp:34
group_elements::affine_element< Fq, Fr, Params > affine_element
Definition group.hpp:42
void info(Args... args)
Definition log.hpp:70
ContentAddressedIndexedTree< StoreType, PedersenHashPolicy > Pedersen
TEST(GeneratorContext, DeriveDefaultGenerators)
field< Bn254FrParams > fr
Definition fr.hpp:174
static field random_element(numeric::RNG *engine=nullptr) noexcept