Cointime

Download App
iOS & Android

BasePaint

“This is the most fun I had onchain in a long time”— creators and users of BasePaint.

Let me tell you a story about building BasePaint, a collaborative pixel art project that is unlike what you typically see in the crypto space.

I’ve been writing this post for the last 100 days and did my best to make sure it’s not too boring. Buckle up and consider minting!

BasePaint

Inspired by /r/Place & The Million Dollar Homepage

I remember the first time I saw the source code for an NFT smart contract. My mind was absolutely blown away. I felt like a teenager again, discovering my first computer in the 90s. And while everyone during the 2021 NFT summer was obsessed with floor prices, I just couldn’t get over how awesome and fundamentally different Ethereum was.

I needed to build something for it. A crypto-native project that would exercise all the awesome capabilities this system provided.

The idea of an app similar to Reddit’s The Place or The Million Dollar Homepage was just out there. Crypto was the perfect vehicle for it.

Around November 2021 I registered 1mpx.xyz domain for it. I spent several months building it out. Sleepless nights writing Solidity code that would render a BMP onchain.

Early Figma prototypes for BasePaint's great-grandfather

But despite technical advancements, I still had no answer to the two most important questions: “Why would someone participate in this?” and “How to make the canvas look nice?”. You see, most /r/Place and TMDH clones end up looking like this or this — random incoherent squiggles on the surface and ponzies under the hood to drive adoption.

Onchain Summer Call

One day scrolling Farcaster feed I stumbled upon Base and their call for Onchain Summer. Coinbase is making its own L2 (based on the OP stack) and it needs apps.

I assumed tens of thousands of Coinbase users would come to web3 looking for things to do onchain. I wanted there to be an app that is not about trading coins or minting commemorative NFTs. Something actually fun to do onchain.

I also knew that if we had a fun project, Coinbase, and their partners would help us promote it. I’m very familiar with the pain of crypto-marketing. Base’s promise of support made me pull the trigger on starting this project.

This was the perfect opportunity to revive the 1MPX idea. However, I knew I wouldn’t be able to pull this off by myself.

Meet Zach

I really love building in the open. Tweeting about my projects has been a huge source of energy and inspiration for me. But the most powerful thing about building in the open is that it allows me to meet like-minded people.

I met Zach about a year ago — he found one of my project ideas kind of interesting and volunteered to help out with the designs. I really loved jamming on it with Zach in Figma. That feeling when two brains multiply each other.

This time, I was also super lucky because Zach was kind of in a similar mind-space thinking about /r/Place and the fun application of crypto. Together, we shaped and refined the ideas into a fun and engaging product.

From idea to production in less than 2 weeks

When we started, the Base launch was about 2 weeks away.

We took the 1mpx idea as the starting point. Inspiration also came from old Gameboy consoles, Teenage Engineering, Mario, Final Fantasy, DuoLinguo, Nouns, and many other products.

We quickly abandoned the idea of “tile ownership” — it motivates the behavior of hoarding tiles without making nice art. The VRGDA auctions were also axed to make the product more appealing to web3-noobs. We also skipped DAOs and treasuries, it was much simpler to directly distribute the profits to the artists.

BasePaint's idea board

Then we narrowed down the wide space of ideas to core mechanics. We wanted people to come to the project to make art, ideally every day. We also wanted to give people a way to make money from the art they make. Pixel art was the easiest — most people are already familiar with it, it provides a nice set of constraints but can also look very nice.

But we also knew that you can’t just open up the canvas to everyone, otherwise, you’ll end up with a terrible mess. So we came up with the idea of brushes — people will need a brush to participate. We’d control the flow of brushes to make sure it’s divided by regular folks and artists.

Base launch was looming and we didn’t have much time. We had to trim down the scope. E.g. one of the core ideas was a “continuous canvas”, every day it would grow in one direction and make it all feel like a single piece of artwork.

Zach really wanted BasePaint to have live cursors and a chat on the side (kind of like Twitch). But he also knew that these features tend to be complicated and marked them on a wishlist. I took it as a challenge and squeezed chat and live cursors into the earliest version of the product.

I’m so glad we launched with both chat and live cursors on day 1. These features really make BasePaint feel like a “place”, somewhere you can go to and feel it’s alive, with people working on art and talking at the same time. Discord wouldn’t have been the same.

We also iterated on tokenomics. The goal was to make minting and painting very accessible, while also retaining some degree of scarcity and future value. The brush costs only 0.0026 ETH (~$5), a flat price without curves or other complexities. Every day, the created canvas goes on sale for 0.0026 ETH (~$5) as an Open Edition. This means anyone can mint the artwork they like, but once the day is over, the supply of that piece is limited forever.

