{"id":"ERC-6381","name":"Public NFT Emote Repository","status":"Final","chain":"both","category":{"id":"social","name":"Social & Messaging","description":"Communication and reactions"},"journeyStages":[{"id":"specialized","name":"Specialized Interactions","description":"Physical items, AI, social, gaming"}],"uxImpact":"Users can react to any NFT with emoji (like social media reactions) — reactions are stored on-chain in a public repository, enabling social signals around NFT value and desirability. Design implications: show emoji reaction counts on NFT cards, design emoji picker for reacting, display top reactions and total counts, show 'you reacted' state for user's own reactions, enable bulk reactions across multiple NFTs. Design decisions: which emojis to feature prominently, whether to show who reacted (privacy vs transparency), handling presigned reactions for gasless UX, reaction count display (exact vs abbreviated), emoji display consistency across platforms.","hasDetailedContent":true,"content":{"id":"ERC-6381","summary":"ERC-6381 creates a universal reaction system for NFTs - like social media reactions but on-chain. Anyone can \"emote\" on any NFT (❤️, 🔥, 😂, etc.) and these reactions are stored permanently on the blockchain. Collections can see engagement metrics, owners can showcase popular items, and the social layer becomes part of the NFT itself.","applicability":{"whenToUse":["Your product addresses: nFT engagement lives on Twitter/Discord, not with the NFT.","Your product addresses: no standard way to show NFT popularity.","The flow should deliver: reactions permanently attached to NFT, always visible.","You are designing a nft reaction bar experience with visible states and recovery paths."],"whenToAvoid":["Show \"~$0.02\" or similar before sending reaction.","Show reaction summary on marketplace listings.","Show top 8-12 popular emojis, expandable for more.","No social graph, messaging, or public profile surfaces exist."]},"designerTakeaways":["You can design UI that delivers reactions permanently attached to NFT, always visible.","You can design UI that delivers on-chain reaction counts show real community sentiment.","You can design UI that delivers fully on-chain, works everywhere, censorship resistant."],"problemsSolved":[{"problem":"NFT engagement lives on Twitter/Discord, not with the NFT","oldWay":"Reactions scattered across platforms, lost when posts deleted","newWay":"Reactions permanently attached to NFT, always visible","impact":"high"},{"problem":"No standard way to show NFT popularity","oldWay":"Check sales, followers, guess at engagement","newWay":"On-chain reaction counts show real community sentiment","impact":"high"},{"problem":"Social features require centralized services","oldWay":"Like buttons need backend, database, APIs","newWay":"Fully on-chain, works everywhere, censorship resistant","impact":"medium"},{"problem":"Can't verify if engagement is authentic","oldWay":"Bots can spam likes on centralized platforms","newWay":"Each reaction from real wallet, costs gas, verifiable","impact":"medium"}],"uxPatterns":[{"name":"NFT Reaction Bar","description":"Show reactions below NFT like social media","mockup":"concept/nft-gallery","userFlow":["User views NFT","See reaction counts below image","Click emoji to add same reaction","Or click \"Add Reaction\" for picker","Sign transaction to record reaction","Count updates, user in reactors list"]},{"name":"Reaction Picker","description":"Choose which emote to send","mockup":"concept/nft-gallery","userFlow":["User clicks \"Add Reaction\"","Emoji picker opens","Select desired emoji","See cost estimate","Click send","Sign transaction, reaction recorded"]},{"name":"Collection Engagement Dashboard","description":"Analytics for collection reactions","mockup":"concept/nft-gallery","userFlow":["Collection owner views dashboard","See total reactions across collection","Breakdown by emoji type","See most popular NFTs","Track engagement over time","Use data for community insights"]},{"name":"My Reactions Feed","description":"Track your reactions across NFTs","mockup":"concept/nft-gallery","userFlow":["User views their profile","See all NFTs they've reacted to","Each shows which emotes they sent","Can remove reactions if desired","See personal emoji usage stats"]}],"uiComponents":[{"name":"ReactionBar","description":"Displays reactions with counts","states":["loading","loaded","updating"],"props":["reactions","onReact","userReactions"]},{"name":"EmojiPicker","description":"Select emoji to react with","states":["closed","open","selecting","sending"],"props":["allowedEmojis","onSelect","disabled"]},{"name":"ReactionCounter","description":"Single emoji with count","states":["inactive","active","user-reacted"],"props":["emoji","count","onClick","highlighted"]},{"name":"CollectionEngagement","description":"Dashboard for collection reaction stats","states":["loading","loaded","empty"],"props":["collection","reactions","timeRange"]}],"antiPatterns":[{"pattern":"Not showing that reactions cost gas","why":"Users surprised by transaction popup for \"free\" action","instead":"Show \"~$0.02\" or similar before sending reaction","severity":"high"},{"pattern":"Hiding reaction counts on listings","why":"Engagement signals hidden from buyers","instead":"Show reaction summary on marketplace listings","severity":"medium"},{"pattern":"Too many emoji options overwhelming users","why":"Analysis paralysis, users don't react","instead":"Show top 8-12 popular emojis, expandable for more","severity":"medium"},{"pattern":"No way to remove reactions","why":"Mistaken reactions stuck forever","instead":"Allow unreacting (also on-chain transaction)","severity":"low"},{"pattern":"Not explaining permanence","why":"Users think it's like Twitter likes","instead":"Note: \"On-chain reactions are permanent and public\"","severity":"medium"}],"onMonad":[{"aspect":"Reaction Speed","ethereum":"Reaction takes 15+ seconds to confirm","monad":"Sub-second reaction recording","designImplication":"Feels like normal social media, instant feedback"},{"aspect":"Cost per Reaction","ethereum":"Each reaction costs $0.50-5","monad":"Reactions cost fractions of a cent","designImplication":"Users can react freely without financial concern"},{"aspect":"Multiple Reactions","ethereum":"Adding several emojis is expensive","monad":"React with many emojis cheaply","designImplication":"Enable multi-emoji reactions in single transaction"},{"aspect":"Real-time Updates","ethereum":"Polling for new reactions is slow","monad":"Near real-time reaction updates","designImplication":"Live reaction counts as people engage"}],"keyTakeaways":["ERC-6381 = on-chain emoji reactions for NFTs","Engagement metrics become part of the NFT itself","Show costs clearly before sending reactions","Display reaction counts on marketplace listings","On Monad: cheap enough for casual social engagement"],"technicalNotes":"ERC-6381 defines a public repository contract where anyone can call emote(collection, tokenId, emoji, state). The emoji is stored as bytes4 (UTF-8 encoded). State is boolean for react/unreact. Events are emitted for indexing. Collections can optionally restrict allowed emojis. getEmoteCount(collection, tokenId, emoji) returns current count."},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-6381","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=ERC-6381","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-6381","markdown":"https://www.eipsfordesigners.com/standards/ERC-6381/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-6381/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-6381","official":"https://eips.ethereum.org/EIPS/eip-6381","discussion":"https://ethereum-magicians.org/search?q=ERC-6381"},"freshness":{"lastReviewed":"2026-04-05","lastUpdated":"2026-04-05"}}