We built an NFT ticketing system that solves for double-spending, coordination problems, and identification. We are launched on multiple chains, use ZK Proofs for safety, and bring on-chain governance to event organization to streamline the process for attendees and organizers.
We created a system for generating NFT tickets. A user makes an event and has to input the 'ticket' supply they would like for their event. They then upload a photo which will be the same for all tickets as we used the ERC1155 NFT standard rather than the ERC721 standard. Events are given a unique ID which is shared by their set of ERC1155 tickets. Event creators also get to decide if they would like to have a 'whitelist' for their event such that only select addresses can mint a ticket (for example, an event with an application process). Otherwise, the tickets will be publicly available for minting. Once a user has minted their ticket, they will be brought to a screen where a randomly generated word is displayed. The user is prompted to remember the word, as it is their password for the event. The random word is hashed with the user's address and this hash is stored on the blockchain. When logged on to our webiste, users will be able to see a 'show ticket' button that will take them to a QR code. The user can then input their password in a field below the QR code and watch the QR code change as they input letters. The QR code is generated from an object composed of their QR code and address. Hence, when a user shows up to an event, they will login to our website (mobile friendly), input their password to generate the correct QR code on the spot, and it will be scanned by the door person. The QR code info will be hashed and checked against the existing match on the blockchain. If the ticket is transferred to someone else before the event they will get their own password that will be hashed with their public key. There is also on-chain governance such that event creators can submit proposals (for example, menu options) on which ticket holders may vote.
NFT metadata is stored on IPFS. All NFTS are accessible on OpenSea and can be traded/resold. Governance proposals all have a mandatory votingDelay such that users have time to sell tickets before a proposal passes. There are two main contracts; one responsible for the NFTs and the other for governance. We have launched on Polygon, Cronos, and Skale (tentatively). WalletConnect was also integrated alongside MetaMask and Coinbase wallet to maximize user experience. Fully written in JS and Solidity, deployed with HardHat.