Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion barretenberg/cpp/src/barretenberg/benchmark/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ add_subdirectory(bb_cli_bench)
add_subdirectory(client_ivc_bench)
add_subdirectory(pippenger_bench)
add_subdirectory(plonk_bench)
add_subdirectory(simulator_bench)
add_subdirectory(protogalaxy_bench)
add_subdirectory(protogalaxy_rounds_bench)
add_subdirectory(relations_bench)
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ concept IsCheckable = bb::IsAnyOf<T,
StandardCircuitBuilder_<bb::fr>,
StandardCircuitBuilder_<bb::fq>,
UltraCircuitBuilder,
MegaCircuitBuilder,
CircuitSimulatorBN254>;
MegaCircuitBuilder>;

/**
* @brief The unified interface for check circuit functionality implemented in the specialized CircuitChecker classes
Expand All @@ -28,8 +27,6 @@ class CircuitChecker {
return UltraCircuitChecker::check(builder);
} else if constexpr (IsStandardBuilder<Builder>) {
return StandardCircuitChecker::check(builder);
} else if constexpr (IsSimulator<Builder>) {
return SimulatorCircuitChecker::check(builder);
} else {
return false;
}
Expand Down
8 changes: 0 additions & 8 deletions barretenberg/cpp/src/barretenberg/flavor/flavor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,6 @@ template <typename T>
concept IsMegaFlavor = IsAnyOf<T, MegaFlavor, MegaZKFlavor,
MegaRecursiveFlavor_<UltraCircuitBuilder>,
MegaRecursiveFlavor_<MegaCircuitBuilder>,
MegaRecursiveFlavor_<CircuitSimulatorBN254>,
MegaZKRecursiveFlavor_<MegaCircuitBuilder>,
MegaZKRecursiveFlavor_<UltraCircuitBuilder>>;

Expand All @@ -413,16 +412,13 @@ concept HasIPAAccumulator = IsAnyOf<T, UltraRollupFlavor, UltraRollupRecursiveFl
template <typename T>
concept IsRecursiveFlavor = IsAnyOf<T, UltraRecursiveFlavor_<UltraCircuitBuilder>,
UltraRecursiveFlavor_<MegaCircuitBuilder>,
UltraRecursiveFlavor_<CircuitSimulatorBN254>,
UltraRollupRecursiveFlavor_<UltraCircuitBuilder>,
MegaRecursiveFlavor_<UltraCircuitBuilder>,
MegaRecursiveFlavor_<MegaCircuitBuilder>,
MegaRecursiveFlavor_<CircuitSimulatorBN254>,
MegaZKRecursiveFlavor_<MegaCircuitBuilder>,
MegaZKRecursiveFlavor_<UltraCircuitBuilder>,
TranslatorRecursiveFlavor_<UltraCircuitBuilder>,
TranslatorRecursiveFlavor_<MegaCircuitBuilder>,
TranslatorRecursiveFlavor_<CircuitSimulatorBN254>,
ECCVMRecursiveFlavor_<UltraCircuitBuilder>,
AvmRecursiveFlavor_<UltraCircuitBuilder>,
AvmRecursiveFlavor_<MegaCircuitBuilder>,
Expand All @@ -446,11 +442,9 @@ template <typename T> concept IsFoldingFlavor = IsAnyOf<T, UltraFlavor,
MegaZKFlavor,
UltraRecursiveFlavor_<UltraCircuitBuilder>,
UltraRecursiveFlavor_<MegaCircuitBuilder>,
UltraRecursiveFlavor_<CircuitSimulatorBN254>,
UltraRollupRecursiveFlavor_<UltraCircuitBuilder>,
MegaRecursiveFlavor_<UltraCircuitBuilder>,
MegaRecursiveFlavor_<MegaCircuitBuilder>,
MegaRecursiveFlavor_<CircuitSimulatorBN254>,
MegaZKRecursiveFlavor_<MegaCircuitBuilder>,
MegaZKRecursiveFlavor_<UltraCircuitBuilder>>;
#else
Expand All @@ -464,11 +458,9 @@ template <typename T> concept IsFoldingFlavor = IsAnyOf<T, UltraFlavor,
MegaZKFlavor,
UltraRecursiveFlavor_<UltraCircuitBuilder>,
UltraRecursiveFlavor_<MegaCircuitBuilder>,
UltraRecursiveFlavor_<CircuitSimulatorBN254>,
UltraRollupRecursiveFlavor_<UltraCircuitBuilder>,
MegaRecursiveFlavor_<UltraCircuitBuilder>,
MegaRecursiveFlavor_<MegaCircuitBuilder>,
MegaRecursiveFlavor_<CircuitSimulatorBN254>,
MegaZKRecursiveFlavor_<MegaCircuitBuilder>,
MegaZKRecursiveFlavor_<UltraCircuitBuilder>>;
#endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -831,10 +831,6 @@ stdlib::byte_array<Builder> keccak<Builder>::hash(byte_array_ct& input, const ui
return output;
};

if constexpr (IsSimulator<Builder>) {
return constant_case();
}

if (ctx == nullptr) {
return constant_case();
}
Expand Down Expand Up @@ -921,7 +917,6 @@ template <typename Builder> void generate_keccak_test_circuit(Builder& builder,
}
}

template class keccak<bb::CircuitSimulatorBN254>;
template class keccak<bb::UltraCircuitBuilder>;
template class keccak<bb::MegaCircuitBuilder>;
template void generate_keccak_test_circuit(bb::UltraCircuitBuilder&, size_t);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,5 @@ template <typename C> field_t<C> poseidon2<C>::hash_buffer(C& builder, const std
}
template class poseidon2<bb::MegaCircuitBuilder>;
template class poseidon2<bb::UltraCircuitBuilder>;
template class poseidon2<bb::CircuitSimulatorBN254>;

} // namespace bb::stdlib
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ template <typename Builder> class StdlibPoseidon2 : public testing::Test {
}
};

using CircuitTypes = testing::Types<bb::MegaCircuitBuilder, bb::UltraCircuitBuilder, bb::CircuitSimulatorBN254>;
using CircuitTypes = testing::Types<bb::MegaCircuitBuilder, bb::UltraCircuitBuilder>;

TYPED_TEST_SUITE(StdlibPoseidon2, CircuitTypes);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ namespace bb::stdlib {
template <typename Params, typename Builder>
typename Poseidon2Permutation<Params, Builder>::State Poseidon2Permutation<Params, Builder>::permutation(
Builder* builder, const typename Poseidon2Permutation<Params, Builder>::State& input)
requires(!IsSimulator<Builder>)
{
// deep copy
State current_state(input);
Expand Down Expand Up @@ -115,95 +114,6 @@ typename Poseidon2Permutation<Params, Builder>::State Poseidon2Permutation<Param
return current_state;
}

/**
* @brief Circuit form of Poseidon2 permutation from https://eprint.iacr.org/2023/323 for UltraCircuitBuilder.
* @details The permutation consists of one initial linear layer, then a set of external rounds, a set of internal
* rounds, and a set of external rounds.
* @param builder
* @param input
* @return State
*/
template <typename Params, typename Builder>
typename Poseidon2Permutation<Params, Builder>::State Poseidon2Permutation<Params, Builder>::permutation(
Builder* builder, const typename Poseidon2Permutation<Params, Builder>::State& input)
requires IsSimulator<Builder>
{
// deep copy
State current_state(input);

// Apply 1st linear layer
matrix_multiplication_external(builder, current_state);

// First set of external rounds
constexpr size_t rounds_f_beginning = rounds_f / 2;
for (size_t i = 0; i < rounds_f_beginning; ++i) {
add_round_constants(current_state, round_constants[i]);
apply_sbox(current_state);
matrix_multiplication_external(builder, current_state);
}

// Internal rounds
const size_t p_end = rounds_f_beginning + rounds_p;
for (size_t i = rounds_f_beginning; i < p_end; ++i) {
current_state[0] += round_constants[i][0];
apply_single_sbox(current_state[0]);
matrix_multiplication_internal(current_state);
}

// Remaining external rounds
for (size_t i = p_end; i < NUM_ROUNDS; ++i) {
add_round_constants(current_state, round_constants[i]);
apply_sbox(current_state);
matrix_multiplication_external(builder, current_state);
}
return current_state;
}

