{"id":"ERC-2135","name":"Consumable Interface","status":"Final","chain":"both","category":{"id":"gaming","name":"Gaming & Composability","description":"Building complex interactive NFT systems"},"journeyStages":[{"id":"specialized","name":"Specialized Interactions","description":"Physical items, AI, social, gaming"}],"uxImpact":"Users hold NFT tickets/passes that can be 'used' or 'consumed' — once consumed, the token is burned or marked used (like tearing a concert ticket). Design implications: show clear 'consumable' badge on eligible NFTs, design prominent 'Use/Redeem' button, display consumption history and remaining uses, show who can consume (owner vs delegated consumer). Design decisions: whether consumption is reversible (affects undo UI), how to visualize partially consumed multi-use tokens, confirmation flow strength for irreversible consumption, showing consumed tokens in wallet (grayed out vs hidden).","hasDetailedContent":true,"content":{"id":"ERC-2135","sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/erc-2135","type":"official-spec"}],"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25","summary":"Users hold NFT tickets/passes that can be 'used' or 'consumed' — once consumed, the token is burned or marked used (like tearing a concert ticket).","designerTakeaways":["You can badge Consumable on eligible items and lead with a prominent Use pass button.","Your confirm step can state This cannot be undone before wallet signature on single-use items.","You can show Uses remaining: 2 of 3 on multi-use consumables."],"applicability":{"whenToUse":["Event tickets, coupons, or in-game passes are single or limited use.","Consumption is on-chain and irreversible or counted.","Games or venues need redeem UX."],"whenToAvoid":["Permanent collectibles never consumed.","Consumption handled off-chain only.","Reversible use without burn semantics."]},"prototypeFirst":[{"screen":"Consumable pass detail","why":"Holder decides to use at venue or in-game.","covers":["Unused","Multi-use partial","Fully consumed"],"include":["Consumable badge","Use CTA","Uses remaining","Consumed overlay"]},{"screen":"Irreversible use confirm","why":"Single-use needs strong consent.","covers":["Confirm modal"],"include":["Cannot undo copy","Ack checkbox","Confirm use"]},{"screen":"Consumption history","why":"Multi-use and audit need timeline.","covers":["History list"],"include":["Used dates","Remaining count","Consumer address if delegated"]},{"screen":"Fully consumed archive","why":"Used tickets may stay as mementos.","covers":["Grayed consumed"],"include":["Used on [date]","No Use button","Optional hide filter"]}],"mentalModel":[{"label":"Consumable","description":"Token exists to be used, not traded indefinitely."},{"label":"Use action","description":"On-chain consume — may burn or decrement counter."},{"label":"Single vs multi-use","description":"One shot or N remaining — UI must show count."},{"label":"Consumer permission","description":"Owner or delegated address may trigger use."},{"label":"Irreversibility","description":"Most consumption cannot undo — confirm accordingly."}],"statesToDesign":[{"state":"Ready to use","trigger":"Unused consumable.","userNeed":"Clear primary action.","designResponse":"Prominent Use pass CTA."},{"state":"Confirm consumption","trigger":"User tapped Use.","userNeed":"Understand permanence.","designResponse":"Modal with irreversible warning."},{"state":"Partially used","trigger":"Multi-use with remaining.","userNeed":"Track count.","designResponse":"Uses remaining chip."},{"state":"Fully consumed","trigger":"No uses left.","userNeed":"See memento not active pass.","designResponse":"Used badge; disable Use."},{"state":"Wrong consumer","trigger":"Non-authorized address tries use.","userNeed":"Plain block.","designResponse":"Only the pass holder can use this."}],"designDecisions":[{"question":"Reversible consumption UI?","recommendation":"Never imply undo unless contract supports it.","rationale":"False undo hope causes disputes at venue."},{"question":"Show consumed in wallet?","recommendation":"Gray archive tab, not hidden delete.","rationale":"Proof of attendance matters."},{"question":"Confirm strength for multi-use?","recommendation":"Lighter confirm when uses remain; full warning on last use.","rationale":"Friction scales with finality."}],"problemsSolved":[{"problem":"Fake reuse of spent tickets","oldWay":"Screenshot of QR reused","newWay":"On-chain consume marks spent","impact":"critical"},{"problem":"Users unsure if pass still valid","oldWay":"Ambiguous metadata","newWay":"Consumable badge and remaining uses","impact":"high"},{"problem":"Accidental tap burns pass","oldWay":"One tap consume","newWay":"Confirm modal with ack","impact":"high"}],"uxPatterns":[{"name":"Use Pass Flow","description":"Consumable redeem with irreversible confirm.","mockup":"eip-7702/session-permissions","components":["UseButton","ConfirmModal","ConsumedBadge"],"userFlow":["Open pass","Tap Use","Confirm","Marked consumed"]},{"name":"Uses Remaining Counter","description":"Multi-use consumable countdown.","mockup":"concept/nft-gallery","components":["UsesCounter","HistoryList"],"userFlow":["View pass","See 2 of 3","Use once","Counter updates"]}],"seenInTheWild":[{"app":"POAP","url":"https://poap.xyz/","note":"Redeem and claim patterns for event tokens."},{"app":"Unlock Protocol","url":"https://unlock-protocol.com/","note":"Membership key redemption UX."},{"app":"Immutable","url":"https://www.immutable.com/","note":"In-game consumable item patterns."}],"antiPatterns":[{"pattern":"Use button with no confirm on single-use","why":"Accidental burn at venue","instead":"Ack modal before signature","severity":"critical"},{"pattern":"Hiding remaining uses on multi-use","why":"Surprise when last use gone","instead":"Uses remaining on card and detail","severity":"high"},{"pattern":"Identical UI for consumed and active","why":"Gate staff confusion","instead":"Used overlay and disabled Use","severity":"high"}],"vocabulary":[{"use":"Use pass","avoid":"Call consume()","why":"Venue-friendly action."},{"use":"Uses remaining","avoid":"Consumption counter","why":"Plain counting language."},{"use":"Used — cannot reuse","avoid":"Token burned","why":"Outcome not EVM term."}],"onMonad":[{"aspect":"Redeem speed","ethereum":"Venue line waits for confirm","monad":"Sub-second consume confirmation at gate","designImplication":"Inline success at scan without long modal."},{"aspect":"Multi-use games","ethereum":"Per-use gas adds up","monad":"Cheap consume enables frequent in-game use","designImplication":"Lighter confirm for non-final uses on Monad."}],"technicalNotes":"ERC-2135 consumption is often irreversible; match confirm strength to single vs last use.","relatedStandards":[{"id":"ERC-4400","relationship":"Consumer role extension for consumables"},{"id":"ERC-721","relationship":"Consumable NFT interface"}]},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/erc-2135","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=ERC-2135","type":"discussion"},{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/erc-2135","type":"official-spec"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-2135","markdown":"https://www.eipsfordesigners.com/standards/ERC-2135/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-2135/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-2135","official":"https://eips.ethereum.org/EIPS/erc-2135","discussion":"https://ethereum-magicians.org/search?q=ERC-2135"},"freshness":{"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25"}}