Skip to content

Commit

Permalink
Merge pull request #525 from kroma-network/feat/add-rust-binding-for-…
Browse files Browse the repository at this point in the history
…two-adic-fri-pcs

feat: add rust binding for two adic fri pcs
  • Loading branch information
chokobole authored Aug 27, 2024
2 parents 5bea18d + cd66023 commit 3648b23
Show file tree
Hide file tree
Showing 55 changed files with 2,349 additions and 716 deletions.
52 changes: 30 additions & 22 deletions Cargo.Bazel.lock
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"checksum": "fe9ae6f4561ad04bed9e5ebe9cba69153f8f8ff4c819e68d1aa1ffc9128967e2",
"checksum": "493a31da6b3ac2a5605ba241c05d083f25487a1fdd2efcb09d582c8b3be8cba9",
"crates": {
"addchain 0.2.0": {
"name": "addchain",
Expand Down Expand Up @@ -17928,34 +17928,13 @@
"id": "p3-baby-bear 0.1.3-succinct",
"target": "p3_baby_bear"
},
{
"id": "p3-challenger 0.1.3-succinct",
"target": "p3_challenger"
},
{
"id": "p3-field 0.1.3-succinct",
"target": "p3_field"
},
{
"id": "p3-matrix 0.1.3-succinct",
"target": "p3_matrix"
},
{
"id": "p3-poseidon2 0.1.3-succinct",
"target": "p3_poseidon2"
},
{
"id": "p3-symmetric 0.1.3-succinct",
"target": "p3_symmetric"
}
],
"selects": {}
},
"deps_dev": {
"common": [
{
"id": "zkhash 0.2.0",
"target": "zkhash"
}
],
"selects": {}
Expand Down Expand Up @@ -18120,6 +18099,10 @@
"id": "cxx 1.0.122",
"target": "cxx"
},
{
"id": "p3-baby-bear 0.1.3-succinct",
"target": "p3_baby_bear"
},
{
"id": "p3-challenger 0.1.3-succinct",
"target": "p3_challenger"
Expand Down Expand Up @@ -18148,6 +18131,14 @@
"id": "p3-maybe-rayon 0.1.3-succinct",
"target": "p3_maybe_rayon"
},
{
"id": "p3-poseidon2 0.1.3-succinct",
"target": "p3_poseidon2"
},
{
"id": "p3-symmetric 0.1.3-succinct",
"target": "p3_symmetric"
},
{
"id": "p3-util 0.1.3-succinct",
"target": "p3_util"
Expand All @@ -18156,13 +18147,30 @@
"id": "sp1-core 1.0.1",
"target": "sp1_core"
},
{
"id": "sp1-primitives 1.0.1",
"target": "sp1_primitives"
},
{
"id": "sp1-prover 1.0.1",
"target": "sp1_prover"
}
],
"selects": {}
},
"deps_dev": {
"common": [
{
"id": "rand 0.8.5",
"target": "rand"
},
{
"id": "rand_chacha 0.3.1",
"target": "rand_chacha"
}
],
"selects": {}
},
"edition": "2021",
"version": "0.0.1"
},
Expand Down
36 changes: 6 additions & 30 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 31 additions & 0 deletions tachyon/base/strings/string_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,21 @@ std::string Container2DToString(const Container& data) {
return ss.str();
}

template <typename Container>
std::string Container3DToString(const Container& data) {
size_t size = std::size(data);

if (size == 0) return "[]";

std::stringstream ss;
ss << "[";
for (size_t i = 0; i < size - 1; ++i) {
ss << Container2DToString(data[i]) << ", ";
}
ss << Container2DToString(data[size - 1]) << "]";
return ss.str();
}

template <typename Container>
std::string ContainerToHexString(const Container& data, bool pad_zero = false) {
size_t size = std::size(data);
Expand Down Expand Up @@ -199,6 +214,22 @@ std::string Container2DToHexString(const Container& data,
return ss.str();
}

template <typename Container>
std::string Container3DToHexString(const Container& data,
bool pad_zero = false) {
size_t size = std::size(data);

if (size == 0) return "[]";

std::stringstream ss;
ss << "[";
for (size_t i = 0; i < size - 1; ++i) {
ss << Container2DToHexString(data[i], pad_zero) << ", ";
}
ss << Container2DToHexString(data[size - 1], pad_zero) << "]";
return ss.str();
}

} // namespace tachyon::base