By the end of 2 weeks, we had something like this:

BasePaint v0.1

Solving the Cold Start Problem

BasePaint is kind of a two-sided marketplace — you have artists who create the artwork and the collectors who pay for it. Typically, it’s very hard to bootstrap, especially in crypto, without using wild speculation incentives.

The good news was that Base promised to give us the initial boost of awareness and legitimacy. We knew this would drive the demand side of minting for at least a day or two.

Now we needed to find artists. Our testnet launch 2 days prior confirmed our fear — when left unchecked, people will simply resort to drawing their names and dick pictures.

Zach and I reached out to our friends and friends-of-friends. We also prowled dozens of Discord servers of pixel-art-related communities, DM’ed a bunch of pixel artists we loved on Twitter. Most of our calls remained unanswered, but fortunately for us, we found a group of people who really loved the project idea and gave us a shot.

A few days after launch, it was clear that our engine was working. Early artists were earning thousands of dollars, and we had a steady stream of minters.

But most important of all — the artwork looked stunning. Really, really, really beautiful.

Getting addicted to BasePaint

For the last 100+ days, the first thing I check on my phone is not Twitter, Farcaster, or Hacker News. It’s BasePaint. And it’s not a coincidence, we designed it this way.

BasePaint has this nice core loop where you paint on day 1, return to mint the final canvas on day 2, and then come back again on day 3 to claim your earnings.

We designed BasePaint to have many addictive loops. Another one is for new users. Anyone can come in and paint anything without even connecting a wallet. To save, they just need to wait a little bit until the next brush mint. As they are waiting, they also see other people’s cursors come to the canvas, click around, and a few minutes later a new piece of art appears. They also see the live chat they can participate in. BasePaint feels like a lively place where they can just hang out during the day.

Themes was not part of the original idea of BasePaint. We just noticed that it’s very hard for artists to draw something on a blank canvas without any prompt. So ad-hoc on the launch day we’ve added support for a custom little title that appears on top of the canvas — it really helped rally everyone’s contributions into a cohesive picture. On Day 2 we realized that reusing the same palette would make everything look too similar, so I hacked together a way to change the palette each day.

Growth, partnerships, and bots

Unsurprisingly, the number of mints after day 1 dropped significantly.

Surprisingly, after dropping it started rising again.

The thing that helped us most with the growth was partnerships. Coinbase introduced us to the folks behind Pixelmon Kevin and they promised to promote our tweets if we had a “Pixelmon Kevin” day. The artwork turned out to be really cool, and through this partnership, we also managed to get BasePaint in front of new people.

Since then, we’ve partnered with Lens, PartyDAO, @songadayman, Blitkin, and Nouns! We’ve also had “permissionless” themes for Jack Butcher, XCOPY, Pepe, and many others, which brought even more people to BasePaint.

We are also experimenting with a referral program, courtesy of ChainVine. Anyone can sign up to become BasePaint’s ambassador by filling out a form and they can earn up to 100% of BasePaint’s protocol fee.

With the growth and success came the bots. They found a way to snipe brushes as these were minted, and automated spam the canvas with random pixels. We’ve built moderation tools to help fight that, but it’s a constant arms race.

One of our moderation tools

Under the hood: Solidity, NextJS, Ponder

At first, I iterated on BasePaint without smart contracts. I knew that if we got the UX right, I’d be able to write a smart contract for it.

For the pixel editing experience, I was able to pull together scrapes from 1MPX. It has some smarts like the undo history, keyboard shortcuts, and storing in-progress painting to localStorage.

The rest of the web app is pretty conventional — I used NextJS, ConnectKit, tRPC, Prisma, Tailwind, viem and wagmi.

The core of BasePaint is 2 smart contracts written in Solidity: BasePaint (ERC1155 of artwork) and BasePaint Brush (ERC721 of brushes). My only regret here is not making the smart contract upgradeable — I wish I could add support for delegation and limit the ability for bots to sell brushes on marketplaces.

The most interesting bit is probably Brush minting, it uses EIP-712 signatures controlled from our server, so we can change the rules of who can mint brushes and when. E.g. the 1 brush per hour rule is implemented by using a timestamp-based nonce in signatures. Whoever uses it first, gets the brush for that hour, but the brush is not created if nobody mints it.

