# ERC-6381: Public NFT Emote Repository

Source: https://www.eipsfordesigners.com/standards/ERC-6381
Agent brief: https://www.eipsfordesigners.com/standards/ERC-6381/agent.md
Machine-readable JSON: https://www.eipsfordesigners.com/api/standards/ERC-6381
Last reviewed: 2026-04-05
Last updated: 2026-04-05

| Field | Value |
| --- | --- |
| Status | Final |
| Chain | both |
| Category | Social & Messaging |
| Journey stages | Specialized Interactions |
| Detailed guide | Yes |
| Official specification | https://eips.ethereum.org/EIPS/eip-6381 |
| Discussion search | https://ethereum-magicians.org/search?q=ERC-6381 |

## UX Impact

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.

## 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.

## For Designers

- 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.

## Applicability

### When to Use

- 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.

### When to Avoid

- 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.

## Problems It Solves

### NFT engagement lives on Twitter/Discord, not with the NFT

Impact: high

Old way: Reactions scattered across platforms, lost when posts deleted

New way: Reactions permanently attached to NFT, always visible

### No standard way to show NFT popularity

Impact: high

Old way: Check sales, followers, guess at engagement

New way: On-chain reaction counts show real community sentiment

### Social features require centralized services

Impact: medium

Old way: Like buttons need backend, database, APIs

New way: Fully on-chain, works everywhere, censorship resistant

### Can't verify if engagement is authentic

Impact: medium

Old way: Bots can spam likes on centralized platforms

New way: Each reaction from real wallet, costs gas, verifiable

## Anti-Patterns

### Not showing that reactions cost gas

Severity: high

Users surprised by transaction popup for "free" action

Instead: Show "~$0.02" or similar before sending reaction

### Hiding reaction counts on listings

Severity: medium

Engagement signals hidden from buyers

Instead: Show reaction summary on marketplace listings

### Too many emoji options overwhelming users

Severity: medium

Analysis paralysis, users don't react

Instead: Show top 8-12 popular emojis, expandable for more

### Not explaining permanence

Severity: medium

Users think it's like Twitter likes

Instead: Note: "On-chain reactions are permanent and public"

### No way to remove reactions

Severity: low

Mistaken reactions stuck forever

Instead: Allow unreacting (also on-chain transaction)

## UI Components

### ReactionBar

Displays reactions with counts
States: loading, loaded, updating
Props: reactions, onReact, userReactions

### EmojiPicker

Select emoji to react with
States: closed, open, selecting, sending
Props: allowedEmojis, onSelect, disabled

### ReactionCounter

Single emoji with count
States: inactive, active, user-reacted
Props: emoji, count, onClick, highlighted

### CollectionEngagement

Dashboard for collection reaction stats
States: loading, loaded, empty
Props: collection, reactions, timeRange

## On Monad

### Reaction Speed

Ethereum: Reaction takes 15+ seconds to confirm

Monad: Sub-second reaction recording

Design implication: Feels like normal social media, instant feedback

### Cost per Reaction

Ethereum: Each reaction costs $0.50-5

Monad: Reactions cost fractions of a cent

Design implication: Users can react freely without financial concern

### Multiple Reactions

Ethereum: Adding several emojis is expensive

Monad: React with many emojis cheaply

Design implication: Enable multi-emoji reactions in single transaction

### Real-time Updates

Ethereum: Polling for new reactions is slow

Monad: Near real-time reaction updates

Design implication: Live reaction counts as people engage

## Key Takeaways

- 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

## UX Patterns

### NFT Reaction Bar

Show reactions below NFT like social media

User flow:

- 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

Mockup registry key: `concept/nft-gallery` (React UI on the live standard page).

### Reaction Picker

Choose which emote to send

User flow:

- User clicks "Add Reaction"
- Emoji picker opens
- Select desired emoji
- See cost estimate
- Click send
- Sign transaction, reaction recorded

Mockup registry key: `concept/nft-gallery` (React UI on the live standard page).

### Collection Engagement Dashboard

Analytics for collection reactions

User flow:

- 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

Mockup registry key: `concept/nft-gallery` (React UI on the live standard page).

### My Reactions Feed

Track your reactions across NFTs

User flow:

- 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

Mockup registry key: `concept/nft-gallery` (React UI on the live standard page).

## Technical Notes

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.
