# Cartridge Lending Protocol > Explaining the flow and required contracts for lending cartridges. **Published by:** [hangingInThere](https://paragraph.com/@token0verlord/) **Published on:** 2025-07-09 **URL:** https://paragraph.com/@token0verlord/clp ## Content REQUIRED FACTORIES1. EscrowFactory.solDeploys individual escrow contracts per borrowing event.Keeps registry of all deployed escrows2. SBTFactory.solDeploys SBT contracts for each game3. BurnSBT.solSeparate logic handler for burning SBTs + triggering XP/badgeOr this could just be a function in the SBT contract itselfEmits event like: BurnedSBT(address user, uint256 gameId, uint256 xp)LENDER SIDE — “Supply the Cartridge”Goal:Earn ETH by lending out owned game NFTsSteps:Connect wallet (check for owned game NFTs)List a game via LendingEscrow:Choose game NFT (contract + tokenId)Set price to borrow (e.g. 0.01 ETH)Set duration (e.g. 3 days)Game NFT is transferred into escrowGame appears as “available to borrow” on the frontendWhen borrowed:Receives ETH from borrowerActivity is shown on lender’s profileWhen returned:Game NFT is sent back to lenderBORROWER SIDE — “Rent a Cartridge”Goal:Borrow a game, play it, and earn XPSteps:Connect walletBrowse available gamesClick “Borrow for 0.01 ETH”Pays price → Escrow contractReceives a Soulbound NFT (SBT):Contains game ID, timestamp, expiration(what will this NFT look like?)Game is now "checked out"When done:Clicks “Return Game” or lets it expireSBT is burnedXP gained. ## Publication Information - [hangingInThere](https://paragraph.com/@token0verlord/): Publication homepage - [All Posts](https://paragraph.com/@token0verlord/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@token0verlord): Subscribe to updates