Certificate on IPFS and Ethereum

We are going through a very exciting phase of technological transformation. Blockchain community is re-designing a lot of existing use cases and trying to solve a lot of unsolved use cases with the help of decentralized, peer-to-peer technology.

Certificate generation and verification is one of the uses cases which is being attempted to be gracefully handled by blockchain. Here is one of the possible approach using Ethereum and IPFS.

Step 1: Every certificate issuer is required to have an address on Ethereum blockchain and only issuer can initiate a transaction from this address.

Step 2: Issuer initiates a zero Ether transaction to any arbitrary address with a payload of binary of the certificate. (There is big problem with this approach, we will look into it shortly)

Step 3: Transaction form Step 2 if goes through successfully will generate a transaction id which is printed on the certificate and given to the candidate.

Step 4: Authenticity of the certificate can be verified by any third part on the block chain with the help of Transaction hash. Now there is serious problem with above approach as I mentioned in Step 2, writing anything on block chain is extremely expensive, so if we trying to upload the whole certificate on blockchain, then cost of issuing certificate will go up significantly. But don’t worry, we have IPFS to rescue us. IPFS is cool decentralized technology for storing content on peer-to-peer network where content can be retrieved by addressing the hash of the content. You can read more about it here.

I have put together a small project on GitHub to show case the concept in action.

  1. Make a clone of the project and install the dependency “npm install”

  2. Create wallet on Ethereum to issue the certificate, We recently released an awesome wallet blockaction.io , you can use it to generate the wallet.


  1. You need some Kovan test ether to run the certificate generation, feel free to join our slack and ask for test ether https://avarch.slack.com/messages/D76QJUUAG/

  2. run “node generate.js” form root folder? Enter private key of issuer wallet==> 0x49043370f575051f4885823e58cd6605f2a0eed5ba751a1ebd351f7af78c6eeeTransaction hash, you need this to verify the certificate on blockchain::::0xd3e3afcc919d13d8e81bd4d1270af4567738ddffe5243a398d132e13423ab8b3 Certicate generated in Certificate folder

  3. you can check generated certificate in “Certificate” folder.


  1. Verify node verify.js ? Enter Transaction hash==> 0xd3e3afcc919d13d8e81bd4d1270af4567738ddffe5243a398d132e13423ab8b3

It will open certificate on Firefox browser.

PS: This article is a repost of an article by Bit Warrior at other website.

For more updates, technical blogs and general discussion on Blockchain Technology and Ethereum, please join us at our Website, Facebook, Medium and follow us at Twitter. Please feel free to share this post, and email us with your suggestions.

Subscribe to EtherWorld.co