Skip to content

NFC-based blockchain payment system for college cafeterias using Solidity on Polygon and React Native. Supports tap-to-pay, wallet management, and optimized gas-efficient transactions.

Notifications You must be signed in to change notification settings

ayushkumarTomar/NeoPay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NeoPay: NFC Tap-to-Pay Blockchain Payment System for College Campuses

Project Status Blockchain Used Frontend Technology Payment Type

✨ Overview

NeoPay is an innovative, decentralized payment system designed specifically for college campuses, leveraging the power of blockchain and NFC technology. It offers a secure, instant, and offline alternative to traditional payment methods like UPI, addressing critical reliability and efficiency gaps.

By integrating a UTXO-based model with student ID cards (NFC), NeoPay empowers users with full control over their funds through their Web3 wallets, enabling seamless tap-to-pay experiences without relying on internet connectivity.

🔗 Overview

Built for: College campuses

Tech stack: Polygon, React Native, Web3.js, NFC

Inspired by: UPI, but made more reliable for campus-scale microtransactions

🌟 Key Features

  • Decentralized Fund Control: Users retain complete ownership and control of their funds directly in their Web3 wallets, embodying the true spirit of decentralization.
  • UTXO-Based Efficiency: Utilizes a Unspent Transaction Output (UTXO) model stored directly on NFC-enabled student ID cards, ensuring gas-efficient and streamlined transactions.
  • Offline Transaction Capability: Enables instant and fail-proof payments even without internet access, solving a critical reliability challenge faced by conventional online payment systems.
  • Instant & Secure Payments: Experience near-instant transaction finality, enhancing the speed and efficiency of cafeteria queues.
  • Designed for Campus Ecosystems: Tailored to the unique needs of college campuses, providing a robust and convenient payment solution for students and merchants.
  • Dedicated User & Merchant Interfaces:
    • User Application (React Native): Allows students to view their card balance and transaction history.
    • Merchant Application (React Native): Provides cafeteria merchants with a clear overview of incoming transactions.

🧱 System Architecture

NeoPay Architecture

This diagram illustrates the full transaction flow between:

  • Top-Up Machine: Handles token issuance and NFC writing
  • Smart Contract: Manages UTXO lifecycle (issue, verify, burn)
  • Merchant Machine: Accepts payments, validates UTXO, and logs transactions
  • User App: Views balances, manages cards, and secures UTXOs

🚀 Technologies Used

  • Blockchain: Polygon (for its scalability and low transaction fees)
  • Frontend: React Native (for cross-platform mobile applications)
  • NFC Integration: For seamless tap-to-pay functionality
  • Web3.js/Ethers.js: For blockchain interaction (implied for Web3 wallet integration)
  • Solidity: For smart contract development (implied for UTXO logic)

🔒 Security

  • All UTXOs are signed by the merchant and stored both locally and on-chain and verified on each transaction
  • Smart contract checks prevent double-spending
  • Lost cards can be revoked via app to avoid misuse

🛝 Flow

Top Up Flow

sequenceDiagram
    participant User
    participant NFC
    participant TopUpMachine
    participant Polygon

    User->>Polygon: Buy tokens (approve & pay via smart contract)
    Polygon-->>User: Tokens transferred
    User->>TopUpMachine: Tap NFC card
    TopUpMachine->>Polygon: issueUtxo(newUTXO)
    Polygon-->>TopUpMachine: TX receipt
    TopUpMachine->>NFC: Write UTXO to card
Loading

Payment Flow

sequenceDiagram
    participant User
    participant Merchant
    participant NFC
    participant Redis
    participant Polygon

    Merchant->>Merchant: Initiate ₹100 payment
    User->>NFC: Tap NFC card
    Merchant->>NFC: Read UTXO from card
    Merchant->>Redis: Check if UTXO is already spent
    alt UTXO valid
        Merchant->>Polygon: burnUtxo(utxoId)
        Polygon-->>Merchant: Burn confirmation
        Polygon->>Polygon: Emit TransactionEvent
        Merchant->>User: Payment successful
    else UTXO invalid or spent
        Merchant->>User: Payment rejected
    end


Loading

Screenshots

Merchant

Merchant Video Tapped
Txn Success Merchant Home

Users

User Connect User Wallet
User Home User Approve

Setup

  • Deploy JIIT Token
  • Use CA of token in deploying the UTXO Contract
  • Setup the merchant app npm install
  • Enter config details in the config.ts
  • Similar setup for user app

About

NFC-based blockchain payment system for college cafeterias using Solidity on Polygon and React Native. Supports tap-to-pay, wallet management, and optimized gas-efficient transactions.

Topics

Resources

Stars

Watchers

Forks