← Back to home

FullOnCrypto

Solution for pro-crypto believer to live practically without fiat currency. Live life without fiat.

Problem Statement

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.]SolutionFullOnCrypto solves this problem by delegating the fiat INR payment to others(resolvers) and settle them in DAI(crypto) + fee in eth(crypto).

Solution

BASE MAINET CONTRACT:PaymentEscrow contract: 0x7e7E2bBB58C1F7C710005797C48705747877C647BASE TESTNET CONTRACT:PaymentEscrow contract: 0x0C446A3e9c245E255D7d9cE994cd5321BA4E52A41-Inch APIs used:Balances API - To fetch he current users token balances to be displayed in the profile page.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.Spot Price API - To fetch the INR price of the token.Gas price API - To show the current GAS proce of the BASE chain to the users and resolvers.🏗️ ArchitectureThis monorepo contains three main applications:📱 Frontend (fulloncrypto-web/)Tech Stack: React, TypeScript, ethers.jsPurpose: User interface for creating and managing crypto payment requestsFeatures:QR code scanning for UPI paymentsMetaMask wallet integrationPayment request managementReal-time crypto balancesGas price monitoringresolver features for commiting and settlement of UPI payment🔗 Backend API (fulloncrypto-nodejs/)Tech Stack: Node.js, Express, MongoDBPurpose: Backend API for user management and payment dataFeatures:User authentication (traditional & wallet-based)Payment request storage and indexingUPI ID mapping for smart contracts, storing paymentCriticalData off-chain in MongoDBCORS-enabled API endpoints📜 Smart Contracts (fulloncrypto-contract/)Tech Stack: Solidity, Hardhat, OpenZeppelinPurpose: Escrow contracts on Base blockchainFeatures:Payment escrow with DAI depositsCommitment-based payment flowAutomatic crypto release upon UPI confirmationGas-optimized for Base networkBlockers faced during hackathon:[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.[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>[HIGH] [Fixed] - Merchant UPI address is a payment-critical-data and cannot be stored in public blockchain, so i used mongoDB off-chain storage.[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

Hackathon

ETHGlobal Unite

2025

Prizes

  • 🏆

    Build a full Application using 1inch APIs3rd place

    1inch

Contributors