Skip to content

QED-it/ragu

Repository files navigation


ragu LicenseAsk DeepWiki

Ragu is a Rust-language proof-carrying data (PCD) framework that implements a modified version of the ECDLP-based recursive SNARK construction from Halo [BGH19]. Ragu does not require a trusted setup. Developed for Project Tachyon and compatible with the Pasta curves employed in Zcash, Ragu targets performance and feature support that is competitive with other ECC-based accumulation/folding schemes without complicated circuit arithmetizations.

⚠️ Ragu is under heavy development and has not undergone auditing. Do not use this software in production.

Resources

  • The Ragu Book provides high-level documentation about Ragu, how it can be used, how it is designed, and how to contribute. The source code for the book lives in this repository in the book subdirectory.
  • Crate documentation is available for official Ragu crate releases.
  • Unofficial (internal) library documentation is continually rendered from the main branch. This is primarily for developers of Ragu.

Requirements

  • The minimum supported Rust version is currently 1.90.0.
  • Ragu requires minimal dependencies and currently strives to avoid using dependencies that are not already used in Zebra.

no_std Support

Ragu's approach to std and no_std follows four principles:

  1. no_std compatible. All library crates are #![no_std] and gate standard-library usage behind an optional std feature flag. The default multicore feature implies std; to build without it, use --no-default-features.
  2. alloc is required. All library crates depend on the alloc crate for heap-allocated types such as Vec and Box, gated behind a default-on alloc feature flag. In practice this means Ragu can target environments that provide a global allocator but lack a full std runtime, such as WebAssembly or embedded platforms.
  3. Performance features may depend on std. Optional features like multicore enable multi-threaded parallelism and imply std.
  4. std is required on the host. Build scripts, procedural macros, tests, and benchmarks all run on the host and require std. This is a common requirement even for no_std libraries in the Rust ecosystem.

License

This library is distributed under the terms of both the MIT license and the Apache License (Version 2.0). See LICENSE-APACHE, LICENSE-MIT and COPYRIGHT.

About

Rust language proof-carrying data framework

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Contributors

Languages