This time I used something different for backend indexing. Ponder is a great little indexing framework. It was super easy to get started: just write a function that given an event from the smart contract creates/updates entities in its database. Long term, however, it turned into a source of pain — because indexing is linear, every time I make a change now it has to re-index everything, which takes up to an hour. Good problem to have.

Building on web3

BasePaint is truly a type of product that I think wouldn’t exist without web3. I wouldn’t even consider building it on the conventional payments tech.

  1. Payments. It’s super easy to send and receive ETH via smart contracts. The core of BasePaint’s payment system is just a few lines of code.
  2. Trustless. I can’t cheat the artists out of their profit share even if I wanted to. All smart contracts are verified and open source, so anyone can take a look and make the decision to participate on their own.
  3. Permissionless and composable. Anyone can build on top of these smart contracts. E.g. BasePaint Bot is a service that allows anyone to subscribe to BasePaint artwork, and they can do it without any sort of “API" keys” or permission from us.
  4. NFTs. It's a truly unique thing that doesn’t exist on web2. Nobody in their right mind would pay $$ for a jpeg file you can simply right-click-save. But the ownership info is worth something. Most trading apps and wallets support showing your NFTs, so we didn’t have to re-invent a way to view your purchased art gallery.
  5. Accounts. We use ENS to show user accounts throughout the app (chat, voting, leaderboards, etc.), so we don’t have to re-implement user identity in any way. We use “Sign In With Ethereum” to manage user sessions and authenticate their votes.

Pragmatically, web3 is really a great tool for implementing apps like BasePaint.

Building on Base

I’m very, very deep into Ethereum. I’ve invested a lot of time in learning the tools and I feel super productive in this ecosystem. I briefly considered building the previous version of BasePaint on Solana or Tezos, but that felt like a distraction.

But Ethereum mainnet is also not a great place for an app like BasePaint. “Would you like to place these 20 silly pixels for $3.74?”

It was clear that this sort of app requires a cheap and fast L2. But which one? Before BasePaint, I spent a lot of time thinking about which Ethereum-based blockchain to go for. Anything we’d pick that’s not mainnet carries with it its own onboarding cost — we need to educate the users on how to bridge, how to pay for gas, etc. Fortunately, with Base, our launch strategy depended on Base, and the Base team made sure people had smooth onboarding to their L2.

On the development experience side, the Base team has done a great job at integrating the new L2 in all the tools you’d expect. OpenSea, Etherscan, Viem, Ethers, wagmi, and Foundry — all have first-class support for Base. These are little things and technically just a configuration of (chain ID, RPC URL), but I imagine it must have been a lot of work making this experience seamless and partnerships sorted out.

Of course, none of this would have been possible without the OP stack. We are standing on the shoulders of giants.

Surprises

As of today, BasePaint has distributed over 190 ETH ($389,562) to artists. In the middle of crypto winter. With zero ponzinomics. This is still crazy to me.

BasePaint ended up leading the charts of NFT projects on Base. We have been listed among the most used dApps.

BasePaint in the OpenSea top collections on Base

The quality of the artwork has been nothing short of sublime. I’m blown away every time I visit the gallery — and it only seems to be getting better.

Just a few random canvases. There are literally 100 more!

Dudly, one of the OG BasePaint artists has noticed that every day we post a timelapse of the canvas creation process. So he abused that to create an animation. Animation! Totally unexpected and delightful to discover (watch the eye from 0:08 on the video below).

This was so successful that we even experimented with having animation as the theme. It turned out quite nicely, drag the slider around here.

Speaking of fun things, sometimes we run some fun experiments to spice things up for the artists. There was a day when the palette was reduced to only 2 colors, or when only 100px brushes could paint yellow, or splitting artists into Red and Blue teams, or having a live music concert while people were painting.

Experiments

One of our canvases end up on Times Square

The community has come up with many great physical projects, e.g. you can get swag on Perk Shop, or super high-quality prints of your collected canvases on Redlion Printer.

This Dune dashboard uses onchain events from BasePaint and scatterplot to make art.

sammybauch.eth and backseats.eth made BasePaint Bot that auto-mints artwork as it comes out.

You can tell this Thanksgiving BasePaint was pretty high on my list of things to be grateful for. Honored to be part of this community 🫡

When DAO?

After launch, we got bombarded with this type of questions. But we also know that coordinating large groups of humans is a very hard problem, and it’s not the problem we need to solve just yet.

BasePaint is currently ruled by the benevolent dictatorship regime of w1nt3r and zherring. This allows us to make some unpopular decisions in the name of the greater good. We are careful to not break the delicate balance of skill and accessibility. We could probably make a ton of money selling brushes to everyone on some crazy bonding curve, but the ethos of our project is not that. BasePaint is about making great art where everyone who’s interested enough can contribute.

