# ERC-6105: No Intermediary NFT Trading

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

| Field | Value |
| --- | --- |
| Status | Final |
| Chain | both |
| Category | NFT Capabilities |
| Journey stages | Asset Management |
| Detailed guide | Yes |
| Official specification | https://eips.ethereum.org/EIPS/eip-6105 |
| Discussion search | https://ethereum-magicians.org/search?q=ERC-6105 |

## UX Impact

Built-in marketplace functionality — list, buy, and sell NFTs directly from the contract without intermediary. Design implications: show 'List for Sale' directly in wallet UI, display listing price/expiry on owned tokens, enable direct purchase without marketplace approval, show benchmarkPrice for royalty calculation. Design decisions: whether to compete with external marketplaces in UI, simplicity of direct listing vs marketplace features, handling multiple payment tokens.

## Summary

ERC-6105 enables peer-to-peer NFT trading without marketplace intermediaries. Sellers can list NFTs directly from the contract with price, buyer restrictions, and expiration. Buyers purchase directly on-chain with enforced royalties. This removes marketplace fees, ensures creator royalties are always paid, and enables truly decentralized NFT trading.

## For Designers

- You can design UI that delivers direct on-chain listing, no intermediary fees.
- You can design UI that delivers royalties enforced at contract level, can't be bypassed.
- You can design UI that delivers atomic on-chain swap: payment and NFT transfer together.

## Applicability

### When to Use

- Your product addresses: marketplaces charge 2-5% fees on every sale.
- Your product addresses: marketplaces can skip royalties.
- The flow should deliver: direct on-chain listing, no intermediary fees.
- You are designing a direct listing interface experience with visible states and recovery paths.

### When to Avoid

- Show explicit comparison: "Marketplace fee: $0 (normally 2.5%)".
- Prominently show "Creator royalty enforced on-chain".
- Explain: "Only specified buyer can purchase" + show buyer address.
- Assets are fungible tokens only with no unique-item semantics.

## Problems It Solves

### Marketplaces charge 2-5% fees on every sale

Impact: critical

Old way: List on OpenSea, pay 2.5% even for peer-to-peer trade

New way: Direct on-chain listing, no intermediary fees

### Marketplaces can skip royalties

Impact: critical

Old way: Some platforms set royalties to 0 to attract volume

New way: Royalties enforced at contract level, can't be bypassed

### Direct peer trades require trust or escrow

Impact: high

Old way: Send NFT and hope buyer pays, or use expensive escrow

New way: Atomic on-chain swap: payment and NFT transfer together

### Private sales are awkward

Impact: medium

Old way: List publicly, hope only intended buyer sees it quickly

New way: List for specific buyer address only

## Anti-Patterns

### Not explaining the no-marketplace advantage

Severity: high

Users don't realize they're saving 2-5% fees

Instead: Show explicit comparison: "Marketplace fee: $0 (normally 2.5%)"

### Hiding that royalties are enforced

Severity: high

Creators don't know their royalties are protected

Instead: Prominently show "Creator royalty enforced on-chain"

### Making private sales look suspicious

Severity: medium

Looks like a scam link

Instead: Explain: "Only specified buyer can purchase" + show buyer address

### No confirmation before listing

Severity: medium

User lists at wrong price by accident

Instead: Show full summary + confirmation before on-chain listing

### Not showing listing expiration clearly

Severity: medium

Seller forgets listing exists, price becomes stale

Instead: Notify when listings near expiration, show clear countdown

## UI Components

### DirectListingForm

Create on-chain NFT listing
States: editing, confirming, listing, listed
Props: nft, onList, defaultPrice, showRoyalty

### PrivateSaleConfig

Configure buyer-restricted sale
States: public, private, validating-address
Props: buyerAddress, onBuyerChange, resolved

### DirectPurchaseCard

Purchase UI for on-chain listings
States: available, expired, sold, purchasing
Props: listing, onPurchase, showBreakdown

### ListingManager

Dashboard for managing active listings
States: loading, has-listings, empty
Props: listings, onEdit, onCancel

## On Monad

### Listing Speed

Ethereum: Creating listing takes 15-30 seconds

Monad: Instant listing creation

Design implication: List multiple items rapidly, batch listing UI practical

### Purchase Confirmation

Ethereum: Buyer waits 15+ seconds to confirm ownership

Monad: Sub-second purchase confirmation

Design implication: Can show "You own it!" immediately

### Gas Costs

Ethereum: Each listing/purchase costs $5-50

Monad: Negligible costs for all operations

Design implication: Price edits, relisting, cancellation all cheap

### Royalty Distribution

Ethereum: Royalty payment in same tx can add cost

Monad: Complex distribution still fast and cheap

Design implication: Multi-recipient royalty splits practical

## Key Takeaways

- ERC-6105 = peer-to-peer NFT trading without marketplace
- Zero platform fees, enforced royalties
- Private sales to specific addresses supported
- Highlight savings vs marketplace fees clearly
- On Monad: instant listing and purchase

## UX Patterns

### Direct Listing Interface

List NFT for sale without marketplace

User flow:

- User selects NFT to sell
- Enter sale price
- Choose public or private sale
- See fee breakdown (no marketplace fee)
- Set expiration time
- Create on-chain listing

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

### Private Sale to Friend

Sell directly to specific address

User flow:

- User chooses private sale
- Enter buyer ENS or address
- Confirm sale details
- Create on-chain listing
- Share link with intended buyer
- Only that address can purchase

Mockup registry key: `generic/vault-deposit` (React UI on the live standard page).

### Direct Purchase Flow

Buy NFT directly from on-chain listing

User flow:

- Buyer opens listing link
- See NFT details and price
- Notice "Direct On-Chain Sale" badge
- Review payment breakdown
- Click buy
- Single transaction completes purchase

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

### Active Listings Manager

Manage your on-chain listings

User flow:

- Seller views active listings
- See all on-chain listings
- Check expiration status
- Edit price if needed
- Cancel listing (NFT unlocks)
- Relist expired items

Mockup registry key: `generic/list-selector` (React UI on the live standard page).

## Technical Notes

ERC-6105 extends ERC-721 with setListing(tokenId, price, expiration, buyer) and purchase(tokenId) functions. The listing is stored on-chain with optional buyer restriction. Purchase atomically transfers NFT to buyer and distributes payment to seller + royalty recipients. Compatible with ERC-2981 for royalty information. Listings can be cancelled or updated by the seller.
