Deploys individual escrow contracts per borrowing event.
Keeps registry of all deployed escrows
Deploys SBT contracts for each game
Separate logic handler for burning SBTs + triggering XP/badge
Or this could just be a function in the SBT contract itself
Emits event like:
BurnedSBT(address user, uint256 gameId, uint256 xp)
Earn ETH by lending out owned game NFTs
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 escrow
Game appears as “available to borrow” on the frontend
When borrowed:
Receives ETH from borrower
Activity is shown on lender’s profile
When returned:
Game NFT is sent back to lender
Borrow a game, play it, and earn XP
Connect wallet
Browse available games
Click “Borrow for 0.01 ETH”
Pays price → Escrow contract
Receives 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 expire
SBT is burned
XP gained.

