
LeaseLink – Rent Smart, Trustless, and Onchain.
Decentralized Rentals.
Demo
About
The problem it solves In most rental agreements, trust is broken — landlords don’t get paid on time, and tenants don’t get their deposit back. We built **LeaseLink**, a **trustless rental escrow system** powered by smart contracts. Tenants lock rent in ETH, landlords withdraw once the rental period ends. And everything is logged immutably on-chain. --- ## 🧩 The Problem It Solves In traditional real estate rentals, the process of paying rent is slow, opaque, and centralized: - 🧾 **Paper-based or centralized systems** are vulnerable to fraud or tampering. - 🌍 **Cross-border tenants** struggle with fiat payments, currency conversions, and delays. - 🕵️♂️ **Lack of transparency** in rental agreements and payment histories can lead to disputes. - ⌛ **Delayed withdrawals** and lack of automation affect landlords' income flow. --- ## ✅ What This Project Enables **LeaseLink RealEstateX** offers a decentralized solution that simplifies and secures the rental process using blockchain and oracles: - 💵 **USD-based Rent Payments in ETH** Tenants pay rent in ETH, converted in real-time using Chainlink Price Feeds — no need for stablecoins or off-chain calculations. - ⛓️ **Onchain Rental Agreements** Rental terms (tenant, landlord, USD amount, duration) are stored immutably in a smart contract. - 📜 **Rental History & Proof** Every rental is recorded transparently, providing both parties with verifiable, timestamped agreements. - 🪙 **Escrow-like Protection** Rent is locked until the rental duration ends — then released to the landlord, preventing early withdrawal. - 🌐 **Permissionless Access** Anyone with a wallet can rent or lease properties — removing friction from traditional rental models. --- ## 🔒 Bonus: Trustless & Global By leveraging Ethereum + Chainlink, LeaseLink RealEstateX allows users anywhere in the world to: - ✅ Trust the **real-time value of rent** in ETH - ✅ Avoid **third parties**, delays, and fiat dependency - ✅ Easily **verify rental status and transactions on-chain**
How it's made
Challenges we ran into ## 🐛 Challenges I Ran Into (Solo Builder) As a solo developer, I faced challenges across the full stack — from smart contracts to frontend integration. --- ### 🔄 Real-Time USD to ETH Conversion One of the biggest hurdles was handling **real-time rent conversion from USD to ETH** on-chain. Hardcoding prices wasn’t an option, so I integrated **Chainlink Price Feeds** to fetch decentralized ETH/USD data and calculate rent in ETH dynamically. --- ### 🧠 Decoding Rental Data on Frontend I struggled with issues like: - `Invalid Date` being shown in the rental history - ABI decoding failures due to struct mismatches - Handling wallet disconnections gracefully I resolved them by: - Ensuring `startTime` was a proper UNIX timestamp - Adjusting frontend logic to correctly parse contract responses - Adding fallback and loading states using `wagmi` and `viem` --- ### 🔐 Escrow Logic & Edge Cases Building a **secure escrow system** was tricky — especially guarding against early withdrawals or duplicate calls. I implemented flags like `isActive` and `isWithdrawn` in my `Rental` struct, and added proper `require` checks to lock logic until the rental period ended. --- ### 🧪 Testing on Sepolia Sometimes the frontend didn't reflect blockchain state immediately. I added `refetch()` calls after transactions, watched for confirmations, and fixed timestamp formatting using `new Date(Number(startTime) * 1000)`. --- Working solo meant I had to debug every layer — but it gave me full control and deeper learning across Solidity, Chainlink, React, and Ethereum dev tools.