An improved auction method for bundled token drops (e.g. City Collections)

Read this first: Alternatives to selling at below-market-clearing prices for achieving fairness (or community sentiment, or fun)

At Bright Moments, one of our goals is to maximize revenue for our Artist Partners. One of our primary fundraising mechanisms for artists are our City Collections – a curated group of artists who release a limited series of work based on a city in our roadmap. These Collections allow buyers to act as patrons for artists by sponsoring work that is not yet completed. Often, the funds are required for the artist to put on the show and a significant percentage of the revenue is used to build the experience for collectors.

In an ideal scenario, the tickets (called “Mint Passes” or “Mint Packs” when bundled) to these Collections are sold at the highest maximum price while still achieving a sellout and not pricing out community members. It’s a fine line.

Goals

Borrowing Vitalik’s goals:

  1. Fairness: don’t completely lock low-income people out of participating, give them at least some chance to get in. For token sales, there’s the not quite identical but related goal of avoiding high initial wealth concentration and having a larger and more diverse initial token holder community.
  2. Don’t create races: avoid creating situations where lots of people are rushing to take the same action and only the first few get in (this is the type of situation that leads to the horrible auctions-by-another-name that we saw above).
  3. Don’t require fine-grained knowledge of market conditions: the mechanism should work even if the seller has absolutely no idea how much demand there is.
  4. Fun: the process of participating in the sale should ideally be interesting and have game-like qualities, but without being frustrating.
  5. Give buyers positive expected returns: in the case of a token (or, for that matter, an NFT), buyers should be more likely to see the item go up in price than go down. This necessarily implies selling to buyers at below the market price.

I would add a few additional goals:

  1. Maximize artist revenue: If artists do well, we do well. We want to continue to produce outstanding results for our Artist Partners and having a reputation for positive financial outcomes is a key aspect of that relationship.
  2. Reward existing CryptoCitizens: Community members who have participated in ecosystem building, governance, and minting events should have a higher-than-average chance of participating in drops.

How did the London Collection drop do against these goals?

  1. Fairness: The sale did not discriminate based on the amount of ETH held in the wallet. Anyone who held a CryptoCitizen and GTLN at the time of snapshot had an equal chance of purchasing a Mint Pass when the sale opened. Despite this, many less technology savvy community members were unable to participate in the sale due to an unfamiliarity with the user interface and the specifics of Ethereum gas costs. Many people got “lucky” but having an understanding of these elements or an experience participating in high demand drops gave some community members an advantage. Grade: C
  2. Don’t create races: We failed at this. Although it wasn’t a “gas war” (at least one person successfully purchased a mint pass for ~$4 in gas), there was certainly a race and those who were ready when the contract open had a higher chance of receiving a mint. Grade: F
  3. Don’t require fine-grained knowledge of market conditions: Several people expressed that they were unaware the presale was oversubscribed and showed up after the sale to learn that it was sold out. Grade: D
  4. Fun: Stressful? Yes. Fun? No. Grade: D
  5. Give buyers positive expected returns: Based on secondary market activity since the sale, this was quite a success. Nearly all Mint Passes are selling at multiples of their sellout price, with some selling for nearly 5-10x. Grade: A
  6. Maximize artist revenue: We raised ~34 ETH per artist, but the secondary market activity shows that we left money on the table. Grade: B
  7. Reward existing CryptoCitizens: CryptoCitizens who participated in our original Mint Pack sale were automatically eligible for the sale, but many were not able to participate due to the race dynamics described above. Grade: B-

A full retrospective of the drop can be found here: London Collection Drop Retrospective.


So, how can we improve?

Assuming that demand > supply, there are several methods we could incorporate to reduce the negative effects listed above.

Alternative Drop Methods

Method 1: Brightlist with committed funding, then raffle

In each city, there are a maximum of 333 Golden Tokens. Combining these Golden Tokens with a CryptoCitizen acts as the brightlist eligibility and reduces the number of potential buyers to <=333.

Prior to the sale, we can launch a contract that accepts the following inputs:

amount (uint)
projectID (uint)
quantity (uint)

The contract would accept ETH from eligible wallets and hold it in escrow until the sale date. If the total number of unique wallets exceeds the number of available mint passes, we could use the Random Collector Selector to randomly choose a subset of wallets and refund the remaining funds.

This would reduce the “race” aspect of the sale, since there is no benefit to staking funds into the contract early. It would ensure fairness, since there would be no benefit to those with a deeper understanding of on-chain activity. It could be fun, if we created a party or event around the raffle selection process.

