List an alias for sale
See Aliases for what an alias
is and how a listing differs from an escrowed
transfer.
This page covers the sithbit alias sell/buy command tree.
sithbit alias sell <alias> --price <lamports> \
[--expires-in <seconds>] \
[--keypair <keypair>] \
[--skip-preflight]
Puts an alias up for sale on the open marketplace: a fixed-price
listing that any buyer may take, first come, first served. Where an
escrowed transfer offer
names one specific recipient who alone can accept, a listing names nobody —
whoever signs alias buy and pays the price
becomes the alias’s holder.
For an ascending-bid sale instead of a fixed price — bidders escrow lamports on-chain and the high bidder wins at a deadline — see Auction an alias. A listing is one mode or the other, chosen when it is staged.
sithbit alias sell john_doe --price 50000000
Listed alias 'john_doe' for sale at 50000000 lamports
https://explorer.solana.com/tx/…
The alias’s current holder signs. The price is in lamports and must be
positive — for a free hand-off, stage a zero-fee
alias transfer init offer. The listing lives in a dedicated
account derived from the alias name’s blake3 hash,
so each alias can carry at most one listing at a time (a second
simultaneous listing is structurally impossible). The holder fronts that
account’s rent when staging the listing and gets it back when the listing
resolves — bought, cancelled, or reclaimed after expiry.
Until the moment a buyer pays, the alias keeps resolving to the current holder, exactly as before; mail keeps working unchanged.
The binding window
For its first 5 minutes a listing is binding on the holder: it can be neither cancelled nor replaced. This protects a buyer who sees the listing and pays promptly from having it retracted out from under them mid-purchase. Buying itself is never window-gated — a listing is buyable the moment it is staged.
Replacing a listing
To change the price or the expiry, just issue a new alias sell
for the same alias — once the binding window has elapsed, the new listing
replaces the standing one in place (no cancel-first needed, and no
extra rent). The replacement re-arms the 5-minute binding window.
Expiry
A listing lapses 30 days after it is staged, unless you pass a different lifetime in seconds:
sithbit alias sell john_doe --price 50000000 --expires-in 86400
Enforcement is lazy — nothing sweeps expired listings. A buy at or before the expiry instant succeeds; a buy after it is refused. The listing account of an expired listing sits until the holder cancels it or stages a replacement.
Buying a listed alias
sithbit alias buy <alias> \
[--payer-keypair <keypair>] \
[--keypair <keypair>] \
[--skip-preflight]
Any wallet may buy — the buyer signs, and paying the price doubles as consent, so an alias can never be planted on a wallet that didn’t ask for it. In one atomic instruction the price leaves the paying wallet, splits between the current holder and the postoffice (90/10 — see Economics for the exact money flow), the alias repoints at the buyer, and the listing closes with its rent refunded to the previous holder.
sithbit alias buy john_doe -k buyer.json
Bought alias 'john_doe' for maiLtdkxym8CCmo9TwDuXywqd9DXaK3tB6toKFVeBFR
https://explorer.solana.com/tx/…
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.
(Simply funding the buyer’s wallet beforehand works too.)
A bought alias shows up in the gRPC gateway’s alias index as an ordinary transfer event — the index records the change of holder, not how it was paid for.
Cancelling a listing
sithbit alias sell <alias> --cancel [--keypair <keypair>] [--skip-preflight]
The holder cancels an open listing (once its binding window has elapsed), closing the listing account and reclaiming its rent:
sithbit alias sell john_doe --cancel
Cancelled the listing on alias 'john_doe' and reclaimed its rent
https://explorer.solana.com/tx/…
This is also how you reclaim the rent of an expired listing — an expired listing can no longer be bought, but its account stays open until the holder cancels it.
One disposal path at a time
An alias cannot carry both a private
transfer offer
and an open listing — the two would race to sell the same name. The
refusal works in both directions: alias sell is refused while
a transfer offer is outstanding, and alias transfer init (any fee,
including a zero-fee hand-off) is refused
while a listing is open. Resolve one path (cancel, accept, or buy) before
starting the other.
The guard matters because repointing the alias under a live listing would leave a stale holder recorded as the listing’s seller, able to collect the sale price the moment a buyer paid. Cancel the listing first, then transfer. The refusal is deliberate rather than an auto-cancel: a silent retraction could land inside the listing’s binding window, doing exactly what the window exists to prevent. (Buying re-checks the seller for the same reason: a stale listing that predates a change of holder can never sell the new holder’s alias at the old holder’s price.)
Relatedly, sithbit alias close refuses while a listing is open — cancel
the listing first, then close (otherwise the listing account’s rent would
be stranded). See Appendix: Closing
accounts.
Aliases have no deactivation concept, so there is no alias twin of the domain marketplace’s deactivation interplay — an open alias listing only ever resolves by buy, cancel, or expiry.
Errors
| Message on stderr | Meaning |
|---|---|
A listing's price must be positive; zero-price hand-offs use the transfer paths | Stage a zero-fee alias transfer init offer for a free hand-off. |
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 alias | Buy or cancel on an alias with no staged listing. |
The listing has expired | Buy attempted after the expiry instant; the holder can reclaim the rent with sell --cancel. |
The alias has a pending transfer offer; cancel it before closing | Listing refused; cancel the escrowed offer first. |
The alias has an open listing; cancel it before closing or transferring | alias close or alias transfer init (any fee) refused while listed; cancel first. |
The listing holder no longer owns the listed name | Buy refused: the listing predates a change of holder, so its recorded seller is no longer the wallet the alias resolves to. |
Related
- Auction an alias — the ascending-bid alternative to a fixed price.
- Transfer an alias — the escrowed hand-off or sale to one named recipient (free when the fee is 0).
- Economics — the exact money flow: who pays, who collects, and when.
- List a domain for sale — the same marketplace for domains.
- Closing accounts — reclaiming rent, and why a listed alias can’t close.