We are slowly giving away control though. We used to pick theme names ourselves, but then we decided to give this power to the people who hold BasePaint artworks. We started with a Prop House, then moved the voting into the BasePaint app itself (using quadratic voting).

The next theme will most likely be "Arcade"

Underpromise, overdeliver

Here’s a thing that served us really well so far — we try to never overpromise. We’ve been burned by so many crypto projects of the last several years that had these ambitious roadmaps, only to fall short and become irrelevant.

Instead, we choose to experiment and focus on things we believe in. BasePaint is an island of wholesomeness in the crypto world. We love this side of crypto — creative, fun, permissionless.

Comments

All Comments

Recommended for you

  • New York Attorney General Reaches $2 Billion Settlement with Genesis

    Letitia James, the New York Attorney General, announced a $2 billion settlement agreement with bankrupt cryptocurrency lending platform Genesis, which will help maximize compensation for investors. As Genesis had previously declared bankruptcy, the settlement agreement requires review and approval by a bankruptcy court. The settlement agreement will establish a victim fund to assist defrauded investors, including at least 29,000 New Yorkers who contributed over $1.1 billion to Genesis through Gemini Earn investments. Additionally, the settlement agreement prohibits Genesis from operating in New York. This is the largest settlement agreement in New York history against a cryptocurrency company.

  • Uniswap Labs and Across Protocol collaborate to propose a new cross-chain intent standard ERC-7683

    According to official sources, Uniswap Labs and Across Protocol have proposed a new cross-chain intent standard, ERC-7683, and established a unified framework for specifying cross-chain operations based on intent. This standard allows for the implementation of a standard API for cross-chain transaction execution systems. The standard provides a common CrossChainOrder structure and a standard ISettlementContract smart contract interface.

  • Nigeria's Securities Regulator: Global Cryptocurrency Exchanges Have Delisted Naira

    The Nigerian securities regulator recently stated that global cryptocurrency exchanges have complied with its directive to delist Naira from their respective P2P platforms. The US SEC cited Kucoin's recent announcement of Naira's delisting and related services as evidence supporting its claims. The acting director of the Nigerian Securities and Exchange Commission called on platforms engaged in activities that harm national interests to stop such activities.

  • Gnosis Price Rises 20% After Thanefield Capital's $30M Token Buyback Offer

    The crypto fund Thanefield Capital has proposed a buyback plan for the Gnosis DAO native token. The proposal aims to deploy $30 million for regular token buybacks within six months. Gnosis co-founder Martin Köppelmann supports the proposal but warns that buybacks should be tied to growth plans. Since the proposal went live, Gnosis' price has risen by over 20%, reaching a high of $320, and is now trading at $308.

  • Nigerian court denies bail request for Binance chief Tigran Gambaryan

    A Nigerian court has rejected the bail application of Tigran Gambaryan, the compliance chief of Binance Finance. Judge Emeka Nwite believes that if the Binance executive's application is approved, he may not continue to appear in court. A Binance spokesperson expressed disappointment and sadness at the ruling. The court will adjourn for cross-examination on May 23.

  • ICBC: Hong Kong subsidiary has built a complete service system including the redemption, circulation and redemption of digital RMB

    Industrial and Commercial Bank of China (ICBC) has officially announced that its overseas subsidiary, ICBC (Asia) located in Hong Kong, has built a complete service system for digital renminbi exchange, circulation, and redemption. At the same time, ICBC Asia has launched a digital renminbi experience activity for local individual customers in Hong Kong.

  • The transaction volume of 6 Hong Kong virtual asset ETFs today was HK$26.1102 million

    According to Hong Kong stock market data, as of the close of trading, the turnover of 6 Hong Kong virtual asset ETFs today was HKD 26.11 million, including:

  • Cointime's Evening Highlights for May 19th

    1.US spot Bitcoin ETFs saw net inflows of $948.3 million this week

  • CryptoPunks Launches “Super Punk World” Digital Avatar Series

    Blue-chip NFT project CryptoPunks announced the launch of "Super Punk World" on X platform, which is the project's first release of 500 digital avatars inspired by the iconic CryptoPunks features and combined with Super Cool World attributes. It is reported that the series may launch auctions in the future, and more details about the collection and auction of this series will be announced soon.

  • OKX Ventures invests in Web3 ‘play ARPG to train AI’ game Blade of God X

    The game is currently available in early access on the Epic Games Store.