Back to Projects
SoulCert

SoulCert

Decentralised verifiable credential registry using consensual soul-bound tokens on Ethereum, with encrypted IPFS storage and role-based verification.

Feb 2026 - Jun 2026 4 months

Tech Stack

SolidityHardhatReactethers.jsIPFSOpenZeppelinSmart ContractsTypeScript

SoulCert is a decentralised verifiable credential registry built for QUT IFB452 Blockchain Technology. Academic and professional qualifications usually live in institution-controlled databases that are slow to verify and hard to trust long term. SoulCert issues credentials as consensual soul-bound tokens on Ethereum: they are non-transferable, tamper-evident, and only created after the holder explicitly accepts.

Architecture

The system uses a Manager / Ledger pattern to separate business logic from token storage:

Four stakeholders interact through the system:

RoleResponsibility
OwnerDeploys the system and authorises issuers
IssuerProposes credentials to holders
HolderAccepts or rejects proposals; can revoke per policy
VerifierValidates a credential against on-chain records

Credential lifecycle

Issuance — an issuer proposes a credential to a holder, who must accept before a token is minted. Rejection discards the proposal with nothing created.

Revocation — an authorised party can burn a token when the burn policy agreed at issuance allows it.

Verification — a verifier checks that a credential hash matches what is stored on-chain and that the token is still held by the expected wallet. The holder shares the credential document off-chain; verification itself happens on-chain.

Privacy — full credential content never touches the blockchain. Holders decrypt their documents locally using keys derived from their wallet.

What I built

A React DApp with separate views for issuers, holders, and verifiers, connected to the smart contracts via MetaMask on a local Hardhat network. The project includes a full test suite covering issuance, rejection, revocation, and verification.


Issue Credential dialog
Issuers propose credentials to a holder through the web interface.
Issuer dashboard
The issuer dashboard tracks issued credentials and pending proposals awaiting holder acceptance.
Unlock vault signature request
Holders sign a message with MetaMask to derive encryption keys and unlock their credential vault.
Holder dashboard
The holder dashboard shows pending proposals to accept or reject, alongside active soul-bound credentials.
Verify credential result
Verifiers confirm a credential is valid and belongs to the expected holder — no wallet connection required.
View All Projects
GitHub Repo Resume AWS Cloud Practitioner