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"
2#include "memory_tree.hpp"
3#include <gtest/gtest.h>
4
6
7using namespace bb;
8using namespace bb::crypto;
9
11
14
15TEST(crypto_merkle_tree_hash, hash_native_vs_circuit)
16{
17 fr x = uint256_t(0x5ec473eb273a8011, 0x50160109385471ca, 0x2f3095267e02607d, 0x02586f4a39e69b86);
21 auto zz = merkle_tree::hash_pair_native(x, x);
22
23 EXPECT_EQ(z.get_value(), zz);
24}
25
26TEST(crypto_merkle_tree_hash, compute_tree_native)
27{
28 constexpr size_t depth = 2;
30
31 std::vector<fr> leaves;
32 for (size_t i = 0; i < (size_t(1) << depth); i++) {
33 auto input = fr::random_element();
34 leaves.push_back(input);
35 mem_tree.update_element(i, input);
36 }
37
38 std::vector<fr> tree_vector = merkle_tree::compute_tree_native(leaves);
39
40 // Check if the tree vector matches the memory tree hashes
41 for (size_t i = 0; i < tree_vector.size() - 1; i++) {
42 EXPECT_EQ(tree_vector[i], mem_tree.hashes_[i]);
43 }
44 EXPECT_EQ(tree_vector.back(), mem_tree.root());
45}
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:827
AluTraceBuilder builder
Definition alu.test.cpp:123
UltraCircuitBuilder Builder
Definition hash.test.cpp:10
bb::stdlib::witness_t< Builder > witness_ct
Definition hash.test.cpp:13
std::vector< bb::fr > compute_tree_native(std::vector< bb::fr > const &input)
Definition hash.hpp:72
bb::fr hash_pair_native(bb::fr const &lhs, bb::fr const &rhs)
Definition hash.hpp:40
Entry point for Barretenberg command-line interface.
TEST(MegaCircuitBuilder, CopyConstructor)
UltraCircuitBuilder_< UltraExecutionTraceBlocks > UltraCircuitBuilder
static field random_element(numeric::RNG *engine=nullptr) noexcept