{"id":"ERC-5006","name":"Rental NFT for ERC-1155","status":"Final","chain":"both","category":{"id":"nft","name":"NFT Capabilities","description":"What NFTs can do beyond basic ownership"},"journeyStages":[{"id":"approving","name":"Approving & Permissioning","description":"Granting permissions for actions"},{"id":"management","name":"Asset Management","description":"Managing assets over time"}],"uxImpact":"Rental system for ERC-1155 tokens with quantity-based user records and expiration. Design implications: show 'usable balance' vs 'frozen balance' separately, display rental records with amount/expiry per record, enable partial quantity rentals, design rental management dashboards showing multiple active rentals. Design decisions: how to visualize frozen vs usable tokens in inventory, complexity of supporting multiple concurrent rental records, whether to auto-consolidate expired records.","hasDetailedContent":true,"content":{"id":"ERC-5006","summary":"ERC-5006 enables renting ERC-1155 multi-tokens with quantity tracking. Rent 10 of your 100 gaming items to another player - they get usage rights, you keep ownership, and rentals auto-expire. Perfect for game item lending and partial asset rentals.","applicability":{"whenToUse":["Your product must handle: can't rent partial amounts of multi-token holdings.","Your product addresses: no standard rental interface for ERC-1155.","The flow should deliver: rent exactly 10 swords while keeping 90 for yourself.","You are designing a partial rental listing experience with visible states and recovery paths."],"whenToAvoid":["Show: \"Owned: 100 | Available: 85 | Rented Out: 15\".","Disable/limit quantity selector to available amount.","Warn \"Rental expires in 2 hours\" with option to extend.","Assets are fungible tokens only with no unique-item semantics."]},"designerTakeaways":["You can design UI that delivers rent exactly 10 swords while keeping 90 for yourself.","You can standard setUser/userOf interface works across all games.","You can design UI that delivers built-in expiration."],"problemsSolved":[{"problem":"Can't rent partial amounts of multi-token holdings","oldWay":"Own 100 swords but can only rent all or nothing","newWay":"Rent exactly 10 swords while keeping 90 for yourself","impact":"critical"},{"problem":"No standard rental interface for ERC-1155","oldWay":"Each game invents custom lending, inconsistent UX","newWay":"Standard setUser/userOf interface works across all games","impact":"high"},{"problem":"Rentals don't auto-expire","oldWay":"Manual reclaim process, renter might not return items","newWay":"Built-in expiration, items automatically return on expiry","impact":"high"},{"problem":"Can't track who has usage rights vs ownership","oldWay":"Transfer token to lend it, risky and permanent","newWay":"Owner and user are separate roles with clear tracking","impact":"medium"},{"problem":"Guild item sharing is complex","oldWay":"Trust someone with your items or don't share at all","newWay":"Grant time-limited usage rights without losing ownership","impact":"medium"}],"uxPatterns":[{"name":"Partial Rental Listing","description":"List some of your items for rent while keeping others","mockup":"generic/list-selector","userFlow":["User views their multi-token inventory","Selects quantity to rent (not all)","Sets duration and price","Creates listing","Items available but user still owns all 100"]},{"name":"Guild Item Lending","description":"Share items with guild members temporarily","mockup":"generic/vault-deposit","userFlow":["Guild leader views armory","Selects items and quantities to lend","Chooses duration (free for guild)","Confirms lending","Member can use items until expiry"]},{"name":"Active Rentals Dashboard","description":"Track items you're renting and items rented out","mockup":"generic/balance-display","userFlow":["User views rental dashboard","Sees items they're renting out + earnings","Sees items they're renting + costs","Can extend rentals before expiry","Expired rentals auto-return"]},{"name":"Rental Marketplace","description":"Browse and rent items from other players","mockup":"generic/list-selector","userFlow":["User browses rental marketplace","Sees available quantities and prices","Selects desired quantity","Confirms rental duration","Gets usage rights, items appear in inventory"]}],"uiComponents":[{"name":"PartialQuantitySelector","description":"Select quantity from available balance","states":["selecting","max-reached","min-reached"],"props":["available","selected","min","max","onChange"]},{"name":"RentalExpiryTimer","description":"Countdown to rental expiration","states":["plenty-time","expiring-soon","expired"],"props":["expiresAt","onExpiringSoon","showExtend"]},{"name":"OwnerUserDisplay","description":"Show owner vs current user of items","states":["owner-using","rented-out","renting-in"],"props":["owner","user","quantity","expiresAt"]},{"name":"RentalListingForm","description":"Create rental listing for multi-tokens","states":["editing","previewing","listing","active"],"props":["tokenId","maxQuantity","pricePerDay","minDuration"]},{"name":"InventoryWithRentals","description":"Inventory showing owned vs rented vs rented-out","states":["all","owned","renting","rented-out"],"props":["items[]","filter","onItemClick"]}],"antiPatterns":[{"pattern":"Not showing quantity breakdown clearly","why":"User doesn't know how many they own vs have rented out","instead":"Show: \"Owned: 100 | Available: 85 | Rented Out: 15\"","severity":"critical"},{"pattern":"No expiration warning before rental ends","why":"User loses access suddenly, bad for gameplay","instead":"Warn \"Rental expires in 2 hours\" with option to extend","severity":"high"},{"pattern":"Hiding who the current user is","why":"Games need to know who can USE items, not just who owns","instead":"Clearly show: \"Owner: alice | User: bob (until Feb 10)\"","severity":"high"},{"pattern":"Allowing negative available balance","why":"Can't rent more than you own minus already rented","instead":"Disable/limit quantity selector to available amount","severity":"critical"},{"pattern":"No rental history","why":"Users want to see their lending/borrowing track record","instead":"Show rental history with earnings and costs","severity":"medium"},{"pattern":"Complex rental extension flow","why":"Users should easily extend before expiry","instead":"One-click \"Extend 7 more days\" button","severity":"medium"}],"onMonad":[{"aspect":"Rental Transactions","ethereum":"Each rental is a transaction, costs add up","monad":"Low gas makes frequent short-term rentals viable","designImplication":"Can offer hourly rentals economically"},{"aspect":"Expiration Check","ethereum":"Block timestamps for expiry, 12-second granularity","monad":"Sub-second blocks allow precise rental durations","designImplication":"Can show \"expires in X minutes\" accurately"},{"aspect":"Real-time Inventory","ethereum":"Querying rental state can be slow","monad":"Fast queries enable real-time inventory updates","designImplication":"Inventory updates instantly as rentals change"},{"aspect":"Gaming Integration","ethereum":"Rental UX often separate from game","monad":"Fast finality enables in-game rental flows","designImplication":"Integrate rental directly into gameplay"}],"keyTakeaways":["ERC-5006 = ERC-1155 rental with quantities","Owner keeps ownership, user gets time-limited usage","Show available vs rented-out quantities clearly","Rentals auto-expire, no manual reclaim needed","Warn users before rental expiration"],"technicalNotes":"ERC-5006 extends ERC-1155 with setUser(tokenId, user, amount, expiry) and usableBalanceOf(user, tokenId). The owner retains balanceOf, while usableBalanceOf tracks who can actually use tokens. After expiry block, usableBalanceOf returns to owner automatically. Useful for gaming items, utility tokens, and time-limited access."},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-5006","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=ERC-5006","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-5006","markdown":"https://www.eipsfordesigners.com/standards/ERC-5006/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-5006/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-5006","official":"https://eips.ethereum.org/EIPS/eip-5006","discussion":"https://ethereum-magicians.org/search?q=ERC-5006"},"freshness":{"lastReviewed":"2026-04-05","lastUpdated":"2026-04-05"}}