A decentralized professional credential verification platform built on Stellar Soroban smart contracts, using Federated Byzantine Agreement (FBA) trust slices to audit engineering licenses and degrees across borders.
Engineering certifications vary by country, making it difficult for international firms to verify credentials quickly and reliably. QuorumProof replaces fragmented government portals with a trustless, privacy-preserving audit layer β powered by the same consensus model that underlies Stellar itself.
QuorumProof lets engineers build a Quorum Slice β a personal trust network made up of:
- π Their University (degree attestation)
- ποΈ A National Engineering Society (license validation)
- π’ Previous Employers (professional history)
Each node in the slice co-signs a Soulbound Token (SBT) on Stellar, creating a tamper-proof, portable credential that any firm can verify instantly β without contacting each institution individually.
This applies the Stellar whitepaper's "individual trust decisions" model to a high-stakes professional use case.
Do not use
verify_claimin production. Thezk_verifiercontract accepts any non-empty byte string as a valid proof. It performs no cryptographic verification and provides no privacy guarantees. It is admin-gated to limit exposure, but the gate is not a substitute for real ZK logic. Real proof verification (Groth16/PLONK) is tracked in #ZK-IMPL and targeted for v1.1.
- Audit Slices: Define your own quorum of trusted attestors (university, licensing body, employers)
- Soulbound Tokens (SBTs): Non-transferable on-chain credentials tied to your Stellar identity
- Conditional Verification (stub): API exists for claim-specific proofs (e.g. "has a Mechanical Engineering degree") but ZK verification is not yet implemented β see warning above
- Cross-Border Ready: Instant verification for international hiring, no embassy letters or notarizations
- Privacy-First: Credential holders control what is revealed and to whom
- Trustless: No central registry β verification is enforced by smart contract logic
- Rust (1.70+)
- Soroban CLI
- Stellar CLI
./scripts/build.sh./scripts/test.shCopy the example environment file:
cp .env.example .envConfigure your environment variables in .env:
# Network configuration
STELLAR_NETWORK=testnet
STELLAR_RPC_URL=https://soroban-testnet.stellar.org
# Contract addresses (after deployment)
CONTRACT_QUORUM_PROOF=<your-contract-id>
CONTRACT_SBT_REGISTRY=<your-contract-id>
CONTRACT_ZK_VERIFIER=<your-contract-id>
# Frontend configuration
VITE_STELLAR_NETWORK=testnet
VITE_STELLAR_RPC_URL=https://soroban-testnet.stellar.orgNetwork configurations are defined in environments.toml:
testnetβ Stellar testnetmainnetβ Stellar mainnetfuturenetβ Stellar futurenetstandaloneβ Local development
# Configure your testnet identity first
stellar keys generate deployer --network testnet
# Deploy
./scripts/deploy_testnet.shFollow the step-by-step guide in demo/demo-script.md
- Architecture Overview
- Trust Slice Model
- ZK Verification Design
- Threat Model & Security
- Error Code Reference
- Roadmap
issue_credential(subject, credential_type, metadata_hash) -> u64
get_credential(credential_id) -> Credential
revoke_credential(credential_id)create_slice(attestors: Vec<Address>, threshold: u32) -> u64
get_slice(slice_id) -> QuorumSlice
add_attestor(slice_id, attestor)attest(credential_id, slice_id)
is_attested(credential_id) -> bool
get_attestors(credential_id) -> Vec<Address>verify_claim(credential_id, claim_type, proof) -> bool
generate_proof_request(credential_id, claim_type) -> ProofRequestComprehensive test suite covering:
- β Credential issuance and revocation
- β Quorum slice creation and attestor management
- β Multi-party attestation flow
- β ZK conditional verification
- β SBT non-transferability enforcement
- β Error handling and edge cases
Run tests:
cargo testThe Problem: A Mechanical Engineer licensed in Brazil applying for a role in Germany faces weeks of manual credential verification across institutions, embassies, and licensing bodies.
The Solution: QuorumProof collapses that process to a single on-chain query β verified in seconds, privacy-preserving by design.
Blockchain Benefits:
- No trusted central registry to corrupt or go offline
- Transparent attestation history, auditable by any party
- Programmable verification rules enforced by smart contracts
- Accessible to any engineer with a Stellar wallet
Target Users:
- International engineering firms hiring across borders
- Engineers seeking global mobility
- Universities and licensing bodies issuing verifiable credentials
- Governments modernizing professional certification infrastructure
- v1.0 (Current): Core SBT issuance, quorum slice model, multi-attestor signing
- v1.1: ZK conditional verification (claim-specific proofs)
- v2.0: Revocation registry, credential expiry, renewal flows
- v3.0: Frontend UI with Stellar wallet integration
- v4.0: Mobile app, integration with national licensing APIs
See docs/roadmap.md for details.
We welcome contributions! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
See our Code of Conduct and Contributing Guidelines.
This project participates in Drips Wave β a contributor funding program! Check out:
- Wave Contributor Guide β How to earn funding for contributions
- Wave-Ready Issues β Funded issues ready to tackle
- GitHub Issues labeled
wave-readyβ Earn 100β200 points per issue
Issues are categorized as:
trivial(100 points) β Documentation, simple tests, minor fixesmedium(150 points) β Helper functions, validation logic, moderate featureshigh(200 points) β Core features, ZK integrations, security enhancements
This project is licensed under the MIT License β see the LICENSE file for details.
- Stellar Development Foundation for Soroban
- The Stellar whitepaper for the FBA trust model that inspired this design
- Drips Wave for supporting public goods funding