project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

FullOnCrypto

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

FullOnCrypto

Created At

Unite Defi

Project Description

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

background image mobile

Join the mailing list

Get the latest news and updates