template <typename Params, typename Builder>
void Poseidon2Permutation<Params, Builder>::add_round_constants(
State& input, const typename Poseidon2Permutation<Params, Builder>::RoundConstants& rc)
requires IsSimulator<Builder>

{
for (size_t i = 0; i < t; ++i) {
input[i] += rc[i];
}
}

template <typename Params, typename Builder>
void Poseidon2Permutation<Params, Builder>::apply_sbox(State& input)
requires IsSimulator<Builder>
{
for (auto& in : input) {
apply_single_sbox(in);
}
}

template <typename Params, typename Builder>
void Poseidon2Permutation<Params, Builder>::apply_single_sbox(field_t<Builder>& input)
requires IsSimulator<Builder>
{
// hardcoded assumption that d = 5. should fix this or not make d configurable
auto xx = input.sqr();
auto xxxx = xx.sqr();
input *= xxxx;
}

template <typename Params, typename Builder>
void Poseidon2Permutation<Params, Builder>::matrix_multiplication_internal(State& input)
requires IsSimulator<Builder>
{
// for t = 4
auto sum = input[0];
for (size_t i = 1; i < t; ++i) {
sum += input[i];
}
for (size_t i = 0; i < t; ++i) {
input[i] *= Params::internal_matrix_diagonal[i]; // internal_matrix_diagonal[i];
input[i] += sum;
}
}

