{"id":"EIP-7634","name":"Limited Transfer Count NFT","status":"Draft","chain":"both","category":{"id":"nft","name":"NFT Capabilities","description":"What NFTs can do beyond basic ownership"},"journeyStages":[{"id":"management","name":"Asset Management","description":"Managing assets over time"}],"uxImpact":"NFTs have maximum transfer count — after N transfers, token becomes non-transferable or burns. Design implications: show 'Transfers Remaining: 3/5' counter prominently, warn before final transfer, indicate transfer-exhausted tokens, display transfer history count. Design decisions: whether to show transfer limit upfront during purchase, how alarming the 'last transfer' warning should be, treatment of exhausted tokens (greyed vs hidden vs special badge).","hasDetailedContent":true,"content":{"id":"EIP-7634","sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-7634","type":"official-spec"}],"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25","summary":"NFTs have maximum transfer count — after N transfers, token becomes non-transferable or burns.","designerTakeaways":["You can show Transfers remaining: 2 of 5 on listing and detail before purchase.","Your send confirmation can warn This is the last transfer when one remains.","You can badge Transfer exhausted on tokens that can never move again."],"applicability":{"whenToUse":["Collectibles intentionally scarce in secondary circulation.","Artist policy limits flips.","Draft EIP deployed with transfer cap."],"whenToAvoid":["Standard freely tradable NFTs.","Cap not enforced on-chain.","Users expect infinite liquidity."]},"prototypeFirst":[{"screen":"Listing with transfer counter","why":"Secondary buyers price scarcity of remaining transfers.","covers":["5 of 5","1 remaining","Exhausted"],"include":["Counter chip","Tooltip explaining cap","Price context"]},{"screen":"Last transfer warning","why":"Final move needs explicit consent.","covers":["Last transfer confirm"],"include":["Scary warning modal","After this cannot transfer","Confirm checkbox"]},{"screen":"Exhausted token view","why":"Permanent hold state needs distinct treatment.","covers":["Transfer exhausted"],"include":["Exhausted badge","Transfer history count","No Send button"]},{"screen":"Primary mint disclosure","why":"First buyers accept transfer policy.","covers":["Policy at mint"],"include":["Max transfers stated","Acknowledge checkbox"]}],"mentalModel":[{"label":"Transfer budget","description":"Finite number of allowed moves — like lives in a game."},{"label":"Decrement on transfer","description":"Each successful send reduces remaining count."},{"label":"Exhausted state","description":"Zero remaining — token locked or burned per rules."},{"label":"Primary vs secondary","description":"Mint may start count at max; secondary sees what's left."},{"label":"Burn on exhaust","description":"Some implementations destroy token — must disclose upfront."}],"statesToDesign":[{"state":"Full transfer budget","trigger":"New mint, all transfers available.","userNeed":"Know policy exists.","designResponse":"Up to N transfers badge on detail."},{"state":"Low remaining","trigger":"1-2 transfers left.","userNeed":"Factor into sell/buy decision.","designResponse":"Amber counter on card and listing."},{"state":"Last transfer confirmation","trigger":"User sends with 1 left.","userNeed":"Explicit consent.","designResponse":"Modal with irreversible warning."},{"state":"Transfer exhausted","trigger":"Zero remaining.","userNeed":"Know permanent hold.","designResponse":"Exhausted badge; Send hidden."},{"state":"Burned on exhaust","trigger":"Token burned after final transfer.","userNeed":"Extreme warning before last send.","designResponse":"This transfer will destroy token copy."}],"designDecisions":[{"question":"How alarming is last transfer?","recommendation":"Require checkbox acknowledgment in modal.","rationale":"Accidental final transfer is irreversible regret."},{"question":"Show counter on thumbnail?","recommendation":"Yes when ≤2 remain; always on detail.","rationale":"Scarcity affects price — surface early."},{"question":"Exhausted visual treatment?","recommendation":"Distinct badge, not hidden — collectors may still display.","rationale":"Proof of permanent collection piece."}],"problemsSolved":[{"problem":"Unlimited flipping undermines artist intent","oldWay":"No transfer limits","newWay":"On-chain cap enforces scarcity of movement","impact":"medium"},{"problem":"Buyers unaware of remaining liquidity","oldWay":"Discover cannot resell after buy","newWay":"Transfers remaining on listing","impact":"high"},{"problem":"Accidental final transfer","oldWay":"Send then token locks unexpectedly","newWay":"Last transfer warning modal","impact":"high"}],"uxPatterns":[{"name":"Transfer Budget Counter","description":"Remaining transfers on card and detail.","mockup":"concept/nft-gallery","components":["TransferCounter","WarningChip","PolicyTooltip"],"userFlow":["View NFT","See 2 of 5","Decide to buy","Counter updates on transfer"]},{"name":"Last Transfer Gate","description":"Confirmation when one transfer remains.","mockup":"concept/verify-safety","components":["LastTransferModal","AckCheckbox","ConfirmSend"],"userFlow":["User sends","One left detected","Modal warns","User acknowledges","Transfer proceeds"]}],"seenInTheWild":[{"app":"Art Blocks","url":"https://www.artblocks.io/","note":"Artist policy on secondary markets informs transfer limit UX."},{"app":"Foundation","url":"https://foundation.app/","note":"Creator royalties and transfer policy display patterns."},{"app":"Zora","url":"https://zora.co/","note":"Creator-centric metadata for collection rules."}],"antiPatterns":[{"pattern":"Hiding transfer cap until send fails","why":"Surprise lock destroys trust","instead":"Counter visible at purchase and send","severity":"critical"},{"pattern":"Last transfer without extra confirm","why":"Irreversible user error","instead":"Acknowledgment modal for final transfer","severity":"critical"},{"pattern":"Same UI for exhausted and soulbound","why":"Different implications confused","instead":"Transfer exhausted vs Non-transferable labels","severity":"medium"}],"vocabulary":[{"use":"2 transfers left","avoid":"Transfer count decrement remaining","why":"Game-life metaphor."},{"use":"Final transfer","avoid":"Last allowed transfer before lock","why":"Short warning label."},{"use":"Cannot move again","avoid":"Transfer budget exhausted","why":"Plain permanence language."}],"onMonad":[{"aspect":"Transfer counting","ethereum":"Counter update waits for confirmations","monad":"Instant counter refresh after send","designImplication":"Update UI immediately post-transfer on Monad."},{"aspect":"Scarce transfer drops","ethereum":"High gas discourages flips","monad":"Low fees — counter more likely to deplete","designImplication":"Emphasize counter prominently on Monad marketplaces."}],"technicalNotes":"EIP-7634 is draft; treat last transfer as irreversible consent moment.","relatedStandards":[{"id":"ERC-6454","relationship":"Transfer restriction detection"},{"id":"ERC-721","relationship":"NFT with transfer cap extension"}]},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-7634","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=EIP-7634","type":"discussion"},{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-7634","type":"official-spec"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/EIP-7634","markdown":"https://www.eipsfordesigners.com/standards/EIP-7634/content.md","agent":"https://www.eipsfordesigners.com/standards/EIP-7634/agent.md","api":"https://www.eipsfordesigners.com/api/standards/EIP-7634","official":"https://eips.ethereum.org/EIPS/eip-7634","discussion":"https://ethereum-magicians.org/search?q=EIP-7634"},"freshness":{"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25"}}