{"id":"ERC-5192","name":"Minimal Soulbound NFTs","status":"Final","chain":"both","category":{"id":"identity","name":"Identity & Privacy","description":"Who you are on-chain, and what you choose to reveal"},"journeyStages":[{"id":"approving","name":"Approving & Permissioning","description":"Granting permissions for actions"},{"id":"management","name":"Asset Management","description":"Managing assets over time"}],"uxImpact":"Tokens marked as 'locked' cannot be transferred — minimal soulbound implementation for credentials, memberships, achievements. Design implications: show 'Soulbound' or 'Non-transferable' badge, hide/disable transfer buttons, explain permanence clearly. Design decisions: whether to show soulbound tokens in trading contexts at all — filter out or display with clear 'Not for Sale' status.","hasDetailedContent":true,"content":{"id":"ERC-5192","summary":"ERC-5192 defines \"soulbound\" NFTs — tokens that cannot be transferred once received. They're locked to your address forever. Perfect for credentials (diplomas, certifications), reputation tokens, proof of attendance, and anything that shouldn't be tradeable. The badge shows \"non-transferable\" and the transfer button is disabled.","applicability":{"whenToUse":["Your product addresses: credentials can be sold/transferred.","Your product addresses: no standard way to mark NFTs as non-transferable.","The flow should deliver: soulbound = locked to recipient forever.","You are designing a soulbound badge experience with visible states and recovery paths."],"whenToAvoid":["Check locked(), hide/disable transfer entirely.","Clear 🔒 icon and \"Soulbound\" label.","Explain: \"This is a credential locked to your address\".","The product has no sign-in, attestation, or identity verification step."]},"designerTakeaways":["You can design UI that delivers soulbound = locked to recipient forever.","You can design UI that delivers locked() function = universal check.","You can design UI that delivers check locked(), disable transfer button."],"problemsSolved":[{"problem":"Credentials can be sold/transferred","oldWay":"Degree NFT could be sold to someone who didn't earn it","newWay":"Soulbound = locked to recipient forever","impact":"critical"},{"problem":"No standard way to mark NFTs as non-transferable","oldWay":"Each project invented own locking mechanism","newWay":"locked() function = universal check","impact":"high"},{"problem":"UIs don't know to hide transfer option","oldWay":"User tries to transfer, gets confusing error","newWay":"Check locked(), disable transfer button","impact":"high"}],"uxPatterns":[{"name":"Soulbound Badge","description":"Clear indicator that NFT is non-transferable","mockup":"concept/siwe-sign-in","userFlow":["User views NFT","App checks locked(tokenId)","Shows soulbound indicator","Hides/disables transfer button","Explains why non-transferable"]},{"name":"Credential Gallery","description":"Collection of soulbound achievements","mockup":"concept/siwe-sign-in","userFlow":["User views credentials","All show soulbound lock icon","Click to view details","No transfer option anywhere","Share/prove ownership options"]}],"uiComponents":[{"name":"SoulboundIndicator","description":"Lock icon and label for soulbound tokens","states":["locked","unlocked","checking"],"props":["tokenId","showLabel"]},{"name":"CredentialCard","description":"Display card for non-transferable credentials","states":["verified","unverified","expired"],"props":["metadata","issuer","issuedAt"]},{"name":"TransferBlockedNotice","description":"Explanation when transfer attempted","states":["hidden","shown"],"props":["reason","onDismiss"]}],"antiPatterns":[{"pattern":"Showing transfer button for soulbound NFTs","why":"User clicks, gets error, confused","instead":"Check locked(), hide/disable transfer entirely","severity":"high"},{"pattern":"No visual indicator of soulbound status","why":"User doesn't know it can't be transferred","instead":"Clear 🔒 icon and \"Soulbound\" label","severity":"high"},{"pattern":"Not explaining why it's soulbound","why":"Users think something is broken","instead":"Explain: \"This is a credential locked to your address\"","severity":"medium"}],"onMonad":[{"aspect":"Minting","ethereum":"Soulbound mint takes 12+ seconds","monad":"Instant credential issuance","designImplication":"Real-time badge awarding at events"}],"keyTakeaways":["ERC-5192 = non-transferable \"soulbound\" NFTs","Always check locked() before showing transfer UI","Show clear visual indicator: 🔒 Soulbound","Explain WHY it's non-transferable","Perfect for credentials, attendance, reputation"],"technicalNotes":"ERC-5192 extends ERC-721 with locked(uint256 tokenId) view function returning bool. True = cannot be transferred. Emits Locked(tokenId) and Unlocked(tokenId) events. Wallets/marketplaces check locked() before enabling transfer. Compatible with ERC-5484 for consensual binding."},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-5192","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=ERC-5192","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-5192","markdown":"https://www.eipsfordesigners.com/standards/ERC-5192/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-5192/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-5192","official":"https://eips.ethereum.org/EIPS/eip-5192","discussion":"https://ethereum-magicians.org/search?q=ERC-5192"},"freshness":{"lastReviewed":"2026-04-05","lastUpdated":"2026-04-05"}}