A technical demonstration on Ingenium platform's NFT Certification minting application, using Ethereum's ERC721 based Solidity smart contract.
Submission for the hackUST2023 hackathon powered by OKX.
The current demonstration focuses on the application where companies and event organizers could mint ERC721 based certifications and send it to respective individuals.
Using this application, you can create basic ERC721 based certifications with the given details:
- Program title (xxx Internship Program, xxx Hackathon 2023, etc.)
- Program organizer (Organizing company name)
- Start date
- End date
- Name (Name of the person in subject)
- Role (Role of the person in subject)
The minted ERC721 certificates can then be sent to different blockchain wallet addresses. Do note that each token is only able to be transferred once!
An account should be created on Infura, an API solution platform providing access to Ethereum and IPFS1 networks.
After project creation, enter the projectId and projectSecret details in a .txt file, then place it on the directory: "./scripts/certificate_processing/infura_project_details.txt".
Follow the instructions on this documentation. Brownie a popular Python-based development framework for Ethereum smart contracts.
Follow the instructions on this documentation. Ganache CLI (Command Line Interface) is a command-line tool that provides a local blockchain environment for Ethereum development and testing purposes.
If you don't have node.js installed on your system. Install it first.
For the sake of simplicity, here are the list of commands:
pip install eth-browniegit clone https://github.com/yijisuk/Ingenium-tech-demo.gitbrownie compileganache-cli --accounts 10 --defaultBalanceEther 1000create a local blockchain environment which hosts 10 accounts, individually funded with 1000ETH.brownie run scripts/main.pyto run the application Python script
The executable functions of the progam are:
- Deploy smart contract (make sure to run this function first before choosing other options)
- Mint a NFT Certificate
- Transfer a NFT Certificate to another addresses
- Retrieve the data stored on a NFT Certificate from IPFS
With the input user data, the application deploys an ERC721-based certification and uploads it to IPFS.
The minted certificates will be provided as a list; from this list, the user could select a certificate then transfer it to other public wallet addresses.
Select a NFT certificate, then the application retrieves the information stored in .json format from IPFS and prints it out.
The current demonstration focuses on the certificate issuer's perspective, where they mint NFT certifications and transfer to respective individuals. There are much more to work on this project:
- Develop an application to generate certificate NFTs on a local blockchain testnet
- Deploy the contract on a Ethereum testnet for performance evaluation.
- Integrate with a blockchain wallet, add a login utility where different certificates are displayed for different logged-in users.
- Allow users to view other users' certificates through searching their public wallet address.
Footnotes
-
IPFS, or InterPlanetary File System, is a decentralized and distributed file-sharing system designed to make the web faster, safer, and more open. In simple terms, it's like a combination of the World Wide Web and BitTorrent. ↩
