deliverables
The figure below illustrates the interaction between 1) end users, 2) front-end websites and applications, 3) back-end data storage, and 4) Ethereum blockchain.
By implementing Smart Contracts for identity verification, Ticket Purchasers will be able to connect the Ticket Purchaser-facing Website with their crypto wallet (MetaMask). The Smart Contract will be linked with MetaMask to fetch relevant information from the cryptocurrency wallet of the Ticket Purchasers. Then, Ticket Purchasers may trigger the minting button to mint the NFT Tickets, which indicates a purchase of event tickets.
Ticket Purchasers will be able to connect their cryptocurrency wallet with the Ticket Purchaser-facing Mobile App. Purchased NFT Tickets will be shown in the App upon the establishment of a successful connection. After selecting the NFT Ticket, a QR code will be generated for the purpose of ticket authentication. This QR code automatically refreshes every minute to enhance security and prevent unauthorized sharing. The activation of the Smart Contract will be initiated after the QR code is scanned by the Admin-facing App, resulting in the deactivation of the NFT Ticket that has been utilized.
Event Organizers could use the Event Organizer-facing Website to access and review the NFT Ticket sales data. Data of the NFT Tickets will be fetched from the Ethereum blockchain and shown on the Dashboard. Besides, Event Organizers could use the website to submit details of the events and tickets to be onboarded. The final approval of the submitted details will be made by the Super Admin.
front-end
Before starting on the front-end code development, our own design system will be created in Figma to visualize the layout of the websites and the mobile applications. To reduce design and development time, we plan to utilize the pre-styled CSS framework Bootstrap rather than starting from scratch.
Ticket Purchaser-facing Website & Event Organizer-facing Dashboard
As our project is based heavily on Python, a Python templating engine Jinja2 will be used to integrate with our backend. It allows simplicity in producing dynamic HTML content with JavaScript while optimizing web applications for improved performance.
Ticket Purchaser-facing & Admin-facing Ticket Authentication Application
The two mobile applications will be implemented based on Flutter, a cross-platform framework that allows us to deploy the application on various platforms such as Android and iOS. Flutter can deliver high-quality applications while executing them very fast, this high and efficient performance benefits us in terms of the main usage of the applications, which is to allow generating and scanning of QR code in a short period of time.
back-end
Flask
Flask will be used for developing our Python-based websites and Web Server Gateway Interface (WSGI) will be used to run the websites. As a powerful backend infrastructure and lightweight web micro-framework, it even has great compatibility with Python which allows us to connect to the blockchain ecosystem seamlessly.
database
mongodb
MongoDB is a document database for storing and managing data. Data in MongoDB is in JSON-like format. This feature allows the database to directly map the current programming language with ease and convenience. MongoDB could be used in the Blockchain Ticketing System to store the login information of Event Organizers, as well as the sales data that is not included in the Ethereum blockchain.
ipfs
InterPlanetary File System (IPFS) is a protocol to store and transfer data through peer-to-peer networking in a decentralized way similar to blockchain technology. In the Ethereum blockchain, the block size is limited and not large enough to store all the data of an NFT, IPFS will be used to store the Metadata of the NFT Tickets of the Blockchain Ticketing System. The decentralized feature of IPFS allows the Metadata can be stored in IPFS nodes securely and ensures the Metadata is tamper-proof.
crypto wallet
metamask
To connect Ticket Purchasers’ crypto wallet, MetaMask will be used in both the Ticket Purchaser-facing Ticket Purchase Website and Ticket Authentication Application. MetaMask will be able to connect Ticket Purchasers’ crypto wallet and blockchain to interact such as storing the NFT Tickets minted by the Ticket Purchasers and amending the NFT Tickets used.
Blockchain
The decentralized, traceable, and transparent feature of blockchain will play an essential role in the Blockchain Ticketing System to fulfill the objective of the system. The NFT Tickets sold by the system should be 1) tamper-proof to prevent counterfeit tickets, 2) able to limit the resale price to control the ticket scalping on secondary sales, and 3) traceable on ticket resale history for the ease of data analysis.
Ethereum
Ethereum | Solana | Polygon PoS | Polygon zkEVM | |
---|---|---|---|---|
Start Year | 2015 | 2020 | 2021 | 2023 |
Gas Fee (per transaction) | 26 ETH Gwei (0.86 USD) | 0.0001 SOL (0.000027 USD) | 88.6 MATIC Gwei (0.00097 USD) | 0.6997 MATIC Gwei (0.0000076 USD) |
Scalability (1 = Highest) | 4 | 1 | 3 | 2 |
Transaction Speed | 12.8 TPS | 4739 TPS | 29.4 TPS | 0.2 TPS |
No. of Validators | 945,129 | 3,400 | 100 | Permissionless Sequencer and Aggregator |
Security | High security but potential risk from PoS | A newer platform with security risks & vulnerabilities | Lower security than Ethereum as it is developed on layer 2 | Low security in off-chain transactions but high security in on-chain transactions |
Decentralization (1 = Highest) | 1 | 3 | 4 | 2 |
No. of Unique Address in Blockchain | 245,342,698 | 39,750,000 | 354,695,682 | 441,723 |
Consensus Algorithm | Proof of Stake (PoS) | Proof of History (PoH) | Proof of Stake (PoS) | Proof of Efficiency (PoE) |
Development Language | Solidity | Rust, C, C++ | Solidity | Solidity |
Cryptocurrency | ETH | SOL | MATIC | MATIC |
smart contract
Smart Contracts in the Solidity language will be developed to interact with the Ethereum blockchain to perform the main functions in the Blockchain Ticketing System. Several APIs will be used in the Smart Contracts to interact with the Ethereum blockchain such as Alchemy NFT API to fetch NFT data and MetaMask API to request Ticket Purchasers’ wallet address.