What a trade actually is
A HART trade is not an ownership swap. When two collectors agree to a trade, each side keeps the original artwork in their collection — and each side receives a traded copy of the artwork from the other side. Both wallets gain a piece; neither wallet loses one. The 10 HART per piece in the fee is the credit/royalty paid to the original artist for issuing that copy.
- RULE Originals never leave the collection. They stay with the wallet that owned them before the trade.
- RULE Each side gains a traded copy of every artwork in the other side's basket. Copies are clearly marked as traded in the UI.
- RULE Artwork only. No HART on either side of the basket. HART-for-art is a sale, not a trade.
- RULE Both wallets must sign. There is no unilateral trade.
- DESIGN Trading grows both collections at once. The OG artist gets paid every time someone wants a copy of their work in circulation.
What can be on each side
Each side's basket contains one or more artworks currently in their collection. Both baskets must be non-empty — an empty basket on one side means it's a gift, and the system routes those through the gifting flow instead.
You can include artworks you originally minted and artworks you collected via auction, gift, or a previous trade. The basket lists what your counterparty will receive a copy of, not what you give up.
Realtime trade window — Steam-style
Trades happen in a live, two-sided trade window modelled on Steam. Both collectors are in the window at the same time, see each other's collection on their side, and drag pieces in and out of the trade in real time. There is no inbox round-trip and no async "send a proposal, wait for a reply" flow — if the other person isn't in the window with you, the trade can't happen.
What the window looks like
- Two baskets, side-by-side. Your basket on the left, theirs on the right. Each shows the artworks currently offered, with thumbnails and OG-artist credit.
- Live updates. Anything either side adds or removes appears instantly on both screens. No reload, no refresh.
- Per-side fee preview. Each basket shows the running fee live:
90 + 10 × pieces. As you add or remove items the totals update for both of you. - Inline chat. A chat panel beside the baskets so the two of you can talk through the trade without leaving the window.
- Inventory drawer. Each side has a searchable view of their own collection — drag a piece into your basket to offer it, drag it back out to retract.
Two-step confirm — the Steam lock
To stop last-second swaps and bait-and-switches, accepting a trade is a two-step lock just like Steam:
- READY Each side clicks Ready when their basket is what they want. Both baskets freeze — neither side can add or remove items while either side is in the Ready state.
- EDIT If anything changes (either side adds, removes, or reorders), both Ready states drop and both sides have to click Ready again. This makes it impossible to slip in a swap after the other person has confirmed.
- CONFIRM Once both sides are Ready, a final Confirm trade button activates. Both must confirm — this is the wallet signature step.
- SETTLE Atomic on-chain settlement: each side's fee deducts, OG royalties route, the burn slice burns, traded copies mint into the opposite wallets.
Window lifecycle
- INVITE One collector invites another into a trade. The invite goes only to a trusted contact (see below). The invitee gets a popup; they can accept or decline.
- OPEN Both collectors enter the live trade window. Originals on both sides briefly lock from listings, gifts, and other trade windows for as long as this one is open.
- BUILD Either side adds, removes, or reorders pieces. The other side sees the change live.
- READY → CONFIRM The two-step lock above.
- SETTLE One on-chain transaction; receipts written to both sides.
- CANCEL Either side can hit Cancel at any point before settlement. Nothing burns, nothing mints.
- DISCONNECT If either side closes the tab, drops connection, or goes idle past the timeout, the window auto-cancels and originals unlock immediately.
Trust list — you decide who you can trade with
HART does not moderate trades. The platform will not arbitrate "was this fair" disputes, inspect baskets for value mismatches, or reverse a settled trade. Instead, you control who can even invite you into a trade window in the first place.
- TRUST Every collector maintains a trust list on their profile. Only wallets on your trust list can send you a trade invite.
- ADD Adding someone is mutual-by-request: you ask, they accept. Either side can remove the relationship at any time, which immediately blocks future invites both ways.
- BLOCK Block list overrides everything — a blocked wallet cannot invite you, message you in a trade window, or see you in counterparty search.
- DESIGN Trust is the moderation. If you only trade with people you actually trust, scams have nowhere to land. If you trade with strangers, that's on you.
Eligibility rules
| Item state | Can be in a trade basket? |
|---|---|
| Owned, idle | Yes |
| Listed for sale | No — owner must delist first (avoids conflicting offers on the same piece) |
| In another open trade window | No — only one open trade window per piece at a time |
| Pending gift | No |
| Under moderation review | No |
Trade fee — burn & OG-artist split
Sending a trade is not free. Each side pays a fee when the swap settles, made of two parts: a fixed 90 HART burn, plus 10 HART per artwork in their basket routed to the original artist of each piece — that's the OG's credit for letting a copy of their work be minted to the other collector.
Per-side cost formula
per_side_cost = 90 (burn) + 10 × artworks_in_your_basket
| Your basket | Burn | OG-artist royalties | Total you pay |
|---|---|---|---|
| 1 artwork | 90 HART | 10 HART (1 × 10) | 100 HART |
| 2 artworks | 90 HART | 20 HART (2 × 10) | 110 HART |
| 3 artworks | 90 HART | 30 HART (3 × 10) | 120 HART |
| N artworks | 90 HART | 10·N HART | (90 + 10·N) HART |
The burn is fixed per side regardless of basket size. Each artwork carries its own 10 HART royalty to its specific OG artist — so a 3-piece basket pays three different OGs (one per piece), not one OG split three ways.
Worked example — 3-for-1 trade
Collector A's basket contains 3 artworks; Collector B's basket contains 1 artwork.
- Side A pays 120 HART: 90 burn + 10 × 3 to the OG artists of A's three pieces. Side B receives traded copies of all 3.
- Side B pays 100 HART: 90 burn + 10 to the OG artist of B's piece. Side A receives a traded copy of it.
- Trade total: 220 HART moved — 180 burned, 40 to OG artists across four pieces.
- Originals: A still owns their 3 pieces, B still owns their 1. Plus A now has 1 copy and B has 3 copies.
Edge cases & restrictions
- BLOCKED An OG artist cannot receive a copy of their own original artwork through a trade. They would be paying themselves the royalty to mint a copy of a piece they already created — buying their own work from themselves with extra steps. The system rejects any trade where one side's basket contains a piece originally minted by the wallet on the other side.
- If the OG artist's wallet is unreachable (closed / blacklisted), their 10 HART is burned instead of routed. Burn total for that piece becomes 100 HART rather than 90.
- Baskets must be non-empty on both sides. Empty basket on one side → use the gifting flow instead.
- You cannot include the same piece in two open trade proposals at once. Withdraw or wait for the other to resolve.
Traded copies & profile badges
Every artwork in a collection carries a small badge that tells you how it got there. Hover or tap any piece in a profile to see the source. Three sources are tracked:
| Badge | Source | Means |
|---|---|---|
| 🏅 Medal | Gallery / Auction | Bought outright — winning bid or gallery buy-now |
| 🎀 Gift bow | Gifted | Received via the gifting flow from another collector |
| 🔄 Trade icon | Traded copy | Received as a copy through a trade — the original lives in another collection |
The OG artist's wallet and display name are credited on every piece — original or copy — so attribution never gets diluted by trading. Traded copies are display-equivalent to originals in your collection (same render, same metadata), but the badge and the provenance trail make the source unambiguous.
Receipts & provenance
A settled trade writes one receipt visible to both sides and updates each piece's provenance log. The receipt records:
- Both wallets and the full artwork basket on each side
- Per-side trade fee with the breakdown shown explicitly: 90 HART burn + 10 HART × artworks-in-basket
- Each OG artist royalty payout (10 HART per piece) and the burn tx hash
- The mint references for each newly issued traded copy
- Settlement transaction signature
- Optional message attached to the proposal
The original's provenance trail is unchanged by the trade — it is still owned by the same wallet. The newly minted traded copy gets its own provenance starting from the trade event, crediting the OG artist as the creator and the receiving collector as the holder.
Disputes
Because trades are atomic and both-sides-signed, post-settlement disputes about what was minted do not exist — the on-chain record is final. The only dispute surface is off-platform claims (e.g., "we agreed I'd add more HART later"). The platform does not enforce or arbitrate side agreements; users are advised to put all consideration inside the trade itself.
Anti-abuse
Trade safety lives in the trust list, the two-step lock, and the live window — not in mod review. The platform does not arbitrate trades. A handful of mechanical guards exist:
- Trust-only invites. A wallet not on your trust list cannot start a trade window with you. This is the main spam and scam filter.
- Invite rate limit. Even within trust lists, invites are rate-limited per wallet to prevent grief-inviting.
- Block override. Blocking someone removes them from your trust list and prevents all future invites and chat.
- Sanitized previews. Asset thumbnails and titles in the trade window are rendered from canonical, sanitized metadata only — no rich content can be injected through a piece.
- Per-artwork single-window lock. One open trade window per piece at a time — prevents a piece from being committed in two windows at once.
- Auto-cancel on disconnect / idle. A dropped or idle window closes itself and unlocks both originals.