Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
4b8b94f
feat: workspace scaffold, CI, and pinned Poseidon params (M1)
psgoularte Jul 21, 2026
01104d4
feat: arkworks Groth16/BN254 membership circuit + prover (M2)
psgoularte Jul 21, 2026
cce9994
feat: on-chain Groth16 verification + CU benchmark (M3)
psgoularte Jul 21, 2026
27b6ea5
feat: on-chain incremental Merkle tree + deposit + root history (M4)
psgoularte Jul 21, 2026
274c497
feat: nullifier set + execute_action gated by proof, PDA-signed CPI (M5)
psgoularte Jul 22, 2026
0c927c2
feat: epochs (crank) + fee-paying relayer + real transfer action (M6)
psgoularte Jul 22, 2026
5942d5c
feat: compliance layer — viewing keys + deposit-screening hook (M7)
psgoularte Jul 22, 2026
b538548
feat: CLI, threat model, and runnable demo (M8)
psgoularte Jul 22, 2026
7a83767
test: adversarial validation gates + independent security review (VAL…
psgoularte Jul 22, 2026
b3d2d15
feat(program): hardening — pool-scoped nullifiers, gated bench ix, on…
psgoularte Jul 22, 2026
6f0de42
docs+feat: trusted-setup reproducibility, SECURITY.md, CLI on-chain c…
psgoularte Jul 22, 2026
f0f1983
docs: refresh VALIDATION-RESULTS after the hardening pass (Section 6)
psgoularte Jul 22, 2026
a303c68
feat(anonymity): min-entropy effective-k over the association set + A…
psgoularte Jul 22, 2026
220c2ee
feat(compliance): association sets — ZK inclusion proof + exclusion r…
psgoularte Jul 22, 2026
5af0c7f
docs: refresh VALIDATION-RESULTS for Addendum v2 (effective-k, associ…
psgoularte Jul 22, 2026
c51ec35
feat(setup): real multi-contributor Phase-2 ceremony; precision fixes…
psgoularte Jul 22, 2026
41f66df
docs: consolidate into docs/, rewrite README as front door, retire SP…
psgoularte Jul 22, 2026
cd80f39
docs: add PROOF.md — live devnet end-to-end run with verifiable signa…
psgoularte Jul 22, 2026
141873d
feat(anti-sybil): on-chain entry fee + honest real-k reporting
psgoularte Jul 23, 2026
aecc72d
feat(ceremony): distributable + independently-verifiable Phase-2 trus…
psgoularte Jul 23, 2026
0eafc04
feat(anonymity): synthetic scale analysis of effective-k / real-k
psgoularte Jul 23, 2026
62ea985
docs: reconcile documentation with current code (audit)
psgoularte Jul 23, 2026
3b663f3
docs: extend ARCHITECTURE milestone table with post-M8 passes
psgoularte Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: CI

on:
push:
branches: [main]
pull_request:

env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-D warnings"

jobs:
# Fast, host-only gates: formatting, lints, and the full test suite
# (circuit unit tests, program logic tests, the Poseidon equality test, and
# the compute-unit benchmark). These run on the stable toolchain pinned by
# rust-toolchain.toml.
check:
name: fmt + clippy + test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Cache cargo registry and target
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-

- name: rustfmt
run: cargo fmt --all -- --check

# Lint everything, including the `bench`-gated code paths.
- name: clippy
run: cargo clippy --workspace --all-targets --all-features

# Default features = the DEPLOYED configuration (no `bench`). This is the
# run that exercises `verify_membership_absent_from_default_build`.
- name: test (default features = deployed config)
run: cargo test --workspace

# The on-chain program must compile to SBF bytecode. This gate catches
# BPF-only breakage (host-forbidden syscalls, oversized stack frames) that
# the host build above cannot.
build-sbf:
name: build-sbf (program)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Cache cargo registry and target
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-sbf-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-sbf-

- name: Install Solana (Agave) toolchain
run: |
sh -c "$(curl -sSfL https://release.anza.xyz/stable/install)"
echo "$HOME/.local/share/solana/install/active_release/bin" >> "$GITHUB_PATH"

# The DEPLOYED artifact: default features, so the benchmark-only
# VerifyMembership instruction is NOT in the bytecode.
# --arch v3 matches the sBPF version enabled on current Agave clusters
# (the default v0 is not yet feature-gated on-chain).
- name: cargo build-sbf (deployed artifact)
run: cargo build-sbf --manifest-path program/Cargo.toml --arch v3

- name: full flow (prove → execute_action → all negatives/invariants)
run: cargo run --release --manifest-path bench/Cargo.toml --bin flow

- name: compliance (screening hook + selective disclosure)
run: cargo run --release --manifest-path bench/Cargo.toml --bin compliance

- name: privacy trace red-team (fee payer, anonymity set, no linkage)
run: cargo run --release --manifest-path bench/Cargo.toml --bin trace

# The CU benchmark needs the bench-featured build (VerifyMembership). This
# rebuilds the .so with the feature; it does NOT ship.
- name: cargo build-sbf (bench feature) + CU benchmark < 200k CU
run: |
cargo build-sbf --manifest-path program/Cargo.toml --features bench --arch v3
cargo test -p mirror-pool-program --features bench --test gen_fixture -- --ignored --nocapture
cargo run --release --manifest-path bench/Cargo.toml --bin cu-bench
17 changes: 17 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/target
/bench/target
**/*.rs.bk
Cargo.lock.orig
.DS_Store
# Local validator ledger / keys produced by demo.sh
/test-ledger
*.so
!program/**/*.so
# Generated proving/verifying keys (regenerated by the circuit trusted setup)
/artifacts/*.bin

# Never commit keypairs or local ledgers (devnet/test keys live outside the repo)
*.json
!package.json
/keys/
/test-ledger/
549 changes: 549 additions & 0 deletions ARCHITECTURE.md

Large diffs are not rendered by default.

Loading