#endif // TACHYON_BASE_STRINGS_STRING_UTIL_H_
9 changes: 9 additions & 0 deletions tachyon/c/crypto/commitments/fri/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
load("//bazel:tachyon_cc.bzl", "tachyon_cc_library")

package(default_visibility = ["//visibility:public"])

tachyon_cc_library(
name = "two_adic_fri_pcs_impl",
hdrs = ["two_adic_fri_pcs_impl.h"],
deps = ["//tachyon/crypto/commitments/fri:two_adic_fri_pcs"],
)
55 changes: 55 additions & 0 deletions tachyon/c/crypto/commitments/fri/two_adic_fri_pcs_impl.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#ifndef TACHYON_C_CRYPTO_COMMITMENTS_FRI_TWO_ADIC_FRI_PCS_IMPL_H_
#define TACHYON_C_CRYPTO_COMMITMENTS_FRI_TWO_ADIC_FRI_PCS_IMPL_H_

#include <memory>
#include <utility>
#include <vector>

#include "tachyon/crypto/commitments/fri/two_adic_fri_pcs.h"

namespace tachyon::c::crypto {

template <typename ExtF, typename InputMMCS, typename ChallengeMMCS,
typename Challenger, typename Coset>
class TwoAdicFriPCSImpl
: public tachyon::crypto::TwoAdicFriPCS<ExtF, InputMMCS, ChallengeMMCS,
Challenger, Coset> {
public:
using Base = tachyon::crypto::TwoAdicFriPCS<ExtF, InputMMCS, ChallengeMMCS,
Challenger, Coset>;
using F = typename Base::F;
using Commitment = typename Base::Commitment;
using ProverData = typename Base::ProverData;

using Base::Base;

void AllocateLDEs(size_t size) { this->ldes_.reserve(size); }

template <typename Derived>
absl::Span<F> CosetLDEBatch(Eigen::MatrixBase<Derived>& matrix, F shift) {
Coset coset = this->GetNaturalDomainForDegree(matrix.rows());
tachyon::math::RowMajorMatrix<F> mat =
coset.domain()->CosetLDEBatch(matrix, this->fri_.log_blowup, shift);
ReverseMatrixIndexBits(mat);
absl::Span<F> ret(mat.data(), mat.size());
this->ldes_.push_back(std::move(mat));
return ret;
}

using Base::Commit;

void Commit(Commitment* commitment, ProverData** prover_data_out) {
std::unique_ptr<ProverData> prover_data(new ProverData);
CHECK(this->mmcs_.Commit(std::move(ldes_), commitment, prover_data.get()));
*prover_data_out = prover_data.get();
prover_data_by_round_.push_back(std::move(prover_data));
}

protected:
std::vector<math::RowMajorMatrix<F>> ldes_;
std::vector<std::unique_ptr<ProverData>> prover_data_by_round_;
};

} // namespace tachyon::c::crypto

#endif // TACHYON_C_CRYPTO_COMMITMENTS_FRI_TWO_ADIC_FRI_PCS_IMPL_H_
4 changes: 2 additions & 2 deletions tachyon/c/zk/air/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ package(default_visibility = ["//visibility:public"])

filegroup(
name = "air_hdrs",
srcs = ["//tachyon/c/zk/air/plonky3:plonky3_hdrs"],
srcs = ["//tachyon/c/zk/air/sp1:sp1_hdrs"],
)

tachyon_cc_library(
name = "air",
deps = ["//tachyon/c/zk/air/plonky3"],
deps = ["//tachyon/c/zk/air/sp1"],
)
13 changes: 0 additions & 13 deletions tachyon/c/zk/air/plonky3/BUILD.bazel

This file was deleted.

40 changes: 0 additions & 40 deletions tachyon/c/zk/air/plonky3/challenger/BUILD.bazel

This file was deleted.

This file was deleted.

Loading

0 comments on commit 3648b23

Please sign in to comment.