
FullOnCrypto
Solution for pro-crypto believer to live practically without fiat currency. Live life without fiat.
Demo
About
# Problem Statement : Currently in countries like India, the cryptocurrency adoption is very low. You cannot but any products/services with crypto, so we are stuck with centralised fiat, But that's going to change now. [Note: P2P crypto to fiat exchanges in India is a mess - it took me an hour last time to get the crypto for the hackathon staking.] # Solution FullOnCrypto solves this problem by delegating the fiat INR payment to others(resolvers) and settle them in DAI(crypto) + fee in eth(crypto).
How it's made
## BASE MAINET CONTRACT: PaymentEscrow contract: 0x7e7E2bBB58C1F7C710005797C48705747877C647 ## BASE TESTNET CONTRACT: PaymentEscrow contract: 0x0C446A3e9c245E255D7d9cE994cd5321BA4E52A4 # 1-Inch APIs used: 1. Balances API - To fetch he current users token balances to be displayed in the profile page. 2. Token API - To fetch the token metadata to display the logo of the token. Used both common tokens API and specific token API for DAI. 3. Spot Price API - To fetch the INR price of the token. 4. Gas price API - To show the current GAS proce of the BASE chain to the users and resolvers. ## 🏗️ Architecture This monorepo contains three main applications: ### 📱 Frontend (`fulloncrypto-web/`) - **Tech Stack**: React, TypeScript, ethers.js - **Purpose**: User interface for creating and managing crypto payment requests - **Features**: - QR code scanning for UPI payments - MetaMask wallet integration - Payment request management - Real-time crypto balances - Gas price monitoring - resolver features for commiting and settlement of UPI payment ### 🔗 Backend API (`fulloncrypto-nodejs/`) - **Tech Stack**: Node.js, Express, MongoDB - **Purpose**: Backend API for user management and payment data - **Features**: - User authentication (traditional & wallet-based) - Payment request storage and indexing - UPI ID mapping for smart contracts, storing paymentCriticalData off-chain in MongoDB - CORS-enabled API endpoints ### 📜 Smart Contracts (`fulloncrypto-contract/`) - **Tech Stack**: Solidity, Hardhat, OpenZeppelin - **Purpose**: Escrow contracts on Base blockchain - **Features**: - Payment escrow with DAI deposits - Commitment-based payment flow - Automatic crypto release upon UPI confirmation - Gas-optimized for Base network # Blockers faced during hackathon: 1. [HIGH] [Mocked] - Verifying the the UPI transactionId status on-chain using oracle. But i need to have a PaymentGateway lisence to get access to the transactionStatus API, So it is mocked with a regex for now. 2. [HIGH] [Fixed] - Generating a UPI QR code on behalf of a merchant, here when creating a payment request you want the upi QR to have the destination UPI-address of the merchant. Currently no paymentGateway provides this functionality but i solved it using barebones mobile upi deep-link. eg: upi://pay?pa=<UPI_ID>&pn=<NAME>&am=<AMOUNT>&cu=INR&tn=<NOTE> 3. [HIGH] [Fixed] - Merchant UPI address is a payment-critical-data and cannot be stored in public blockchain, so i used mongoDB off-chain storage. 4. [HIGH] [FIXED] - Double payment by resolvers was a concern, so i introduced a 5-min commitment window. First a resolver should commit to a payment on blockchain by paying gas and the settke it in 5-mins. Note: For building this project, I've used assistance of AI to fine-tune the code and the UI styles and documentation