A few months ago, I accepted a side challenge by a friend who wanted to do an NFT experiment called “The Sph3res” (pronounced: “The Spheres”).
The man behind Sph3res was extremely active and passionate about the “ASH” ecosystem (created by the artist Pak) and wanted to launch his own project in this creative space.
However he had a few problems: he had launched the initial project anonymously, so nobody knew who he was, he had no community, no financial power, and had never done an NFT project before. Actually, all of those are criteria that often apply to people who want to launch something around NFTs.
Together we came up with a mint concept (and a corresponding ERC-721 smart contract) that:
- Is fair (100% distributed)
- Has no gas wars
- Is a community starter
We named the concept “Share to mint”, and joked around calling it “Proof of Community”.
Even though we were not the first people to invent similar methods, I do believe it’s an interesting and underrated way to launch NFTs if one wants to bring new people into a project. It’s also an interesting Solidity Smart Contract case study.
This article is a short summary of our learnings.
The verified “Share to mint” Smart Contract of the Sph3res can be found here.
Please note that there are many different ways you can implement this concept for your own project. Our contract has a few particularities that may (or may not) need to be changed if you decide to copy it.
What is “Share to mint”?
Share to mint basically means:
You can only mint an NFT for somebody else.
Thanks to this subtle difference, this mint incentivizes people to actually talk to each other, connect and finally bootstrap a distributed community of individual NFT holders.
With “The Sph3res”, we implemented the following minting method:
If you receive an NFT from the sph3res collection through a dedicated “Share” function, then you can share this sph3re with a friend (or: another wallet). This friend can then share it with another friend, and so on, creating a chain or list of people that are connected through the NFTs they’ve minted.
Where most NFT projects charge a mint fee, “Share to mint” asks for a share fee. This means that the person who mints the NFT basically pays the fees for somebody else. With Sph3res being a project in the ASH Ecosystem, we decided to let people mint in either ETH (0.05ETH) or ASH (5 ASH).
Due to price volatility, minting using ASH is currently much cheaper than minting with ETH. Network gas fees always need to be paid with ETH.
Smart Contract Design
The minting function itself is different than with traditional mints. Instead of the message sender being defined as the receiver of the mint, a receiver is manually defined as the target by the message sender.
With “The Sph3res” there are 2 functions capable of minting and thus creating new NFTs: shareSphere (mint using ETH) and shareSphereWithAsh (mint using ASH). Both can only be triggered by someone who currently holds a shareable sph3re. The receiver address and the sph3re that is used for sharing are passed as parameters. After the sharing is finished, this sph3re becomes “frozen” and thus unshareable.
Furthermore, with the sph3res, every NFT has additional on-chain properties, like the “name” (team) and a boolean value isOrigin that defines whether this sph3re was minted as origin sph3re.
We decided to go with a maximum supply of 1024 sph3res, but of course, such a maximum is not mandatory. Theoretically, the NFTs could also be minted/shared forever.
This is, by the way, the idea behind a project called “The Worm” whose programmers claim to be the inventors of a “Share to mint” version. Their minting method is programmed differently than ours: they have bound the minting to the “transfer” function, meaning that each time “The Worm” is transferred from one wallet to another, a new worm is created.
Finally, if you want to guarantee a fairly distributed launch, it is important that the smart contract prohibits the sharing of sph3res with wallets that have already received a sph3re before. If this is not prohibited, a person could create an “infinite” amount of NFTs by sharing them between his own wallets back and forth.
We have implemented this protection through a mapping that kept track of every wallet that received a shared sph3re. Note that this doesn’t prevent buying or transferring sph3res on the secondary market, it only prevents minting.
Where to start?
One of the coolest parts of the sph3res kick-off performance was the creation of teams and the mindboggling reflections surrounding them.
The original sph3res (“origin sph3res”) that started the chains came into existence through a whitelisted mint for holders of the original “Spheres of Ash” NFT. These creators were able to give names to their sph3res and thus they could also team up. For example, if 2 “Spheres of Ash” holders decided to assign the exact same name to their “Origin Sph3res”, they had effectively formed a team. There were 21 “Spheres of Ash”, and every holder got whitelisted to mint 2 “Origin Sph3res” resulting in 42 origins.
Through a dedicated leaderboard and a getSpheresPerName() function in the contract, we were now able to track which team had spawned the most sph3res.
The initial drop of original NFTs that kick off the chains is quite important. For us, it mattered that there was a decent amount of origins available so that a relevant amount of new NFTs could be created at any time. We also put in place a board that would display all the shareable sph3res. Using this board, people could identify holders and dormant sph3res. The board is available here on the sph3res website.
After the origin mint is over, growth will only be linear for each chain. Therefore the amount of Origin NFTs matters and needs to be thought through.
We quickly learned that keeping individual chains running is tedious work. People will forget about their sph3re or will simply not manage to do the mint (because they don’t know how to use a wallet for example). Reminders need to be sent out and still, it can happen that individual sph3res will arrive with a person that simply doesn’t care, although he/she seemed to be excited to be on board.
One may argue that this is the biggest weakness of this system. If the original amount or the amount of individual chains or lists is too small it can heavily influence the evolution of the project and result in stagnation. However one needs to keep in mind that this parameter also heavily influences the gamification aspect of the entire performance. It’s basically part of the experience and the reason why community is so important in this idea.
Because this mint is community-driven and requires a higher amount of time and effort to execute, minting eventually slows down at exponential speed. At the beginning of the project, the most hyped people are on board and are trying to create as many NFTs for their team as possible. As soon as the hype calms down, actual community building starts, reminders need to be sent, new people need to be coached, etc.
Distribution and Fair Launch
A known problem for an NFT project can be the centralization of power in some wallets. For example, a 10’000 piece project will end up being minted by only 2000 wallets. Projects that use stealth minting or pre-seed/whitelist rounds end up excluding many potential investors by allowing them to mint multiple NFTs to the same wallet.
“Share to mint” basically guarantees a 100% distributed launch. The only way this can be circumvented is when a minter creates multiple wallets and mints new NFTs to these wallets. Technically the mint distribution is still 100%, but the wallets would be owned by the same people.
This is of course behavior that we have observed with the sph3res as well, however not excessively. It’s also not trivial and not cheap to do, because every new wallet would need to pay additional gas fees for token approvals etc.
Due to the gamification aspects of the project (Creating teams, making lists, contacting new people, etc.) a community almost grows organically. As with almost any NFT project, most activities for us happened on Discord servers (ASH Nation, NFT Siblings, etc.) where people coordinated their team efforts and new people came in to ask for their own sph3re.
People created Excel files and made lists to coordinate their minting efforts and were contemplating their team strategies. All of this was a lot of fun for us to observe.
Finally, like with many NFT projects, “Share to mint” is just another canvas.
It has many variables and can be scaled to many dimensions.
It’s a slow mint that gives enough time to build and adapt the roadmap to the community’s wishes. In fact, it forces community behavior — thus our joke “Proof of Community”.
A final interesting observation for our particular case: minting significantly slowed down at around ⅓ of the available supply.
We are currently preparing for the next cycle of the project and are confident that minting will resume slowly once the next steps are finally revealed.