mirror of
https://github.com/logos-blockchain/logos-blockchain-circuits.git
synced 2026-06-10 02:30:05 +00:00
feat: Rapidsnark crate (#39)
This commit is contained in:
parent
2939c83a67
commit
0fdacbe01a
7
rust/Cargo.lock
generated
7
rust/Cargo.lock
generated
@ -231,6 +231,13 @@ dependencies = [
|
||||
"serde_json",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "logos-blockchain-circuits-rapidsnark-sys"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"logos-blockchain-circuits-build",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "logos-blockchain-circuits-signature-sys"
|
||||
version = "0.5.0"
|
||||
|
||||
@ -18,6 +18,7 @@ members = [
|
||||
"logos-blockchain-circuits-tests",
|
||||
"logos-blockchain-circuits-types",
|
||||
"logos-blockchain-circuits-common",
|
||||
"logos-blockchain-circuits-rapidsnark-sys",
|
||||
]
|
||||
resolver = "3"
|
||||
|
||||
@ -28,6 +29,7 @@ lbc-build = { package = "logos-blockchain-circuits-build", path = "./logos-block
|
||||
lbc-poc-sys = { package = "logos-blockchain-circuits-poc-sys", path = "./logos-blockchain-circuits-poc-sys" }
|
||||
lbc-pol-sys = { package = "logos-blockchain-circuits-pol-sys", path = "./logos-blockchain-circuits-pol-sys" }
|
||||
lbc-poq-sys = { package = "logos-blockchain-circuits-poq-sys", path = "./logos-blockchain-circuits-poq-sys" }
|
||||
lbc-rapidsnark-sys = { package = "logos-blockchain-circuits-rapidsnark-sys", path = "./logos-blockchain-circuits-rapidsnark-sys" }
|
||||
lbc-signature-sys = { package = "logos-blockchain-circuits-signature-sys", path = "./logos-blockchain-circuits-signature-sys" }
|
||||
lbc-types = { default-features = false, package = "logos-blockchain-circuits-types", path = "./logos-blockchain-circuits-types" }
|
||||
|
||||
|
||||
@ -115,13 +115,13 @@ mod prebuilt {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn build(circuit_name: &str) {
|
||||
fn resolve_root() -> PathBuf {
|
||||
println!("cargo:rerun-if-env-changed={LBC_ROOT_DIR}");
|
||||
println!("cargo:rerun-if-env-changed=CARGO_PKG_VERSION");
|
||||
println!("cargo:rerun-if-changed=Cargo.toml");
|
||||
println!("cargo:rerun-if-changed=build.rs");
|
||||
|
||||
let lbc_root_dir = std::env::var(LBC_ROOT_DIR).map_or_else(
|
||||
let root = std::env::var(LBC_ROOT_DIR).map_or_else(
|
||||
|_| {
|
||||
#[cfg(not(feature = "prebuilt"))]
|
||||
panic!(
|
||||
@ -150,23 +150,30 @@ pub fn build(circuit_name: &str) {
|
||||
},
|
||||
);
|
||||
|
||||
let lbc_root_dir_str = lbc_root_dir
|
||||
let root_str = root
|
||||
.to_str()
|
||||
.expect("Failed to convert the root directory path to a string");
|
||||
|
||||
let circuit_dir = lbc_root_dir.join(circuit_name);
|
||||
println!("cargo:rustc-env={LBC_ROOT_DIR}={root_str}");
|
||||
|
||||
root
|
||||
}
|
||||
|
||||
pub fn build_circuit(circuit_name: &str) {
|
||||
let root = resolve_root();
|
||||
|
||||
let circuit_dir = root.join(circuit_name);
|
||||
let circuit_dir_str = circuit_dir
|
||||
.to_str()
|
||||
.expect("Failed to convert the circuit directory path to a string");
|
||||
|
||||
let lib_dir = lbc_root_dir.join("lib");
|
||||
let lib_dir = root.join("lib");
|
||||
let lib_dir_str = lib_dir
|
||||
.to_str()
|
||||
.expect("Failed to convert the lib directory path to a string");
|
||||
|
||||
println!("cargo:rerun-if-changed={circuit_dir_str}");
|
||||
println!("cargo:rerun-if-changed={lib_dir_str}");
|
||||
println!("cargo:rustc-env={LBC_ROOT_DIR}={lbc_root_dir_str}");
|
||||
println!("cargo:rustc-link-search=native={circuit_dir_str}");
|
||||
println!("cargo:rustc-link-search=native={lib_dir_str}");
|
||||
println!("cargo:rustc-link-lib=static={circuit_name}");
|
||||
@ -177,3 +184,12 @@ pub fn build(circuit_name: &str) {
|
||||
println!("cargo:rustc-link-lib={cpp_lib}");
|
||||
println!("cargo:rustc-link-lib=static=gmp");
|
||||
}
|
||||
|
||||
pub fn build_rapidsnark() {
|
||||
let root = resolve_root();
|
||||
|
||||
for binary in ["prover", "verifier"] {
|
||||
let path = root.join(binary);
|
||||
println!("cargo:rerun-if-changed={}", path.display());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
fn main() {
|
||||
lbc_build::build("poc");
|
||||
lbc_build::build_circuit("poc");
|
||||
}
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
fn main() {
|
||||
lbc_build::build("pol");
|
||||
lbc_build::build_circuit("pol");
|
||||
}
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
fn main() {
|
||||
lbc_build::build("poq");
|
||||
lbc_build::build_circuit("poq");
|
||||
}
|
||||
|
||||
22
rust/logos-blockchain-circuits-rapidsnark-sys/Cargo.toml
Normal file
22
rust/logos-blockchain-circuits-rapidsnark-sys/Cargo.toml
Normal file
@ -0,0 +1,22 @@
|
||||
[package]
|
||||
name = "logos-blockchain-circuits-rapidsnark-sys"
|
||||
categories.workspace = true
|
||||
description.workspace = true
|
||||
edition.workspace = true
|
||||
keywords.workspace = true
|
||||
license.workspace = true
|
||||
readme.workspace = true
|
||||
repository.workspace = true
|
||||
version.workspace = true
|
||||
|
||||
[features]
|
||||
default = ["prebuilt"]
|
||||
prebuilt = ["lbc-build/prebuilt"]
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
[dependencies]
|
||||
|
||||
[build-dependencies]
|
||||
lbc-build = { workspace = true }
|
||||
3
rust/logos-blockchain-circuits-rapidsnark-sys/build.rs
Normal file
3
rust/logos-blockchain-circuits-rapidsnark-sys/build.rs
Normal file
@ -0,0 +1,3 @@
|
||||
fn main() {
|
||||
lbc_build::build_rapidsnark();
|
||||
}
|
||||
26
rust/logos-blockchain-circuits-rapidsnark-sys/src/lib.rs
Normal file
26
rust/logos-blockchain-circuits-rapidsnark-sys/src/lib.rs
Normal file
@ -0,0 +1,26 @@
|
||||
use std::path::PathBuf;
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
const PROVER_BINARY: &str = "prover.exe";
|
||||
#[cfg(not(target_os = "windows"))]
|
||||
const PROVER_BINARY: &str = "prover";
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
const VERIFIER_BINARY: &str = "verifier.exe";
|
||||
#[cfg(not(target_os = "windows"))]
|
||||
const VERIFIER_BINARY: &str = "verifier";
|
||||
|
||||
#[must_use]
|
||||
fn lbc_root_dir() -> PathBuf {
|
||||
PathBuf::from(env!("LBC_ROOT_DIR"))
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn prover() -> PathBuf {
|
||||
lbc_root_dir().join(PROVER_BINARY)
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn verifier() -> PathBuf {
|
||||
lbc_root_dir().join(VERIFIER_BINARY)
|
||||
}
|
||||
@ -1,3 +1,3 @@
|
||||
fn main() {
|
||||
lbc_build::build("signature");
|
||||
lbc_build::build_circuit("signature");
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user