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 sellfor 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, onlysell --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 stderr | Meaning |
|---|---|
A listing's price must be positive; zero-price hand-offs use the transfer paths | A 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 window | Cancel or replace attempted within the first 5 minutes. |
No listing is open for this domain | Buy or cancel on a domain with no staged listing. |
The listing has expired | Buy attempted after the expiry instant; the authority can reclaim the rent with sell --cancel. |
A deactivation is already pending for this domain | Listing or buying refused while the deactivation timelock is in flight. |
The domain has an open listing; cancel it before closing, transferring, or deactivating | domain close, domain transfer, or domain deactivate refused while listed; cancel first. |
The listing holder no longer owns the listed name | Buy 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. |
Related
- 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.