Skip to content

Built on zkForge 2025 ❤️ A platform where professionals can showcase their experience, skills, and achievements without revealing sensitive information such as companies they've worked for, salaries, or confidential project details. All cryptographically verified.

License

manudev97/zkLinked

Repository files navigation

zkLinked ✨ — Privacy-First Professional Verification

The Problem: LinkedIn, AngelList, and other platforms force you to reveal sensitive career data to prove credibility. This creates privacy risks, discrimination, and fake profiles.

Our Solution: Prove your professional credentials with cryptographic certainty — without exposing private details like employer names, exact salaries, or personal endorsements. 🛡️✨

How ZK Proofs Work Here 🔐

  1. Experience Verification: Circuit validates you worked X years without revealing where
  2. Education Proof: Confirms your degree is from a verified institution (hash-based)
  3. Salary Range Check: Proves your compensation falls within a range (exact amount stays private)
  4. Skill Endorsements: Weighted validation from verified professionals (endorser identities protected)
  5. Certification Status: Active, unexpired credentials from trusted registries

Real-World Use Case: María, Blockchain Consultant 💼

María's Situation:

  • 5 years of blockchain consulting experience
  • Studied at MIT (wants to keep private for security)
  • Has active AWS certification
  • Wants to apply for a $150k premium project requiring verification

What María Does:

  1. Installs zkLinked app and completes verification form
  2. Uploads documents (CV, diplomas, certifications) - app generates hashes automatically
  3. Generates ZK proof using our circuits
  4. Shares proof + public outputs (keeps raw data private)
  5. Employer verifies the proof cryptographically
  6. Result: María accesses the $150k project without revealing she worked at Google, earned exactly $85k, or studied at MIT

Why Hide University Information? 🎓

Real scenarios where hiding university is valuable:

1. Socioeconomic Discrimination 💰

  • Problem: "We only hire from Ivy League"
  • ZK Solution: Prove quality education without revealing if it was Harvard or public university
  • Result: Opportunities based on competence, not prestige

2. Geographic Prejudice 🌍

  • Problem: "We don't hire from X country/region universities"
  • ZK Solution: Verify education without revealing nationality/location
  • Result: Global talent without geographic bias

3. Identity Protection 🛡️

  • Problem: Stalkers, harassers can track by university
  • ZK Solution: Verify credentials without exposing personal information
  • Result: Personal security + professional credibility

4. Unfair Competition ⚔️

  • Problem: Competitors can "steal" talent based on university
  • ZK Solution: Headhunters can't easily identify candidates
  • Result: Protection of valuable talent

5. Market Flexibility 🚀

  • Problem: "We only hire from Stanford for blockchain"
  • ZK Solution: Prove technical competence without university brand bias
  • Result: True meritocracy based on skills

Real-World Use Cases 🌍

Freelancers & Consultants 💼

  • Prove expertise without exposing client names
  • Access premium projects requiring verified credentials
  • Command higher rates through cryptographic credibility

Job Seekers 🎯

  • Stand out in applicant pools with verified profiles
  • Prevent discrimination based on employer history
  • Build reputation portably across platforms

Employers & Recruiters 🏢

  • Filter candidates automatically with verified credentials
  • Reduce time wasted on fake profiles and inflated resumes
  • Ensure compliance with hiring regulations

Networking & Mentorship 🤝

  • Connect with real professionals (anti-bot verification)
  • Find mentors based on verified expertise, not marketing
  • Build relationships on cryptographic trust

Anti-Fraud Mechanisms 🛡️

  • Cryptographic Integrity: Impossible to forge ZK proofs
  • Sybil Resistance: Requires multiple endorsements from different verified users
  • Registry Validation: Institutions/certifications must be in official databases
  • Temporal Decay: Older endorsements have reduced weight
  • Cross-Validation: Multiple verification sources prevent single points of failure

What’s inside 📦

  • circuits/ — the ZK factory (Noir circuits)
    • src/main.nr — orchestrates all checks
    • src/experience.nr — work experience logic
    • src/education.nr — education validity
    • src/certifications.nr — active certifications
    • src/skills.nr — endorsements-based skills
    • src/reputation.nr — final aggregate score
    • src/utils.nr — helpers (Poseidon2 hash, Merkle, etc.)
    • Prover.toml — ready-to-run example inputs
    • Nargo.toml — Noir project configuration

