Live on Base Sepolia

Censor Resistant Academic Truth

Universities issue tamperproof credentials. Employers verify them without exposing a single student record. Zero knowledge proofs on Base L2.

0.7sProof Generation
~$0.01Base Gas Fee
100%On-Chain Verified
0PII Exposed
Core Features

How It Works

Four stages that make credential verification private, permanent, and trustworthy.

Credential Upload

Universities upload a file of graduating students. Each record is encrypted with AES-256-GCM and hashed with Poseidon before leaving the server. Raw data never reaches the public network.

Data Transformation

Names, matric numbers, and grades become 256-bit field elements the zero knowledge circuit can process. All computation stays local.

ZK Commitment

A Circom circuit computes Poseidon hashes of student data. These hashes are submitted to Base Sepolia via an ERC-4337 Paymaster. The institution never manages ETH.

Permanent Verification

Employers submit a claim and receive VERIFIED or NOT VERIFIED. No student data is revealed. The proof executes on chain using BN254 curve precompiles. Gas efficient and permanent.

Three Portals

Who Uses Veridaq

Each role has a dedicated portal with specific workflows and permissions.

Institution Portal

  • Upload student credential batches in XLSX format
  • Manage claim definitions and credential lifecycle
  • View earnings dashboard and withdraw revenue share
  • Toggle employer access to verify your own students
Secured and Safe

Employer Portal

  • Submit verification requests with claim type and threshold
  • Purchase credit packs from 5 to 500 verifications
  • View verification history with transaction hash audit trail
  • Use Chrome extension for quick verify from any webpage
Secured and Safe

Admin Portal

  • Approve institution KYC and manage subscriptions
  • View platform revenue and gas pool balances
  • Monitor per institution earnings and transactions
  • Manage platform-wide settings and deactivate accounts
Secured and Safe
Zero Knowledge

Cryptographic Circuits

The core of the system is a Circom 2 circuit. It takes private inputs like the student hashed name, matric number, and CGPA, and public inputs like the claim type and threshold. It produces a Groth16 proof that the claim is true without revealing any private inputs.

The proof verifies on chain in milliseconds. The employer gets a boolean answer. Student data stays on the backend server.

Trusted Setup

Phase 2 ceremony using Hermez Powers of Tau. Parameters are public and verifiable with no toxic waste.

L2 Precompiled Verification

Proofs verify on Base Sepolia using BN254 precompiles. About 236,000 gas per verification, cheap enough for everyday use.

Poseidon Hashing

A ZKP friendly hash designed for arithmetic circuits. Keccak256 would make the circuit impractically large. Poseidon keeps it fast and small.

Traditional — ECDSA sig verify
function verifyCredential(
  // PII must be sent raw to verify ⚠️
  string memory name,
  string memory matric,
  uint256 cgpa,
  bytes memory signature,
  address institutionKey
) public returns (bool) {
  bytes32 hash = keccak256(
    abi.encodePacked(
      name, matric, cgpa     // PII exposed
    )
  );
  address signer = ECDSA
    .recover(hash, signature);
  require(
    signer == institutionKey,
    "Invalid signature"
  );
  emit Verified(
    name, matric, cgpa       // LEAKED on chain
  );
  return true;
}
ZK — credential.circom
pragma circom 2.0.0;
include "poseidon.circom";

template CredentialVerifier() {
    signal input nameHash;
    signal input matricHash;
    signal input cgpa;
    signal input classification;
    signal input courseHash;
    signal input graduationYear;
    signal input blindingFactor;
    signal input institutionKey;

    signal input commitment;
    signal input nullifier;
    signal input claimType;
    signal input threshold;

    component commitmentHasher = Poseidon(7);
    commitmentHasher.inputs[0] <== nameHash;
    commitmentHasher.inputs[1] <== matricHash;
    commitmentHasher.inputs[2] <== cgpa;
    commitmentHasher.inputs[3] <== classification;
    commitmentHasher.inputs[4] <== courseHash;
    commitmentHasher.inputs[5] <== graduationYear;
    commitmentHasher.inputs[6] <== blindingFactor;
    commitment === commitmentHasher.out;

    component nullifierHasher = Poseidon(2);
    nullifierHasher.inputs[0] <== matricHash;
    nullifierHasher.inputs[1] <== institutionKey;
    nullifier === nullifierHasher.out;

    component claim = ClaimDecoder(claimType);
    claim.cgpa <== cgpa;
    claim.classification <== classification;
    claim.courseHash <== courseHash;
    claim.graduationYear <== graduationYear;
    claim.threshold <== threshold;
    claim.out === 1;
}
How It Works

