Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

List a domain for sale

See Domains for what a domain sale conveys — and doesn’t — and Trading names: aliases & domains for how a domain listing fits alongside the rest of the marketplace. This page covers the sithbit domain sell/buy command tree.

sithbit domain sell <domain> --price <lamports> \
  [--expires-in <seconds>] \
  [--keypair <authority keypair>] \
  [--skip-preflight]

Puts a domain up for sale on the open marketplace: a fixed-price listing that any buyer may take, first come, first served. Whoever signs domain buy and pays the price becomes the domain’s authority — the mail server’s signing key, and the wallet that collects the domain’s operator share of settlement.

sithbit domain sell sithbit.net --price 5000000000
Listed mail domain 'sithbit.net' for sale at 5000000000 lamports
https://explorer.solana.com/tx/…

Who signs

Unlike every other domain mutation — create, transfer, deactivate, close are all delegate operations — listing a domain is signed by the domain’s current authority (--keypair, defaulting to the CLI’s configured keypair): selling is the owner’s own decision, not an administrative one. The delegate is not involved at any step of a marketplace sale.

The price is in lamports and must be positive — a free hand-off uses domain transfer instead, a delegate operation. The listing lives in a dedicated account derived from the domain name’s blake3 hash, so each domain can carry at most one listing at a time. The authority fronts that account’s rent when staging the listing and gets it back when the listing resolves — bought, cancelled, or reclaimed after expiry.

Listing changes nothing about how the domain serves mail: the current authority keeps signing SendMail and collecting the operator share until the moment a buyer pays.

The binding window, replacing, and expiry

Listings share the alias marketplace’s semantics exactly:

  • For its first 5 minutes a listing is binding on the authority — it can be neither cancelled nor replaced, so a buyer paying promptly can’t be front-run by a retraction. Buying is never window-gated.
  • A new domain sell for the same domain replaces the standing listing in place (same account, no extra rent) once the window has elapsed — and re-arms the 5-minute window.
  • A listing lapses 30 days after staging unless --expires-in <seconds> sets a different lifetime. A buy at or before the expiry instant succeeds; after it, only sell --cancel (reclaiming the rent) remains.

Deactivation interplay

A domain with an in-flight deactivation timelock cannot be listed — the domain’s state would change under the buyer between listing and purchase; cancel the deactivation first. The same guard sits on the purchase itself: domain buy is refused while a deactivation is pending. That matters because requesting a deactivation while listed is allowed — the delegate’s safety brake on a rogue domain is never blocked by a sale — so a timelock started after the listing was staged would otherwise hand a buyer a domain that flips inactive moments after they paid.

An already-inactive domain, though, is listable: like domain transfer, a sale swaps the authority regardless of the active flag, and the is_active field is plainly readable on-chain for any buyer doing their diligence (domain get prints it).

Buying a listed domain

sithbit domain buy <domain> \
  [--payer-keypair <keypair>] \
  [--keypair <keypair>] \
  [--skip-preflight]

Any wallet may buy — the buyer signs, and paying the price doubles as consent. In one atomic instruction the price leaves the paying wallet, splits between the current authority and the postoffice (90/10 — see Economics for the exact money flow), the domain’s authority field repoints at the buyer, and the listing closes with its rent refunded to the selling authority.

sithbit domain buy sithbit.net --keypair buyer.json
Bought mail domain 'sithbit.net'; its new authority is maiLtdkxym8CCmo9TwDuXywqd9DXaK3tB6toKFVeBFR
https://explorer.solana.com/tx/…

Exactly as with domain transfer, only the authority field changes: is_active, rent_payer, and the domain name are preserved, no mailbox is touched, and a later domain close still refunds the domain rent to whoever originally funded it. See what a purchase does and does not convey for what stays off-chain regardless.

By default the buyer’s own wallet pays the price. A sponsor may pay instead with --payer-keypair — the sponsor funds the price and the transaction fee (two signatures) and co-signs alongside the buyer.

Domain listings and completed domain sales appear alongside alias activity in the gRPC gateway’s marketplace surface — its listing scans and sale-history walk follow the domain program, which owns every listing account. Read the authoritative current authority any time with domain get.

Cancelling a listing

sithbit domain sell <domain> --cancel [--keypair <keypair>] [--skip-preflight]

The authority cancels an open listing (once its binding window has elapsed), closing the listing account and reclaiming its rent:

sithbit domain sell sithbit.net --cancel
Cancelled the listing on mail domain 'sithbit.net' and reclaimed its rent
https://explorer.solana.com/tx/…

This is also how the rent of an expired listing comes back.

While a listing is open, domain close and domain transfer are refused — cancel the listing first (closing would strand the listing account’s rent; transferring would leave a stale holder able to collect the sale proceeds).

Errors

Message on stderrMeaning
A listing's price must be positive; zero-price hand-offs use the transfer pathsA free hand-over is domain transfer, a delegate operation.
A listing's expiry must be in the future--expires-in produced an expiry at or before now.
The listing is still in its binding windowCancel or replace attempted within the first 5 minutes.
No listing is open for this domainBuy or cancel on a domain with no staged listing.
The listing has expiredBuy attempted after the expiry instant; the authority can reclaim the rent with sell --cancel.
A deactivation is already pending for this domainListing or buying refused while the deactivation timelock is in flight.
The domain has an open listing; cancel it before closing, transferring, or deactivatingdomain close, domain transfer, or domain deactivate refused while listed; cancel first.
The listing holder no longer owns the listed nameBuy refused: the listing predates an authority change, so its recorded seller no longer owns the domain — a stale listing never sells the new owner’s domain at the old owner’s price.
  • Domains — what a sale conveys, and what it doesn’t.
  • Transfer a domain — the delegate-signed administrative hand-over, and what an authority swap does (and doesn’t) change.
  • Economics — the exact money flow: who pays, who collects, and when.
  • List an alias for sale — the same marketplace for aliases.
  • Deactivate a domain — the timelock that blocks a listing.