Sovereign zero-knowledge proof-of-personhood. Proves unique human individuality across governance and voting protocols without disclosing biometrics, persistent identifiers, or actions that link across scopes.
In a pseudonymous network one actor can spin up ten thousand addresses, and no amount of rate limiting distinguishes them from ten thousand people. SybilGuard makes the distinction inside the circuit, where it cannot be inspected or forged.
A person's secret is fixed, but the identifier they present is derived per scope. In a governance vote the nullifier is a function of the scope and nothing else, so a second ballot from the same person produces the identical nullifier and is rejected as a double action.
Across two different scopes the nullifiers share no value, so the two actions cannot be joined up. Voting in one protocol does not reveal that you voted in another.
The prover shows membership in the verified personhood Merkle tree. The verifier learns the nullifier and the scope identifier — a claim of uniqueness, and nothing about who made it.
// derived inside the circuit, not by the application Nullifier = Poseidon(IdentitySecret, ScopeIdentifier) Commitment = Poseidon(IdentitySecret, Salt) // what the verifier receives
Verified in sub-second execution on mobile devices, and directly on EVM chains through Groth16 pairing precompiles.
| Circuit | What it enforces |
|---|---|
| merkle_proof.circom | A twenty-level binary Poseidon Merkle tree inclusion check, approximately 4,800 R1CS constraints. |
| nullifier_derivation.circom | Scope-bound derivation, which is what prevents correlation across applications. |
| enclave_attestation.circom | Verifies an Apple Secure Enclave or Android StrongBox ECDSA P-256 signature chain. |
Proving, double-spend prevention, graph analysis and identity resolution, as separate crates rather than one program.
| Crate | What it does |
|---|---|
| crates/zk | Arkworks Groth16 prover and verification keys. |
| crates/nullifier | Double-spend prevention and Bloom filter registries. |
| crates/graph | Modified SybilRank random walk with spectral clustering. |
| crates/wot | Web-of-trust recursive vouching protocols. |
| sybilguard-cli | Proof generation from a scope on the command line. |
# the whole workspace, then a proof for one scope
git clone https://github.com/KELLERBABG/SybilGuard.git
cd SybilGuard && cargo test --workspace
cargo run --bin sybilguard-cli -- generate-proof --scope governance-vote-42