Announcing the Crecodiles Mint: Timeline, Mechanics, and More.

Creco
CreCo XYZ
Published in
10 min readApr 13, 2022

Crecodile NFTs will have on-chain metadata. If you are still wondering what this is and why it is important check out our last in-depth write up:

Having on-chain metadata poses an interesting challenge for the crecodiles mint: how can we ensure that everyone mints the DNA (attribute metadata) for their crecodile and only theirs? How can we ensure a fair distribution? How can we avoid leaked metadata?

These are just some of the important questions we will look at in this post.

Tickets are Sold Out! Read how to get tickets

Pre-sale

Our pre-sale was completely handled by DUST which is the name of our community points or “soft currency” and eponymous for our internal ticketing system. DUST is currently not an ERC20 and cannot be traded or bought. In the future, we will release a post detailing how DUST works and why it is an awesome anti-bot, reputation and allowlist (=”whitelist”) system and why crocs go deep into the mines below Crecoland to find it.

The mysterious “popcorn attendant” aka “ticket guy”

Our ticket shop opened 27 times over the course of two months to distribute pre-sale tickets. The first shop had 1500(!) tickets and the first ticket price was 1k DUST for a reserved mint and 5k DUST for a reserved free mint. DUST was initially only available to those who were very early in the server, participated and helped to build and strengthen the core community.

The first ticket shop

Members had competing strategies during this time to e.g. save DUST and not spend all on tickets; or optimize ticket quantity over the ETH spent on mints…

DUST rewards for our frens

More than 20 unlocked and DUST-eligible ecosystems and over 6,000 community members later, the ticket price increased to 7,500 DUST for a simple reserved mint. The shortest time for 300 tickets to sell out (with a 1 ticket per person cap) was 9.5 seconds!! 🎉🎉🎉

Standing in line for the Crecoland tickets

On-chain metadata

Token IDs are strongly associated with trait data (DNA)

Contrary to regular ERC721 metadata, our tokens are strongly associated with their metadata and not weakly linked through a URL This means we can not easily “fix” metadata by pointing to a different IPFS directory or change the API after the mint. We will create the token and write the metadata at the same time in one transaction. At this point everything has to be final, tested and “just work” — like the blockchain it’s running on.

DNA should exist exactly once and be associated with exactly one token- we don’t want identical crocs 🥲. All crocs should have metadata — we don’t want unrevealed placeholders. 🔜

Mint Mechanic

Based on demand during pre-mint events and lessons learned from over 6k tickets claimed, we are facing two seemingly contradicting challenges for the mint:

  1. Members who do not mint their tickets
  2. Competition during a public or unrestricted mint where demand exceeds supply by orders of magnitude

What if someone does not mint?

While we believe that everyone who stuck with us over the last months (and mined ⛏️ DUST every two hours) is even more engaged and excited by now, there is no guarantee we achieve a frictionless ticket-to-mint conversion.

If someone has three reserved spots but decides to only mint two tickets it is not just bad because it means a new member couldn’t get a ticket but also causes fragmented data.

Members requesting metadata chunks in advance of the mint

Before someone mints, they request metadata from our API. Since we don’t have a token ID at this moment, we assign each ticket a unique identifier and DNA in advance in our DUST system to achieve an order. Note that traditional drops often achieve the token<-> metadata association through file names based on token IDs.. 🥴

Directory containing unrevealed metadata for Meebits

With this assignment we can ensure that minters always receive the same metadata for their tickets. This is critical to avoid concurrency problems and bad actors who could try to fetch metadata for all tickets, crack the DNA and derive a rarity distribution in advance.

If members do not mint we will have to re-assign their metadata to someone else. We need clearly defined timeouts when this is, to avoid having to oversubscribe our tickets and letting people fail purposefully during mint of “reserved” spots just to achieve 100% coverage without fragmentation.

Many projects “over-allocate” to make sure they mint out even if only 60% of ticket holders mint

What if during a public mint many compete for a few spots?

Getting the 7500 DUST necessary, waking up at 5am on a Saturday to claim a ticket within 1 minute or less has been a huge hurdle and filter…

Quick search for “5am”…

As soon as extra barriers and filters like the 7500 DUST balance are removed and the first mint trackers send out smart money alerts, public mints can easily exceed even large 6k ticket pre-registrations and demand can double and triple in a matter of hours or even minutes.

This can create the following mint challenges and strategies:

DNA assigned 1x — queue and wait

Imagine all but one crecodiles are minted: five people want to mint the last one simultaneously and request the metadata. Our DUST system assigns the first requester the DNA, all others are sent away (queued) with an optimistic “sold out” message. Unfortunately, the first person in all excitement slips over the power cord and does not mint.

In this scenario DUST needs to track the progress of transactions and decide when a pending transaction is “invalid”. Moreover, it would have to notify the 2nd person in queue and get them back to mint (“Hey, earlier we said ‘sold out’.. but now we actually think you can still mint! Just be careful there are pending transactions and if they are sped-up and confirmed your tx (transaction) will fail with duplicated DNA which is expensive”). Not the way to go 👎

Green light, red light

Same DNA assigned 100x — “gas war”

The alternative is “gas war”: everyone can mint, nobody is sent away or kept in queue and whoever guesses the best gas amount and submits faster than the others wins… everyone else gets an expensive failed transaction. As mentioned before we have the additional problem that the tx will fail 1. when the max supply is reached AND 2. if two people try to mint the same metadata / DNA simultaneously. Which means we should never give two people the same metadata ever or we would have even more failed transactions compared to a regular drop. 👎

Concurrency and high demand: “which address looks like they really mint and are also the fastest?” 🏃‍♀️💨