How it works (like I’m five) 🧸

  1. You give the circuit your private data (years worked, school hash, skills).
  2. The circuit checks everything secretly.
  3. It only reveals tiny truths: “meets min years?”, “education OK?”, “skills OK?”, and a final score.
  4. Anyone can verify you’re honest — without seeing your private info.

User flow 👩‍💻➡️🔐➡️✅

  1. Edit circuits/Prover.toml (we’ve included a complete example).
  2. Run the commands to build a proof.
  3. Share the proof + public outputs (keep raw data private).

Run it 🚀

cd circuits
nargo check       # compile the circuit
nargo execute     # generate the witness from Prover.toml
# generate the ZK proof (Barretenberg's bb CLI tool)
bb prove -b ./target/circuits.json -w ./target/circuits.gz -o ./target   
# verify the proof using public outputs
bb write_vk -b ./target/circuits.json -o ./target
bb verify -k ./target/vk -p ./target/proof -i ./target/public_inputs
# verifier solidity contract
bb write_solidity_verifier -k ./target/vk -o ./target/Verifier.sol

Note: If you edit Prover.toml, keep array sizes exact (e.g., 100 institutions, 200 certs).

What we validate today ✅

  • Experience: years computed from start_years/end_years + sanity checks (no future dates, etc.).
  • Salary: “is current salary within [min, max]?” (it doesn’t reveal the exact salary).
  • Education: the institution_hash must be present in a provided whitelist.
  • Certifications: each must exist in a registry and be unexpired.
  • Skills: endorsements are weighted and averaged; requires a minimum count.
  • Reputation: a weighted sum of the above into a final score.

Privacy & crypto bits 🛡️

  • Poseidon2 hashing for ZK-friendly commitments & nullifiers (in utils.nr).
  • Merkle root helper available to move large lists to membership proofs (future step).
  • Only aggregated public outputs are revealed; raw inputs stay private.

Example public outputs 🧾

{
  "experience_verified": 1,
  "salary_range_verified": 1,
  "education_verified": 1,
  "certifications_verified": 1,
  "skills_verified": 1,
  "overall_reputation_score": 100
}

What stays private 🔒

  • Company names, exact salaries, specific institutions (we use hashes), raw endorsements.

Roadmap & Next Steps 🔭

  • Replace whitelists with Merkle roots and private membership proofs
  • Emit public nullifiers (anti-replay) and integrate on-chain verification
  • Smart contracts: verify proofs on-chain and mint badges based on scores
  • Frontend: generate proofs client-side with Noir.js + Web Workers for UX
  • Mobile app with biometric verification integration

Tech highlights ⚙️

  • Noir v1 beta compatible (nargo 1.0.0-beta.11).
  • Poseidon2 dependency poseidon@v0.1.1 for efficient hashing.
  • Modular circuits for maintainability and cheaper constraints.

Troubleshooting 🧯

  • If nargo execute fails, double-check array sizes in Prover.toml (must match exact lengths).
  • If hashing libraries conflict, ensure your Nargo.toml uses poseidon = { tag = "v0.1.1", git = "https://github.com/noir-lang/poseidon" }.

Why This Matters 🌟

For Individuals: Take control of your professional data while proving credibility For Organizations: Reduce hiring risks and improve talent quality
For Society: Create a more trustworthy, privacy-preserving professional ecosystem

Deploy Address NFT

forge script script/DeployNFT.s.sol --rpc-url $RPC_URL --private-key 0x$PRIVATE_KEY --broadcast

[Success] Hash: 0x33e64a9705e70a66484b38405ea4814b860a37ee6a5427e794120e11c78c7f42 Contract Address: 0x7b28E980b9FCAD6d83cDECdBBC71e4e130a0aeF7

Ready to prove your worth — privately? 🧪✨

About

Built on zkForge 2025 ❤️ A platform where professionals can showcase their experience, skills, and achievements without revealing sensitive information such as companies they've worked for, salaries, or confidential project details. All cryptographically verified.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published