MAYA is implemented in Rust with two curve instantiations. The source code accompanies the research paper.

The current artifact reproduces the performance measurements reported in the paper. A public API for allowing users to shuffle their own ciphertexts is still under development. Once available, this page will be updated with the corresponding usage instructions and commands.

Repositories

RepositoryContents
maya_shuffle_proofThe code evaluated in the paper, as maya_ristretto (Ristretto255, curve25519-dalek) and maya_p256 (NIST P-256, arkworks)
maya_extensionsThe current implementation, together with the MAYAsk protocols

See the Changelog for what changed between them. The commands below are for maya_shuffle_proof.

Requirements

  • Hardware: x86-64 CPU, minimum 8 GB RAM (16 GB recommended)
  • Software: Rust >= 1.81 (install via rustup.rs)

Quick Start

cd maya_ristretto
cargo build --release --features yoloproofs,parallel
QUICK=1 cargo bench --bench r1cs --features yoloproofs,parallel

Reproducing the benchmarks

cd maya_ristretto
# Single-threaded
cargo bench --bench r1cs --features yoloproofs
# Multi-threaded
cargo bench --bench r1cs --features yoloproofs,parallel

Repository Structure

maya_ristretto/          # Primary instantiation
  src/                    # Library source
  benches/r1cs.rs         # Benchmark
maya_p256/                # Secondary instantiation
  src/                    # Library source
  benches/r1cs.rs         # Benchmark