This problem is amplified because we don’t speak about just one remaining ticket but potentially hundreds or thousands of tickets in a public mint and many, many more people. At this point our system would be worse than the status quo — with more failed and more expensive failed transactions and gas war. And we would run into some hard and impossible CS scheduling problems like whom to give which DNA, in which order to optimize for best on-chain metadata coverage and least failed transactions.

Auctions 🔨

One way to work with demand are (dutch) auctions. But this can easily price out many members who were engaged and love and support the project and still lead to gas wars.

On-chain generation: ⛓️

A potential way out of the pre-assignment dilemma is to provide significantly more DNA aka crecodiles than supply, so that the system does not have to worry about failed or pending transactions and we can eliminate double-DNA failures by assigning everyone unique random metadata. This way we are back to “just” regular failing transactions due to max supply and bad parameters.

Generation can be in form of on-chain randomness and on the fly generation of crecodiles — many other on-chain projects have taken this path (see previous post). But in this scenario we lose the curation element and become vulnerable to randomness attacks: “mint & revert until rare”.

Or we hand-create, curate and throw away potentially hundreds of hours of (un-minted) work and would still be left with a gas war and expensive failed transactions (complexity of mint logic affects price for failed tx).

Crecodiles want their cake and eat it too 🥮🐊

For our drop we wanted to have a curated collection just like other high quality off-chain collections. We also wanted to avoid gas war and minimize failed transactions and the costs of failed transactions. We also ditched our initial plan to have a commit-reveal scheme in two transactions to maintain an incentive model where nobody “pretend-opts-out” after the first mint transaction thereby forcing us to reveal for them.

Crecodile Mint

Based on above considerations, the Crecodiles mint will be split in 3 phases.

  1. Allowlist I — 21 April 2022: 4k mints
  2. Allowlist II — 25 April 2022
  3. Free mint — 26 April 2022

Allowlist I:

The mint ceremony will start today by converting the ticket balance into activated tickets with associated crecodile DNA. The activation will be announced and happen on our Discord server: discord.gg/creco

During this phase members will have to decide if they want to mint 1, 2, 3 or 4 tickets of all allowlist tickets they own. If they claimed more tickets than they actually want they can opt-out at this point and remaining tickets are re-distributed to other (new) members before Phase II. There is no DUST refund. This way we kill two birds with one stone: we get a first conversion rate estimation and free up a surplus of tickets we can re-distribute to new members who are waiting and never had the chance on a ticket.

If someone doesn’t want to mint at all, they don’t have to participate and tickets are automatically voided when the Phase I mint starts on the 21st of April. Phase I registration will be “first come first served” (FCFS): if someone registers late and is not within the first 4k mints, they will have to wait for Phase II until they can mint. However, members will have multiple days to activate their tickets.

Example:

Dr. P. Crocstein’s terminal can link your tickets to DNA

In the example above someone reserved 6 ticket for themselves (4 allowlist and 2 free mints). During Phase I registration they have to activate 4 tickets and mint them at full mint price in Phase I to unlock their free mints in Phase III. If they only want to mint one ticket they can do this but all other remaining reserved mints (free or regular) will be re-distributed. If they activate 4 tickets and try to mint 2 it will fail.

Participation in Phase I will grant the “🧬 DNA activated” role.

Allowlist II:

Between Phase I and Phase II there will be a short break to re-distribute voided tickets from Phase I and also de-fragment and re-assign DNA to tickets.

In Phase II members can activate and mint all remaining allowlist tickets. Everyone with tickets left and the “DNA activated” role, plus members who claimed one of the voided and re-distributed tickets from Phase I will be able to mint. For those who never got a ticket before, this will be the chance to receive left-over tickets!

Free Mint:

Only after Phase I and II are complete, we unlock the free mints and team mints as this common best practice and usually demanded as a “protection mechanism” to avoid a situation where paid mint costs are offset with free mints.

Team and Treasury:

The team has an allocation of up to 10 tickets per team member. Moreover, the creco treasury will hold 500 NFTs and can increase the treasury with tokens remaining after Phase III. These NFTs will be used e.g. to reward outstanding community members and strengthen partnerships and future collaborations.

Reveal and gaming the mint

To avoid pre-reveal “metadata leaks” the token to DNA association is randomly shifted on-chain during reveal.

This means:

  1. We could under no circumstances assign team members rare tokens in advance.
  2. Nobody can “snipe” rare tokens pre-reveal by looking at on-chain data.

It will be possible to derive rarity distributions pre-reveal. However, there will be no strong advantage due to time between each phase and information being available to everyone pretty much simultaneously.

Example:

Person A mints token ID 20 with the following DNA 0000000000000001. A smart trader B analyzing the mint events might not know what this DNA means but can already guess it is a “one-traiter” or something that at least looks rare and much different to other tokens. Person A lists their unrevealed NFT not-knowing what it is for 10x mint price. Trader B, believing to have found a good deal, buys token 20. During reveal a random offset of 89238 is generated and token 20 is now associated with DNA at position 358. The eager trader did not get the “naked crecodile” they were hoping for.

How do you make sure people mint only what they have in tickets?

All arguments coming from the DUST system are signed by digital signature algorithm (ECDSA) and will be verified by the minter contract on-chain. It will be impossible to mint the same tickets twice, mint a different DNA or mint more NFTs than tickets.

We hope you liked this and are as excited for the mint as we are! Follow our publication on medium: https://medium.com/creco-xyz

And our twitter: https://twitter.com/creco_xyz for more content and give this article (50x) claps 👏 :D

Go crecodiles! 🐊🐊🐊

--

--