Civitas
Privacy You Can Prove.
The problem Civitas solves
🩸 The Silent Crisis: Why We Built Civitas
We rarely question the machinery of payroll until it breaks. Yet, every month, the current financial system demands a sacrifice: to get paid, you must surrender your privacy.
Your financial life, your struggles, your bonuses, your stability, is currently treated as an open book. It is visible to bank tellers, HR administrators, third-party processors, and cloud providers. You are living in a financial glass house, and the curtains are permanently open.
Civitas breaks this glass. We believe that proving you have been paid shouldn't require revealing what you are worth.
💀 The Three Fractures in Modern Payroll
1. The Dignity Deficit (Data Exposure)
In the traditional world, your salary is gossip waiting to happen.
- The Reality: When multiple intermediaries see your data, it invites bias, workplace politics, and "salary discrimination." It exposes you to targeted phishing and internal leaks.
- The Civitas Standard: We treat your salary like a sealed letter, not a postcard. Only you hold the key to open it. Not your boss, not the bank, not the admin.
2. The Verification Paradox
How do you prove a company is solvent without letting auditors spy on every employee?
- The Reality: Today, auditing is invasive. To verify the total, auditors demand to see the individual parts. It’s like checking a math student's test by demanding to read their diary.
- The Civitas Standard: We use Zero-Knowledge Proofs to mathematically guarantee that the total payroll is correct, down to the last decimal, without ever revealing a single individual’s paycheck. We prove the sum without exposing the parts.
3. The Surveillance Economy
Standard banking rails are data harvesters.
- The Reality: Every bank transfer creates a permanent digital scar. It reveals who paid you, when, and how much. It paints a picture of your life that advertisers and analysts trade for profit.
- The Civitas Standard: We use Zcash shielded transactions. It’s the digital equivalent of receiving cash in a soundproof room. The value moves, but the observer sees nothing.
👥 Who is Civitas For?
For the Sovereign Employee
- The Feeling: Imagine walking into a bank where the teller knows you have funds, but cannot see your balance.
- The Tech: You log in with a ZK-Passport. No email, no phone number, no data to leak. You receive funds in a shielded pool. You detach your financial worth from your workplace identity.
For the Ethical Employer
- The Feeling: The peace of mind that comes from holding zero toxic data.
- The Tech: You can prove to regulators, auditors, and investors that your payroll is 100% accurate and solvent, without holding a single liability-prone spreadsheet of employee salaries. Privacy is the ultimate security.
For the Modern Auditor
- The Feeling: Verifying a complex system instantly, without the legal headache of handling sensitive personal data.
- The Tech: Instead of trusting human error-prone spreadsheets, you verify an immutable cryptographic proof stored on NEAR. Math doesn't lie, and it doesn't need to snoop.
For DAOs & Borderless Teams
- The Feeling: A collective working together without doxxing each other’s livelihoods.
- The Tech: Pay a contributor in Brazil and a developer in Berlin with the same privacy guarantees. Replace trust in a "treasurer" with trust in code.
The Bottom Line
Civitas allows companies to prove they paid everyone correctly, without revealing how much anyone earns, while settlement happens in the complete darkness of Zcash.
Challenges I ran into
🚧 Challenges & Engineering Hurdles
1. Turbopack Conflict (Next.js 16)
Problem: Turbopack bundled
.test.js
files and mishandled cryptography packages as browser modules.Solution: Enforced server-side exclusion in
next.config.ts
:serverExternalPackages: ['thread-stream', 'pino', '@nillion/secretvaults']
2. Zcash Node Instability
Problem: RPC timeouts and memory spikes on macOS.
Solution: Dockerized the node for stable Linux environment.
3. Identity Anchor Bug
Problem: Comparing database
UUID
vs ZKemployee_tag
failed verification.Solution: Used Poseidon Hash as single source of truth.
4. SnarkJS Silent Freeze
Problem: CLI proof generation randomly froze without logs.
Solution: Switched to direct library integration:
const { proof } = await snarkjs.groth16.fullProve(input, wasm, zkey);
5. NEAR Contract Vulnerabilities
Problem: Replay attacks and public access to orchestrator functions.
Solution: Added
predecessor_account_id
checks and run uniqueness enforcement.6. Three-Login State Machine
Problem: Password, ZK-Tag, and Credential-File logins caused session race conditions.
Solution: Unified session object anchored to cryptographic identity.
Integrating ZK proofs, distributed orchestration, and two blockchains (NEAR & Zcash) was like assembling a rocket mid-flight.
Tracks Applied (7)
General Bounty
Network School
Privacy Infrastructure & Developer Tools
Electric Coin Company
Privacy Infrastructure & Developer Tools
Zcash Community Grants
Privacy-Preserving AI & Computation
nillion
Cross-Chain Privacy Solution
Bitlux
Private Payments & Transactions
NEAR Protocol
General Bounty
Project Tachyon
Cheer Project
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.
