ERC-8451

Marketplaces can't tell a mint-time trading pause from a collection that's soulbound for good. ERC-8451 gives each its own onchain signal, and adds ERC-1155 support.

01 / The blind spot

Two locked collections. One of them never opens.

Under ERC-6982 a drop that pauses trading during its public mint and a set of credentials that can never move look exactly the same: DefaultLocked(true). A marketplace has to guess whether to keep the orders or drop them for good.

A · mint pause B · soulbound
Collection A

Paused for the mint

Holder transfers are off while the public mint runs, then trading opens with DefaultLocked(false). Orders placed before the pause should come back.

Collection B

Soulbound from block one

Memberships, credentials, badges. It emits PermanentlyLocked() once and every token, including ones minted later, stays put.

The difference

One event, one view

permanentlyLocked() returns true forever after the event. Nothing to poll, no guessing, no 10,000 logs at deployment.

02 / Lifecycle

From locked drop to open market, or sealed for good.

Lock at deploy

Emit DefaultLocked(true). Holder transfers revert with TokenLocked.

State 01

Mint anyway

Mints and burns are not holder transfers. A lock never stops the drop.

State 02

Open trading

Emit DefaultLocked(false). Marketplaces bring back the orders they kept.

State 03

Hold one back

Locked(tokenId, true) overrides the default for a single token.

State 04

Seal

PermanentlyLocked(). One way. Every holder transfer reverts for the life of the contract.

Final
03 / Reading it

What a marketplace shows.

Two calls answer it: locked(tokenId) and permanentlyLocked().

Tradable

List, offer and sell as usual.

locked = false

Paused

Hide orders, keep them, show them again on unlock.

locked = true · permanent = false

Non-transferable

Label it soulbound. Nothing to list, now or later.

permanent = true

Not supported

No ERC-6982. Simulate fills and watch for reverts.

0x6b61a747 = false