C

Certify

Rapid on-chain certification platform running on Solana.

The problem Certify solves

Certify leverages the power of the Solana Blockchain to allow users to create, save, and verify certificates as NFTs on a decentralized blockchain. All the certificates stay on the blockchain, free from fraud and fakes. Employers can check their employee’s credentials and certifications, schools & colleges can save student mark sheets, vaccine passports can be verified without the fear of counterfeits. The platform makes the process of officiating documents immensely easy and straightforward, with each certificate signed by a specific solana wallet address. Furthermore, every certificate is accompanied by a QR code that matches an on-chain NFT transaction signature, which can be easily scanned to prove its authenticity. The platform is highly scalable and can easily accommodate and support millions of certificates and can also be customized to suit the specific needs of the user.

Certify has a built-in tool that can be used to generate signed wedding certificates along with the wallet address of the user, for it is now time for weddings to truly move into the 21st century.

Challenges we ran into

Since we’re new to developing DApps in general (having not gotten on the Ethereum train ever before either), things like connecting to a wallet to be able to sign SPL token transactions (the way Solana does it using sollet.io or Phantom) on-chain was the biggest challenge we faced.

Having tried all sorts of react/nextjs wallet connection libraries that exist for Solana today, what finally worked for us is the Project Serum wallet adapter (fairly old, yet stable) but it had a few typescript bugs that needed fixing (also why our project repository has the

node_modules

folder being tracked in source control, since it has a slightly modified version of this library).

We tried using Arweave to store the certificates (being inspired to do so by the Degenerate Apes NFT collection) but that got very expensive very quickly since Arweave doesn’t have a testnet and deploying a full node of our own wasn’t a viable option at the time. This is still something we want to explore in the future, for decentralizing the storage of the actual certificate images on a blockchain as well, assuming we can get the cost/file sizes low enough to do so. We finally settled on associating the on-chain devnet transaction signatures with the generated certificate images (stored as base64 strings :P) using our own database.

Discussion