Protocol Operations

From batch upload to on-chain verification. How data moves through the system.

01

Hash Injection

Student records are hashed through Poseidon with a random blinding factor. The result is a fixed-size field element that cannot be reversed.

02

L2 Commitment

Hashes are submitted to Base Sepolia via an ERC-4337 Paymaster. The institution pays no gas because the platform sponsors the transaction.

03

ZK Proof Generation

An employer submits a claim. The backend generates a Groth16 proof in about 0.7 seconds using a compiled WASM circuit. The proof says the claim is true without revealing why.

04

Permanent Verification

The proof is verified on-chain via BN254 pairing precompiles. The result, VERIFIED or NOT VERIFIED, is permanent and public. The underlying data remains private.

Cryptographic Finality

The on-chain verifier checks the Groth16 proof against the stored commitment and the employer claim. If the math works, the result sticks. No one can alter it. Not the institution, not the employer, not us.

  • Verification runs deterministically on Base L2
  • Non interactive. The employer never touches student data
  • Poseidon hashing guarantees the commitment cannot be reversed
  • ERC 4337 Paymaster covers all gas. No wallet management needed
Solidity // ZKVerifier.solAbout 236k Gas
function verifyProof(
  uint256[2] calldata _pA,
  uint256[2][2] calldata _pB,
  uint256[2] calldata _pC,
  uint256[4] calldata _pubSignals
) public view returns (bool) {
  require(
    verifier.verifyProof(
      _pA, _pB, _pC, _pubSignals
    ),
    "Invalid ZK proof"
  );
  emit VerificationLogged(
    _pubSignals[0]  // commitment
  );
  return true;
}
REVENUE SPLIT
70/ 20 / 10

Platform takes 70 percent. Institution earns 20 percent. Gas pool gets 10 percent.

CREDIT PACKS
$7to $550

Buy verification credits in packs from 5 to 500. Volume discounts apply.

INSTITUTION EARNINGS
20%each verification

Institutions earn their share even when verifying their own students through the institution as employer feature.

Browser Tooling

Chrome Extension

Verify credentials and upload batches directly from your browser. No need to open the full portal for routine tasks. Institutions with employer access can also verify through the extension.

Quick Verify

Submit verification requests directly from any webpage. Input institution, matric number, and claim type.

Batch Upload

Upload student credential files directly from the extension panel without opening the full portal.

Session Sync

Shares your web app session via httpOnly cookies. One login works everywhere.

Zero Data Exposure

All cryptographic operations happen server-side. The extension never sees raw student data.

Download Extension (Chrome)

Manifest V3 . Chrome 88+ . No external permissions required

VERIDAQVERIDAQ
INSTITUTION
Companion v0.1
Signed in as
Institution
futminna@veridaq.xyzFREE
Upload Batch
View Claims
Verifications
Institution · click dot to swap

Compliance by Mathematics.

If the data does not exist on chain, it cannot be breached. Compliance is built into the architecture.

No PII on Chain

The blockchain stores only Poseidon hash commitments, 32-byte field elements that cannot be reversed. No student name, matric number, CGPA, or classification ever appears on the public ledger. This is not a configuration option. It is a structural property that cannot be disabled.

Encryption by Default

Student credential data is encrypted with AES-256-GCM before being stored in PostgreSQL. The encryption key lives in the environment and never touches the database. Data is decrypted only in memory during proof generation, then garbage collected.

Right to Erasure

Because on-chain commitments contain no personal data, institutions can delete the encrypted backend records without violating blockchain immutability. Orphaned commitments are meaningless bytes without access to the original data and blinding factor.

Auditable by Design

Every verification produces a transaction hash on Base Sepolia. Any party can verify that a proof was checked and accepted by the on-chain verifier. The audit trail is permanent, public, and contains zero personal data.

GDPRNo PII processed
SOC2Hardened perimeter
ISO 27001Security first
NDPRStudent privacy