Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
hash.test.cpp
Go to the documentation of this file.
1#include "hash.hpp"
3#include "memory_tree.hpp"
4#include <gtest/gtest.h>
5
7
8using namespace bb;
9using namespace bb::crypto;
10
12
15
16TEST(crypto_merkle_tree_hash, hash_native_vs_circuit)
17{
18 fr x = uint256_t(0x5ec473eb273a8011, 0x50160109385471ca, 0x2f3095267e02607d, 0x02586f4a39e69b86);
22 auto zz = merkle_tree::hash_pair_native(x, x);
23
24 EXPECT_EQ(z.get_value(), zz);
25}
26
27TEST(crypto_merkle_tree_hash, compute_tree_native)
28{
29 constexpr size_t depth = 2;
31
32 std::vector<fr> leaves;
33 for (size_t i = 0; i < (size_t(1) << depth); i++) {
34 auto input = fr::random_element();
35 leaves.push_back(input);
36 mem_tree.update_element(i, input);
37 }
38
39 std::vector<fr> tree_vector = merkle_tree::compute_tree_native(leaves);
40
41 // Check if the tree vector matches the memory tree hashes
42 for (size_t i = 0; i < tree_vector.size() - 1; i++) {
43 EXPECT_EQ(tree_vector[i], mem_tree.hashes_[i]);
44 }
45 EXPECT_EQ(tree_vector.back(), mem_tree.root());
46}
fr update_element(size_t index, fr const &value)
static Fq hash(const std::vector< Fq > &inputs, GeneratorContext context={})
Given a vector of fields, generate a pedersen hash using generators from context.
Definition pedersen.cpp:78
bb::fr get_value() const
Given a := *this, compute its value given by a.v * a.mul + a.add.
Definition field.cpp:829
AluTraceBuilder builder
Definition alu.test.cpp:123
UltraCircuitBuilder Builder
Definition hash.test.cpp:11
bb::stdlib::witness_t< Builder > witness_ct
Definition hash.test.cpp:14
std::vector< bb::fr > compute_tree_native(std::vector< bb::fr > const &input)
Definition hash.hpp:70
bb::fr hash_pair_native(bb::fr const &lhs, bb::fr const &rhs)
Definition hash.hpp:38
Entry point for Barretenberg command-line interface.
UltraCircuitBuilder_< UltraExecutionTraceBlocks > UltraCircuitBuilder
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)
static field random_element(numeric::RNG *engine=nullptr) noexcept