VeriFT allows you to create NFT tickets from any collection of NFTs, so that you can organise an exclusive event for your fellow holders of bored apes, your followers on Lens, or attendees of the previous events you organised. The options are limitless. When creating an event, you can specify the NFT collection by providing its address, the cost of the ticket, and the number of tickets, which can be minted from the NFTs so that the prospective attendees can bring their friends. To mint their tickets, the attendees can find the event by its name, choose the NFT from which they want to mint their tickets, and provide a photo of their face and the faces of the friends for whom they mint the tickets. These pictures are hashed and stored on the Ethereum blockchain to verify later. The pictures are also sent to IPFS for further storage, with the possibility of providing an encryption service later on. (The automatic storage is provided for users' convenience, in principle they could store it anywhere, or use a qr code that redirects to their social media profile picture or some private storage.) After that, the user is provided with a QR code, which they will have to show at the entrance to the event. During the event, the event organizers will use the mobile app that we provide, which simply reads the QR code that the attendees provide. Once the QR code is read, the picture on IPFS is fetched and hashed, and the result of this hash is compared to the hash already uploaded to the blockchain when the user was minting the ticket. This ensures that they are the only ones who can use the ticket. This way, the only thing a user has to carry for the entirety of the event is a QR code and their faces.

VeriFT showcase

How it's made

The mobile app part of the application has been developed with Flutter and web3dart package. A request is made to IPFS using Pinata, which fetches the image of the ticket owner, which is hashed locally. Another request is made to Infura to fetch the image hash from the Ethereum blockchain. Simple logic is used to compare these hashes and display confirmation. The front end for creating the events and minting tickets is implemented using Next.js / React, with the back end based on smart contracts written in Solidity and the file storage provided by IPFS. We also use WalletConnect for wallet integration.