Someone on Discord asked why we choose to go with Ethereum mainnet for @watchfacesworld NFT instead of an L2. Here's our thinking process on this…
We want to make Watchfaces last forever. The kind of antique rare physical timepieces that represent the times they were crafted in.
It's fully on-chain and will be alive for as long as Ethereum is alive. No external dependencies, no servers, no IPFS.
We don't have any plans to have active on-chain utility (like some games or art projects) that would require many transactions and would benefit from being on L2. Thus, the main benefit (as I see it) of L2 would be a cheaper deployment cost. Currently, we estimate to spend 1.5Ξ…
…to deploy Watchfaces and we think it's well worth it. We bet Ethereum will last at least 100 years.
There's also no clear L2 winner yet. The oldest projects are just a few years old and it's clear they will get replaced by newer tech (zk). L2s are also being started in a semi-centralized way with a promise and a path to being decentralized.
I do, however, keep an eye on L2s and have a few project ideas that are going to fit well there.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Should you build a minting pass for your upcoming NFT project? I definitely recommend you do! It’s actually super simple, and I’ve learned a lot when building one for @watchfacesworld.
Here are 3 principles I want to share, a few bonus tips, and a code sample ↓
First, what is a minting pass?
It's a simple NFT token that gives the holder access to private minting. They became very popular lately, esp. for high-profile projects to help alleviate gas wars and frustrations.
But minting passes can be useful for every upcoming NFT project
Principle 1: Minting pass is a relationship.
When someone says your project is cool, it's inspiring, but means very little.
When someone buys a pass for your project, it's a strong signal that they are interested. Ask them how they found you, give them special perks.
Best practices when handing payments 💸 in NFT contracts #solidity ↓
Pull, don't push.
* If you forward ether payments from your mint function, it makes minting more expensive.
* If your contract gets some Ether without triggering the mint function, these funds will be lost forever.
Instead, make a function that transfers you the full balance.
Note that the withdrawAll function isn't marked as onlyOwner. Anyone can call it. This lets you set up automation (e.g. via Infura or OZ defender) that doesn't depend on your private keys.