# EIP-5114: Soulbound Badge

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

| Field | Value |
| --- | --- |
| Status | Last Call |
| Chain | both |
| Category | Identity & Privacy |
| Journey stages | Asset Management |
| Detailed guide | Yes |
| Official specification | https://eips.ethereum.org/EIPS/eip-5114 |
| Discussion search | https://ethereum-magicians.org/search?q=EIP-5114 |

## UX Impact

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.

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

## For Designers

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

## Applicability

### When to Use

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

### When to Avoid

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

## Problems It Solves

### Credentials tied to wallet, not identity

Impact: critical

Old way: Achievement badge bound to 0x7a3... address

New way: Badge attached to your avatar NFT as your identity

### Identity fragmented across multiple wallets

Impact: high

Old way: Different credentials on different wallets, no unified profile

New way: All badges on one NFT that represents you

### Can't transfer identity with credentials

Impact: high

Old way: Soulbound tokens stuck at old address forever

New way: Transfer the parent NFT, badges follow

### No visual hierarchy for credentials

Impact: medium

Old way: Flat list of soulbound tokens in wallet

New way: Badges displayed ON the NFT they're attached to

### Badge spam pollutes wallet

Impact: medium

Old way: Unwanted badges sent directly to address

New way: Badges attach to specific NFT, easier to manage

## Anti-Patterns

### Showing badges separate from their parent NFT

Severity: critical

Loses the visual connection that makes this powerful

Instead: Always show badges IN CONTEXT of the NFT they're attached to

### Not explaining badges follow the NFT

Severity: critical

User sells NFT and loses credentials unknowingly

Instead: Clear warning: "Selling this NFT transfers all 3 badges"

### Issuing to wallet address instead of NFT

Severity: high

Defeats the purpose, badge isn't attached to identity

Instead: Always ask "which NFT should receive this badge"

### No verification of issuer legitimacy

Severity: high

Fake credentials pollute identity

Instead: Show verified issuer status, flag unknowns

### Hiding which NFT a badge is attached to

Severity: medium

User can't find their credentials

Instead: Always show "Attached to: [NFT name]"

## UI Components

### BadgeOnNFT

Visual overlay showing badges on parent NFT
States: no-badges, has-badges, loading
Props: parentNFT, badges[], maxDisplay, onBadgeClick

### IdentityNFTSelector

Choose which NFT receives badges
States: selecting, selected, confirming
Props: ownedNFTs[], currentIdentity, onSelect

### BadgeAttachmentForm

Form for issuing badge to specific NFT
States: selecting-nft, confirming, issuing, complete
Props: badge, recipientNFTs[], onIssue

### AttachedBadgeCard

Display card for badge attached to NFT
States: valid, revoked, unverified
Props: badge, parentNFT, issuer, issuedDate

### NFTCredentialProfile

Full profile showing NFT with all badges
States: loading, loaded, empty
Props: nft, badges[], owner

## On Monad

### Badge Issuance

Ethereum: Each badge mint costs meaningful gas

Monad: Bulk badge issuance economically viable

Design implication: Event organizers can issue badges to all attendees' NFTs cheaply

### Verification Speed

Ethereum: Checking badges requires multiple calls

Monad: Fast parallel queries for all badges on an NFT

Design implication: Can verify full credential profile in real-time

### Transfer Detection

Ethereum: Need to index transfers to track badge movement

Monad: Sub-second finality means immediate badge tracking

Design implication: Badge ownership updates instantly on NFT transfer

### Profile Loading

Ethereum: Loading NFT + all badges may be slow

Monad: Parallel execution loads everything fast

Design implication: Can show full decorated avatar instantly

## Key Takeaways

- 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

## UX Patterns

### Badge-on-Avatar Display

Show badges attached to an NFT identity

User flow:

- 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

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

### Badge Issuance to NFT

Issue a badge that attaches to a specific NFT

User flow:

- 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

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

### Identity NFT Selection

User chooses which NFT represents their identity

User flow:

- User opens identity settings
- Views NFTs they own
- Sees which has existing badges
- Selects primary identity NFT
- Shares NFT address for future badges

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

### Badge Verification

Verify someone's badges through their NFT

User flow:

- Enter NFT address or ID
- System fetches attached badges
- Each badge verified against issuer
- Shows validity status
- Flags unverified issuers

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

## Technical Notes

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.
