{"id":"EIP-5114","name":"Soulbound Badge","status":"Last Call","chain":"both","category":{"id":"identity","name":"Identity & Privacy","description":"Who you are on-chain, and what you choose to reveal"},"journeyStages":[{"id":"management","name":"Asset Management","description":"Managing assets over time"}],"uxImpact":"Badges bound to other NFTs (not wallets) — achievements tied to your PFP, credentials attached to identity NFT. Design implications: show badge hierarchy (which NFT owns which badges), display nested ownership, indicate badge permanence. Design decisions: how deep to visualize badge chains — could be complex graphs, need to handle loops, balance completeness with comprehension.","hasDetailedContent":true,"content":{"id":"EIP-5114","summary":"EIP-5114 creates soulbound badges that attach to other NFTs rather than directly to wallets. Your achievement badge binds to your avatar NFT, not your address—so your digital identity carries its credentials wherever the NFT goes.","applicability":{"whenToUse":["Your product addresses: credentials tied to wallet, not identity.","Your product addresses: identity fragmented across multiple wallets.","The flow should deliver: badge attached to your avatar NFT as your identity.","You are designing a badge-on-avatar display experience with visible states and recovery paths."],"whenToAvoid":["Always show badges IN CONTEXT of the NFT they're attached to.","Clear warning: \"Selling this NFT transfers all 3 badges\".","Always ask \"which NFT should receive this badge\".","The product has no sign-in, attestation, or identity verification step."]},"designerTakeaways":["You can design UI that delivers badge attached to your avatar NFT as your identity.","You can all badges on one NFT that represents you in the interface.","You can design UI that delivers transfer the parent NFT, badges follow."],"problemsSolved":[{"problem":"Credentials tied to wallet, not identity","oldWay":"Achievement badge bound to 0x7a3... address","newWay":"Badge attached to your avatar NFT as your identity","impact":"critical"},{"problem":"Identity fragmented across multiple wallets","oldWay":"Different credentials on different wallets, no unified profile","newWay":"All badges on one NFT that represents you","impact":"high"},{"problem":"Can't transfer identity with credentials","oldWay":"Soulbound tokens stuck at old address forever","newWay":"Transfer the parent NFT, badges follow","impact":"high"},{"problem":"No visual hierarchy for credentials","oldWay":"Flat list of soulbound tokens in wallet","newWay":"Badges displayed ON the NFT they're attached to","impact":"medium"},{"problem":"Badge spam pollutes wallet","oldWay":"Unwanted badges sent directly to address","newWay":"Badges attach to specific NFT, easier to manage","impact":"medium"}],"uxPatterns":[{"name":"Badge-on-Avatar Display","description":"Show badges attached to an NFT identity","mockup":"concept/nft-gallery","userFlow":["User views their identity NFT","Badges displayed visually on the NFT","Can expand to see full badge list","Each badge shows soulbound status","Clear indication badges move with NFT"]},{"name":"Badge Issuance to NFT","description":"Issue a badge that attaches to a specific NFT","mockup":"concept/nft-gallery","userFlow":["Issuer creates badge","Searches for recipient's identity NFT","Selects which NFT to attach badge to","Confirms permanent attachment","Badge minted and bound to NFT"]},{"name":"Identity NFT Selection","description":"User chooses which NFT represents their identity","mockup":"concept/nft-gallery","userFlow":["User opens identity settings","Views NFTs they own","Sees which has existing badges","Selects primary identity NFT","Shares NFT address for future badges"]},{"name":"Badge Verification","description":"Verify someone's badges through their NFT","mockup":"concept/verify-safety","userFlow":["Enter NFT address or ID","System fetches attached badges","Each badge verified against issuer","Shows validity status","Flags unverified issuers"]}],"uiComponents":[{"name":"BadgeOnNFT","description":"Visual overlay showing badges on parent NFT","states":["no-badges","has-badges","loading"],"props":["parentNFT","badges[]","maxDisplay","onBadgeClick"]},{"name":"IdentityNFTSelector","description":"Choose which NFT receives badges","states":["selecting","selected","confirming"],"props":["ownedNFTs[]","currentIdentity","onSelect"]},{"name":"BadgeAttachmentForm","description":"Form for issuing badge to specific NFT","states":["selecting-nft","confirming","issuing","complete"],"props":["badge","recipientNFTs[]","onIssue"]},{"name":"AttachedBadgeCard","description":"Display card for badge attached to NFT","states":["valid","revoked","unverified"],"props":["badge","parentNFT","issuer","issuedDate"]},{"name":"NFTCredentialProfile","description":"Full profile showing NFT with all badges","states":["loading","loaded","empty"],"props":["nft","badges[]","owner"]}],"antiPatterns":[{"pattern":"Showing badges separate from their parent NFT","why":"Loses the visual connection that makes this powerful","instead":"Always show badges IN CONTEXT of the NFT they're attached to","severity":"critical"},{"pattern":"Not explaining badges follow the NFT","why":"User sells NFT and loses credentials unknowingly","instead":"Clear warning: \"Selling this NFT transfers all 3 badges\"","severity":"critical"},{"pattern":"Issuing to wallet address instead of NFT","why":"Defeats the purpose, badge isn't attached to identity","instead":"Always ask \"which NFT should receive this badge\"","severity":"high"},{"pattern":"No verification of issuer legitimacy","why":"Fake credentials pollute identity","instead":"Show verified issuer status, flag unknowns","severity":"high"},{"pattern":"Hiding which NFT a badge is attached to","why":"User can't find their credentials","instead":"Always show \"Attached to: [NFT name]\"","severity":"medium"}],"onMonad":[{"aspect":"Badge Issuance","ethereum":"Each badge mint costs meaningful gas","monad":"Bulk badge issuance economically viable","designImplication":"Event organizers can issue badges to all attendees' NFTs cheaply"},{"aspect":"Verification Speed","ethereum":"Checking badges requires multiple calls","monad":"Fast parallel queries for all badges on an NFT","designImplication":"Can verify full credential profile in real-time"},{"aspect":"Transfer Detection","ethereum":"Need to index transfers to track badge movement","monad":"Sub-second finality means immediate badge tracking","designImplication":"Badge ownership updates instantly on NFT transfer"},{"aspect":"Profile Loading","ethereum":"Loading NFT + all badges may be slow","monad":"Parallel execution loads everything fast","designImplication":"Can show full decorated avatar instantly"}],"keyTakeaways":["EIP-5114 = badges attached to NFTs, not wallets","Your identity NFT carries all your credentials","Transferring the NFT transfers all badges","Always show badges visually ON their parent NFT","Warn users before selling NFT with badges attached"],"technicalNotes":"EIP-5114 defines a Badge that references a specific NFT (collection address + token ID) as its \"soul\". The badge cannot be transferred independently—it follows the parent NFT. Unlike ERC-5192 which binds to addresses, this binds to another token. Useful for identity NFTs like ENS names or avatars that represent a person."},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-5114","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=EIP-5114","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/EIP-5114","markdown":"https://www.eipsfordesigners.com/standards/EIP-5114/content.md","agent":"https://www.eipsfordesigners.com/standards/EIP-5114/agent.md","api":"https://www.eipsfordesigners.com/api/standards/EIP-5114","official":"https://eips.ethereum.org/EIPS/eip-5114","discussion":"https://ethereum-magicians.org/search?q=EIP-5114"},"freshness":{"lastReviewed":"2026-04-05","lastUpdated":"2026-04-05"}}