Story demo
Two artists, two galleries, multiple exhibitions and successive collectors. Session storage holds the records. No wallet, payment or chain transaction is involved.
Open the story ↗UNDER THE SURFACE
A guide to the records, contracts and permissions behind Artwork Commons. Use the story demo to explain the experience, then this page to examine how it works.
In the illustrative story, EON MUN creates Blue Mountain. Alex Chen buys it, two galleries include it in exhibitions, and Rowan Ellis later buys it from Alex. Its artist attribution and canonical artwork terms remain attached to the original work. A later exhibition records a loan without implying another sale.
Each gallery references the artwork’s registry and token. It does not mint a replacement identity. Works by Mika Sato can appear in the same exhibition while retaining their separate artist records.
| Contract | Responsibility | Authority |
|---|---|---|
| ParticipantRegistry | Links an artist’s art registry or a gallery’s exhibition registry beneath their name. | The participant controls attachment. |
| ArtworkRegistry | Issues an ERC-1155 singleton, immutable genesis, royalty terms and owner presentation. | The original artist issues; the current owner controls owner-derived presentation. |
| ArtResolver | Publishes the artwork or exhibition manifest contenthash and metadata URI. | Records are established by the creating registry. |
| GalleryRegistry | Creates exhibitions, receives submissions and records the gallery’s acceptance. | Only the gallery accepts or declines submissions. |
| MandateRegistry | Records scope, expiry, minimum price, commission and gallery acceptance. | The current owner grants authority; an ownership change invalidates old mandates. |
| SimpleSettlement | Settles direct and gallery sales, transfers ownership and credits withdrawable proceeds. | Checks the listing, owner, price and applicable mandate before settlement. |
Hierarchical registries let each participant manage their own namespace. An artist’s collection and a gallery’s exhibitions remain independently controlled, while their records can reference each other.
eonmun.eth
└── art → ArtworkRegistry
└── blue-mountain → ArtResolver → IPFS manifest
atelier.eth
└── exhibitions → GalleryRegistry
└── tokyo → exhibition manifest + artwork referencesThe platform checks name ownership or delegated subregistry permission before linking a participant registry. ArtworkRegistry builds on ENSv2’s PermissionedRegistry and ERC1155Singleton. Names resolve through the registry hierarchy to a contenthash; the original artwork record remains identifiable as ownership changes.
Name permissions and gallery mandates are separate. Permission to manage a name does not itself authorize a gallery sale. Application mandates are scoped to the artwork, current owner and ownership epoch. MandateRegistry directly inherits the pinned ENSv2 EnhancedAccessControl implementation: resource = mandate ID, LIST = 1, EXHIBIT = 16, SELL = 256. The gallery receives regular roles, not role-administration powers or artwork ownership. Revocation removes those roles; acceptance, expiry and ownership epoch add lifecycle checks.
Every newly issued artwork uses the same immutable policy, identified by ArtworkRegistry.TERMS_ID. Every exhibition points back to that work. Neither artists nor galleries can customize its clauses. Artist resale royalties belong to the artwork; gallery commission belongs to a particular mandate or sale. They are not interchangeable.
| Clause | Demo presentation | Current contract behavior |
|---|---|---|
| Artist royalty | 5% of a supported resale to the original artist. | New registries require exactly 500 basis points payable to the original artist. SimpleSettlement credits this on supported resales; the original artist’s primary sale is exempt. |
| Holding period | 180 days after each ownership transfer; first sale is immediate. | ArtworkRegistry rejects single, batch and operator transfers before resaleAllowedAt. Both listing paths check saleAllowed. The clock uses block timestamps. Exhibition loans remain possible. |
| Gallery commission | Agreed separately; 10% in the example sale. | Stored in the mandate and credited on gallery settlement. Direct sales do not charge gallery commission. |
The policy is compiled into the registry with no setter. New issuance rejects alternative royalties and custom agreement fields. An artist purchase option is future work and is not included in the current canonical policy. Existing deployed contracts are immutable and do not gain this policy through a website update; legacy registries are labelled in the interface.
ERC-2981 reports royalty information; it does not enforce payment across every marketplace or transfer. Token ownership and an exhibition statement also do not independently verify physical custody or legal title.
Creation, exhibition acceptance and purchases are different events. The story labels them with dates, participants and links to the relevant work or exhibition. A purchase changes the current owner; an exhibition does not. Older exhibitions remain part of the work’s history.
Dated issuance and exhibitions store the supplied historical date separately from the actual block recording time. Galleries can record an establishment date once, before their first exhibition. All dates must be in the past or present. ArtworkRegistry.recordHistory lets the original artist or current owner append attributed historical reports, including past purchases. These reports do not transfer the NFT, prove past payment, or change the resale holding period. The contract layer also exposes issuance, submission, decision, settlement and transfer events. A production history reader must index those events across relevant registries and preserve their transaction evidence. The richer multi-artist timeline shown in the story demo is curated fictional data, not a claim that those sales happened on Sepolia.
Two artists, two galleries, multiple exhibitions and successive collectors. Session storage holds the records. No wallet, payment or chain transaction is involved.
Open the story ↗The separately configured Anvil environment uses the pinned official ENSv2 deployment on chain 31337. It seeds eonmun.eth and atelier.eth and supports actual local transactions for creation, submission, acceptance and purchase. Its seed is separate from the richer story data.
Local setup and verification ↗Public wallet workflows use Ethereum Sepolia. A successful local test or fictional story entry is not evidence of a public-chain transaction. Inspect the connected environment and transaction receipts for live demonstrations.