/**
* @brief Separate function to do just the first linear layer (equivalent to external matrix mul).
* @details We use 6 arithmetic gates to implement:
Expand Down Expand Up @@ -318,6 +228,5 @@ void Poseidon2Permutation<Params, Builder>::matrix_multiplication_external(

template class Poseidon2Permutation<crypto::Poseidon2Bn254ScalarFieldParams, MegaCircuitBuilder>;
template class Poseidon2Permutation<crypto::Poseidon2Bn254ScalarFieldParams, UltraCircuitBuilder>;
template class Poseidon2Permutation<crypto::Poseidon2Bn254ScalarFieldParams, CircuitSimulatorBN254>;

} // namespace bb::stdlib
} // namespace bb::stdlib
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,7 @@ template <typename Params, typename Builder> class Poseidon2Permutation {
* @param input
* @return State
*/
static State permutation(Builder* builder, const State& input)
requires(!IsSimulator<Builder>);
static State permutation(Builder* builder, const State& input)
requires IsSimulator<Builder>;

static void add_round_constants(State& input, const RoundConstants& rc)
requires IsSimulator<Builder>;
static void apply_sbox(State& input)
requires IsSimulator<Builder>;
static void apply_single_sbox(field_t<Builder>& input)
requires IsSimulator<Builder>;
static void matrix_multiplication_internal(State& input)
requires IsSimulator<Builder>;
static State permutation(Builder* builder, const State& input);

/**
* @brief Separate function to do just the first linear layer (equivalent to external matrix mul).
Expand All @@ -80,4 +68,4 @@ template <typename Params, typename Builder> class Poseidon2Permutation {
static void matrix_multiplication_external(Builder* builder, State& state);
};

} // namespace bb::stdlib
} // namespace bb::stdlib
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,4 @@ DeciderRecursiveVerifier_<Flavor>::AggregationObject DeciderRecursiveVerifier_<F

template class DeciderRecursiveVerifier_<bb::MegaRecursiveFlavor_<MegaCircuitBuilder>>;
template class DeciderRecursiveVerifier_<bb::MegaRecursiveFlavor_<UltraCircuitBuilder>>;
template class DeciderRecursiveVerifier_<bb::UltraRecursiveFlavor_<CircuitSimulatorBN254>>;
template class DeciderRecursiveVerifier_<bb::MegaRecursiveFlavor_<CircuitSimulatorBN254>>;
} // namespace bb::stdlib::recursion::honk
Loading