Method 2: Brightlist with queue

If we wanted to use a deterministic method for determining eligibility, we could allow brightlisted members to “move up” in the queue using a $CTZN token earned for completed ecosystem activities. This would take the place of a timed auction with a public leaderboard, where everyone on the brightlist could view their place in line and adjust their tip accordingly.

At the end of the time period, the $CTZN tip amount would be withdrawn from the users wallet. If we wanted to get fancy, we could use a modification of a second place auction, where you only pay as much as the person directly after you in line.

This would provide a demand use case for the Bright Benefits Program (CryptoCitizen Staking) and rewards existing CryptoCitizens who have accrued staking rewards via the benefits program.

Conclusion

The drop mechanics are secondary to the curation and quality of the artists included in the drop. With that being said, a well designed drop can avoid negative externalities for others in the ecosystem and improve our standing with collectors.

Before launching our next city drop, we should revisit the goals above and predict how the mechanic will score.

Another option, which I’m curious if y’all have considered, would be to release the token via a series of two sequential automated Dutch auctions: 1) an auction reserved to citizen holders; and 2) an open/public auction

Optionally, y’all could even consider a third stage of sales done via brightlisted/gated set of holders.

Am I understanding this right?

Auction 1: Reserved for Citizen holders
Starting price: x ETH
Resting price: x-C ETH
Start time: 12:00
End time: 13:00
Tokens sold: 50

Auction 2: Public
Starting price: x ETH
Resting price: x-C ETH
Start time: 13:00
End time: 14:00
Tokens sold: 50

Can you elaborate on this? The brightlist pre-sale for the London Collection was exclusively gated to CC + GTLN holders.

Yep, that type of structure is exactly what I’m suggesting! :purple_heart:

As for the third possible stage, my thinking was that you may want a stage that is more limitedly gated to just raffle-selected holders, that is a separate stage from the broadly gated stage that is for all citizens.

This is definitely not necessary by any means, just allows for more of a combination of raffle, allowlist, and free market mechanics all in a single release.

It may even be that that stage isn’t an auction at all.

For example:

Stage 1: Fixed price sale to raffle winners
Fixed price: x ETH
Start time: 12:00
End time: 13:00
Max tokens sold: 10

Stage 2: Automated DA, reserved for Citizen holders
Starting price: x ETH
Resting price: x-C ETH
Start time: 12:00
End time: 13:00
Tokens sold: 40

Stage 3: Automated DA, public
Starting price: x ETH
Resting price: x-C ETH
Start time: 13:00
End time: 14:00
Tokens sold: 50

Slight modification: I would do any fixed price sales after the DA, since it’s intended to be a price discovery mechanism. The way we did this for Reflections / Incomplete Control was to randomly assign options to purchase at 1/2 of the DA resting price to 23 CC holders. This meant they still needed to purchase the mint, but they were “in the money”.

So it would be:
Stage 1: Automated DA, public
Starting price: x ETH
Resting price: x-C ETH
Start time: 12:00
End time: 13:00
Tokens sold: 50

Stage 2: Automated DA, reserved for Citizen holders
Starting price: x ETH
Resting price: x-C ETH
Start time: 13:00
End time: 14:00
Tokens sold: 40

Stage 3: Fixed price sale to raffle winners
Fixed price: 1/2 resting DA floor
Start time: 14:00
End time: 15:00
Max tokens sold: 10

This sequence means that the first DA is the one with the most liquidity and therefore has the best chance of “true” price discovery. The CC auction benefits from the price discovery in Round 1 and participants have fewer competitors so the resting price may go lower (although it shouldn’t fall much lower than the resting of the first DA, otherwise you would expect to see someone take advantage of the arbitrage opportunity).

Finally, those who won the raffle have a nice relaxed “pay to claim” window for n days, after which it goes to people on the waitlist.

1 Like

Another idea, based on a conversation with @patrickamadon:

  1. A Dutch auction with a refund
  2. A fixed price auction at the DA sellout price, where participation is determined by tipping $CTZN

Dutch auction w/ refund
Starting price: x ETH
Resting price: x-C ETH
Price paid by all participants: Resting price
Start time: 12:00
End time: 13:00
Tokens sold: 50
Eligibility criteria: Public

Fixed price with tipping
Price: Dutch auction resting price
Time: 24 hours
Tokens sold: 50
Queue: Order determined by Auction denominated in $CTZN, top 50 are able to purchase at DA resting price

1 Like