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

  • Cointime's Evening Highlights for May 19th

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

  • This year, there have been more than 90 Bitcoin ecosystem-related financings

    There have been more than 90 financing transactions related to the Bitcoin ecosystem since 2024, setting a new record for the highest number of financing transactions in a single year in Bitcoin's history. Kyle Samani, Managing Partner at Multicoin Capital, pointed out that with the emergence of the Bitcoin Taproot upgrade and the Ordinals protocol, the Bitcoin ecosystem is experiencing a "developer renaissance". For some developers, building financial tools on Bitcoin is more attractive because it is the oldest and most secure blockchain. Multicoin Capital's investment trend is reportedly shifting from Solana to the Bitcoin ecosystem. The venture capital firm has invested in projects such as Solana Labs and StarkWare, but recently participated in the funding of the Bitcoin-native music platform Arch Network and the Bitcoin scaling network Mezo.

  • $1.911 billion worth of SOL transferred

    According to Whale Alert monitoring, 11,040,253 SOL (US $1,911,291,365) was transferred from an unknown wallet to another unknown wallet.

  • DeFi TVL exceeds $95 billion again

    According to defillama data, as of May 18, 2024, the total value locked (TVL) in DeFi has once again surpassed $95 billion. It is currently reported at $95.069 billion, an increase of nearly $12 billion from the low point of $83.04 billion 35 days ago. Among the top five protocols in terms of TVL, Eigenlayer has the highest 30-day increase, with TVL rising by 19.67% to a total of $15.455 billion.

  • Cointime's Evening Highlights for May 24th

    1. CryptoPunks Launches “Super Punk World” Digital Avatar Series

  • An address mistakenly transferred about $7,000 in BTC to Satoshi Nakamoto’s wallet

    According to Arkham monitoring, someone accidentally sent 90% of their BTC assets to Satoshi Nakamoto's wallet address last night. They were trying to swap Ordinal for PupsToken, but ended up sending almost their entire wallet balance - about $7,000 worth of BTC.

  • USDC circulation increased by 200 million in the past 7 days

    According to official data, within the 7 days ending on May 16th, Circle issued 1.8 billion USDC, redeemed 1.6 billion USDC, and the circulation increased by 200 million. The total circulation of USDC is 33.2 billion US dollars, and the reserve is 33.4 billion US dollars, of which 3.8 billion US dollars are in cash, and Circle Reserve Fund holds 29.6 billion US dollars.

  • Bitcoin mining company Phoenix Group released its Q1 financial report: net profit of US$66.2 million, a year-on-year increase of 166%

    Phoenix Group, a listed mining company and blockchain technology provider for Bitcoin, released its Q1 financial report, with the following main points:

  • 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.