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 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 stderrMeaning
A listing's price must be positive; zero-price hand-offs use the transfer pathsStage 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 windowCancel or replace attempted within the first 5 minutes.
No listing is open for this aliasBuy or cancel on an alias with no staged listing.
The listing has expiredBuy attempted after the expiry instant; the holder can reclaim the rent with sell --cancel.
The alias has a pending transfer offer; cancel it before closingListing refused; cancel the escrowed offer first.
The alias has an open listing; cancel it before closing or transferringalias close or alias transfer init (any fee) refused while listed; cancel first.
The listing holder no longer owns the listed nameBuy refused: the listing predates a change of holder, so its recorded seller is no longer the wallet the alias resolves to.