Back to all work

Software engineering

Celo Credentials

Gasless, non-transferable education credentials with public on-chain verification and revocation.

The project at a glance

The need

Receive a verifiable education credential without having to buy cryptocurrency.

My contribution

I designed and implemented the contract, relayer backend, frontend integration and tests.

The testnet result

The source-verified Celo Sepolia deployment demonstrates issuer authorization, credential issuance, active read-back, and final revocation through public transactions and chain state.

From issuance to revocation

Reference application flow. The relayer covers issuance fees; public verification reads the contract state.

  1. Sign

    The authorized institution signs a credential voucher off-chain (EIP-712).

  2. Issue

    The relayer submits the transaction and pays the fees. The contract validates the voucher.

  3. Verify

    The non-transferable credential can be publicly verified on Celo.

  4. Revoke

    The contract owner or the still-authorized original issuer can revoke it.

Summary

Celo Credentials is a full-stack reference application for gasless, non-transferable education credentials. Institutions sign EIP-712 vouchers off-chain, a relayer pays the gas, and credentials remain publicly verifiable and revocable on Celo.

Role and scope

I designed and implemented the smart contract, deployment path, relayer backend, indexer boundary, frontend integration, tests, and public evidence manifest.

Problem and constraints

A recipient should receive a verifiable credential without holding funds, while the system still enforces issuer authorization, replay protection, expiry, non-transferability, and revocation.

Architecture

A Foundry-tested Solidity contract validates EIP-712 vouchers. An Express and viem relayer submits transactions, PostgreSQL supports indexing, and a Next.js interface provides connection, issuance, listing, and verification flows.

Decisions and trade-offs

Gas sponsorship stays in a separate relayer, credentials cannot be transferred, nonces are single use, deadlines expire, and revocation is limited to the contract owner or the still-authorized original issuer.

Security context

These controls are security design for a self-authored application. They are not presented as an external audit of the system.

Testing and verification

The public repository reports 11/11 Foundry tests covering minting, soulbound behavior, replay and expiry rejection, unauthorized signers, issuer-bound revocation paths, and fuzzing. CI also validates backend dependencies and the production frontend build.

Resources and links

The repository, verified contract, deployment transaction, lifecycle transactions, and machine-readable deployment manifest are public.

Scope and current status

This is a public testnet reference implementation. It has not been externally audited for production use.

Next case study

Security Reviews

View case study