NovaDapp
Cross Chain Lending and Borrowing
Created on 27th June 2025
โข
NovaDapp
Cross Chain Lending and Borrowing
The problem NovaDapp solves
๐ Cross-Chain Bridge (Avalanche Fuji โ Sepolia)
A powerful, CCIP-based bridge to wrap and move assets across Avalanche Fuji and Ethereum Sepolia testnets.
๐ Supported Bridge Flow
1. Avalanche Fuji โ Sepolia
- ๐ Send Native AVAX from Fuji.
- ๐ฏ Receive WAVAX (Wrapped AVAX) on Sepolia.
- ๐ Conversion ratio:
1:1(testnet parity). - ๐งฑ WAVAX can now be used for testing or DeFi interactions on Sepolia.
2. Sepolia โ Avalanche Fuji
- ๐จ Send WAVAX from Sepolia.
- ๐ธ Receive Native AVAX on Fuji.
- ๐ช Smoothly unwraps the token and returns native AVAX.
โ Facilitates using wrapped tokens on Sepolia for testnet experimentation.
๐ฐ Cross-Chain Lending & Borrowing
Cross-chain mUSDC protocol for testing decentralized credit on multi-chain environments.
๐ฑ Lend on Avalanche Fuji
- ๐ช Users can mint mUSDC on Fuji.
- ๐ฅ Deposit into the lending protocol as collateral.
๐ธ Borrow on Sepolia
- ๐งพ Borrow mUSDC on Sepolia.
- ๐ Borrowing power depends on user's supplied amount on Fuji.
โ๏ธ Borrowing Limit
- ๐ข Borrow up to 70% of the supplied mUSDC (for testing).
๐ ๏ธ Powered by Chainlink CCIP for seamless and secure cross-chain communication.
Challenges I ran into
๐งฉ Challenges I Ran Into
While building the cross-chain lending and borrowing system, I encountered a few notable hurdles:
1. ๐งฎ Interest Rate Logic Misalignment
Initially, I implemented an interest accrual system based on a fixed APY (Annual Percentage Yield). The idea was to simulate real-world borrowing costs, but due to precision mismatches, rounding errors, and inconsistencies across chains, the calculations led to bugs and unpredictable behavior. After multiple attempts at adjusting the math and managing time deltas properly, I decided to remove the interest logic entirely โ at least for this testnet version.
๐ง Resolution: Reverted to a static 1:1 lending/borrowing ratio with a fixed borrow limit (70% LTV), ensuring consistency and simplicity for testing.
2. ๐ฑ Real-Time Price Feed Complexity
I intended to fetch the real-world price of USDC (e.g., via Chainlink oracles) to calculate more accurate collateral values. However, integrating price feeds across chains introduced latency and sync issues. Additionally, when testing on Sepolia and Fuji, price feed contracts were either unavailable or unreliable for test tokens like mUSDC.
3. ๐ Cross-Chain Message Ordering
One subtle issue I faced was the timing between user actions (like withdrawals) and their corresponding CCIP messages. For example, users could withdraw tokens before their cross-chain message was confirmed, creating sync issues between chains.
๐ค Lessons Learned
- Sometimes, simplicity is more robust โ especially in multi-chain environments.
- Cross-chain development introduces synchronization and finality delays you donโt face in single-chain systems.
- Testnet limitations (like missing price feeds or liquidity) require pragmatic workarounds that still simulate real-world logic.
These challenges helped shape a more stable, testable system โ and gave me better insight into designing for eventual mainnet deployment.
Tracks Applied (2)
Cross-Chain Solutions
Avalanche Track
Avalanche
Technologies used

