Brought a simple domain market

Hi, brought a simple domain market to stacks, welcome to (redirect to Any advice is welcome


I really like your project, I have seen several people on Telegram ask for a BNS marketplace, very nice that you made one.

After getting some transactions in and looking at the contract, firstly I am very impressed :wink:
I like how you offer two options

  1. Ads
  2. Listing the BNS name for offers

I think the first name is not very descriptive. This is where a user locks their BNS-name in one of your 500 escrow contracts, right? Is that the right way to say it. I think this offers a nice feature because this way the user can buy the domain directly compared to (2)
With 2 the user makes a bid, other users can make bids on the same domain and then the owner of the domain can choose to accept that bid. Bidding on a name means sending stx to the .market contract. Accepting the bid means the seller sends the BNS-name to the bidder and gets the stx from the .market contract minus a fee for the market. Simple yet non-custodial and this way you are not bothered by the 1 BNS name per public address limit.

The warnings/validations for checking if an address already contains a name is a good way to prevent user errors.

I think what I am missing are instructions to use option 1 (ads). I have to say how long the name will be available, with a maximum of 144 days. What happens after that? Is it returned automatically or does the owner have to reclaim it from the escrow contract?

Right now the “ads” show a blank section (reserved for the 500 direct sell names?). Could you only show slots when a contract contains something so users do not have to go through all the empty pages?

You have three tabs

  • New list
  • New trade
  • New bid

I think you could show everything on the same page
Domain, (list date/block), min bid, highest bid, sell date/block

Then offer search and sort options by list date, min bid, highest bid, and sell date

I see a domain that has been sold (bid on, bid accepted and send) is still listed. I think you should filter those out, which would be easy if you have “sell date” as metadata, you can put those at the end by default or not show them at all by default.

Then add some additional labels for users to click when listing a domain for example:

  • First Names
  • Last names
  • Company names
  • Short names
  • Common words
  • Fantasy words
  • Crypto words
  • etc.

You may also want to get namespace in a separate field for easy sorting? Although currently most of the registered domains are in the same namespace (.btc).

1 Like

First, thanks for your good advices.

  1. When list a name in ad area, there’s a checkbox shows “hosted by ad”, by default it’s not checked(i.e., your name will not transferred to contract by default, and others can’t buy directly). FAQ has some details, and I’ll change to make it clearer.

  2. Max 250 escrow contracts now. Because when I try 500 escrow contracts there are some strange errors(even simplest read-only function call complains read exceed).

  3. The main limitation is currently all data is on-chain, to implement your advices, there must be a server(like opensea). I am not good at server programming.

Thank you for the reply. 1. wasn’t clear to me because Firefox does not show this correctly, you will want to look into that, this is what I saw with Firefox:

On Chrome it is clear, especially together with the FAQ.

Both my mac and windows’s firefox havn’t encounter the same UI problem yet.
Windows or Mac? Which firefox version? Try refresh some times or upgrade to the newest version of firefox?

After your reply I did some more digging. I have Addblock Plus installed and although it says 0 items were blocked it still does something that prevents the BNS name blocks from loading. When I explicitly turn Addblock Plus off for it does load just like the screenshot from Chrome.

Thanks, I’ll take a look at it.

1 Like