EXPERIMENTAL · OPEN SOURCE · MIT

Zero-knowledge proofs,in plain Java.

Prove a fact without revealing the data behind it. Define circuits as Java classes, prove them with a pure-Java Groth16 prover, and verify the proof anywhere — in your JVM or on Cardano.

GRADLEimplementation platform('org.zeroj:zeroj-bom-core:0.1.0-pre12')
  • JAVA 25
  • PURE-JAVA PROVER
  • GROTH16 · BLS12-381
  • CARDANO PLUTUS V3
BUILT ON
OPEN STANDARDS
  • Java 25
  • Groth16
  • BLS12-381
  • Plutus V3
  • JuLC
  • snarkjs
  • Poseidon

/ ZERO-KNOWLEDGE, IN ONE PICTURE

Prove the fact.
Keep the data.

A zero-knowledge proof convinces a verifier that a statement about your data is true — and reveals nothing else. Flip the view to see what each side actually learns.

InputValueVisibility
age27SECRET
threshold18PUBLIC
STATEMENTage ≥ 18✓ proven

The prover holds every value and runs the circuit to produce a proof.The verifier sees only public inputs and a ~192-byte proof — yet is convinced the statement is true.

Zero-knowledge in plain English

/ HOW IT WORKS

From a Java class
to a Cardano validator.

One circuit, four steps, all in Java. Start with a unit test on your laptop; end with a proof verified by Plutus V3.

01 / DEFINE

Write the rule as a Java class.

Mark inputs @Secret or @Public, return a ZkBool, and the annotation processor generates a typed AgeCheckCircuit companion. No new language to learn.

Write circuits with annotations
AgeCheck.java
@ZKCircuit(name = "age-check", version = 1)
public class AgeCheck {

    @Prove
    ZkBool prove(@Secret @UInt(bits = 8) ZkUInt age,
                 @Public @UInt(bits = 8) ZkUInt threshold) {
        return age.gte(threshold);   // the statement you prove
    }
}
Range-checked inputs, symbolic types, generated companion

/ THE TOOLKIT

Serious cryptography.
Familiar Java.

Explore the docs

/ WHAT WILL YOU BUILD?

Privacy that apps
can actually verify.

Every idea below has a design walkthrough, and most have a runnable end-to-end demo on a local Cardano devnet.

/ YOUR LEARNING PATH

From zero to on-chain,
one step at a time.

No cryptography background needed. If you can write a unit test, you can write a circuit.

  1. ≈ 15 MIN

    Understand the idea

    Provers, verifiers, circuits and witnesses — in plain English, with Java analogies.

    Learn ZK
  2. ≈ 10 MIN

    Make your first proof

    A runnable Gradle project: define, prove and verify a secret in pure Java.

    Quickstart
  3. ≈ 1 HOUR

    Build real statements

    Range proofs, private allowlists with nullifiers, and on-chain verification.

    Tutorials
  4. ONGOING

    Ship responsibly

    Replay protection, trusted setup ceremonies and a security checklist for ZK apps.

    Security guide

/ AI-READY DOCUMENTATION

Your coding assistant
can read these docs too.

Every page has a Markdown twin. An AI Starter Pack drops straight into CLAUDE.md,AGENTS.md or a Cursor rule, and a circuit API catalog generated from the Java sources keeps agents from inventing methods.

TRY THIS PROMPT
Read https://zeroj.dev/llms.txt and https://zeroj.dev/ai/starter-pack.md.
Using ZeroJ (Groth16, BLS12-381), write a @ZKCircuit that proves a
secret balance is at least a public threshold, a JUnit test with a
valid and an invalid witness, and the code to verify the proof in Java.

/ HONEST STATUS

Experimental —
and upfront about it.

ZeroJ is research software. It is heavily tested — thousands of tests, official vectors, differential checks against independent implementations and end-to-end runs on a Cardano devnet — but it has not been externally audited. Don’t use it to protect real value yet.

Status & maturity
  • BETA
    Groth16 on BLS12-381Pure-Java prove & verify — the focus of this release
  • BETA
    On-chain Groth16JuLC / Plutus V3 — testnets only, not value-bearing
  • BETA
    Circuits & gadgetsAnnotations, DSL, standard library
  • BETA
    BBS credentialsCFRG draft; prefer the blst provider for issuer keys
  • EXPERIMENTAL
    PlonKProver, verifier and validators — no correctness claims

/ YOUR FIRST PROOF STARTS HERE

Less cryptography.
More building.