2#include "barretenberg/common/net.hpp"
3#include "barretenberg/crypto/blake2s/blake2s.hpp"
4#include "barretenberg/crypto/pedersen_commitment/pedersen.hpp"
5#include "barretenberg/crypto/pedersen_hash/pedersen.hpp"
6#include "barretenberg/stdlib/hash/blake2s/blake2s.hpp"
7#include "barretenberg/stdlib/hash/pedersen/pedersen.hpp"
8#include "barretenberg/stdlib/primitives/field/field.hpp"
11namespace proof_system::plonk::stdlib::merkle_tree {
18inline barretenberg::fr hash_native(std::vector<barretenberg::fr>
const& inputs)
29inline barretenberg::fr compute_tree_root_native(std::vector<barretenberg::fr>
const& input)
32 ASSERT(input.size() > 0);
33 ASSERT(numeric::is_power_of_two(input.size()));
35 while (layer.size() > 1) {
36 std::vector<barretenberg::fr> next_layer(layer.size() / 2);
37 for (
size_t i = 0; i < next_layer.size(); ++i) {
40 layer = std::move(next_layer);
47inline std::vector<barretenberg::fr> compute_tree_native(std::vector<barretenberg::fr>
const& input)
50 ASSERT(input.size() > 0);
51 ASSERT(numeric::is_power_of_two(input.size()));
53 std::vector<barretenberg::fr> tree(input);
54 while (layer.size() > 1) {
55 std::vector<barretenberg::fr> next_layer(layer.size() / 2);
56 for (
size_t i = 0; i < next_layer.size(); ++i) {
58 tree.push_back(next_layer[i]);
60 layer = std::move(next_layer);
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:59