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

  • FRIEND fell below $3, and the ecosystem TVL dropped to the $30 million range

    According to DexScreener data, the trading price of friend.tech tokens has fallen below $3 and is currently at $2.31. The current circulating supply is approximately 14.5 million. According to DeFiLlama data, the friend.tech ecosystem's TVL has dropped to the $30 million range, with a 13.6% decline over the past 7 days. Friend.tech was launched on the Ethereum Layer 2 network Base in August of last year. The ecosystem's TVL had once surpassed $50 million and is currently the 9th largest protocol on the Base chain.

  • Animoca Brands: MOCA token distribution is planned to take place around May 24

    Animoca Brands officially announced that the distribution of MOCA tokens is planned to take place around May 24th. The token release information includes:

  • NFT lending platform Blend’s total transaction volume exceeded US$6 billion, with more than 650,000 loans

    The latest data from Dune shows that the total transaction volume of Blend, an NFT lending platform under Blur, has exceeded 6 billion US dollars, reaching 6,048,459,706 US dollars at the time of writing, with a total of 659,353 loans; the total number of independent borrowing users is 10,458, and the total number of independent lending users is 4,447. The current total active loan amount is 3,347, with an active loan amount of approximately 6,013 ETH.

  • Yuga Labs will migrate the Otherside metaverse to Improbable’s Msquared

    Yuga Labs and Improbable announced the migration of Otherside Metaverse to Improbable's Msquared, which is Improbable's interconnected Metaverse network. By rebuilding Otherside, Yuga Labs will provide the community with the ability to build in large-scale environments and interoperability. Improbable and Yuga Labs also announced other news about the development of Otherside, including a large multiplayer game event in July and the launch of Otherside development toolkit World Builder ODK.

  • friend.tech has opened airdrop token applications, FRIEND is currently priced at $3.34

    According to the official website, friend.tech has opened up the airdrop of the token FRIEND for claiming, with FRIEND currently priced at $3.34. Previously reported, friend.tech will release version 2 and conduct an airdrop on May 3rd.

  • The 133rd Ethereum ACDC meeting: The goal is to complete the devnet within 7-10 days

    The Ethereum developers held their 133rd ACDC conference call. First, they outlined the latest research on Ethereum protocol confirmation rules. Then, they discussed Pectra updates related to EIP-7547 and CFI states, and decided to put them on hold temporarily. They also updated the v1.5.0-alpha.1 specification. Regarding the implementation updates for devnet-0, most teams are making progress, but there are also some unexpected complexities. The goal is to complete devnet within 7-10 days.

  • The Bitcoin-native stablecoin bitSmiley Alphanet V1 Surpasses $24M TVL in 24 Hours!

    In a remarkable achievement, bitSmiley's Alphanet V1 skyrocketed to over $24 million in TVL within just 24 hours of its launch with over 6 million bitUSD stablecoins minted through over-collateralization. bitSmiley stands as a pioneering initiative, introducing stablecoins by over-collateralizing Bitcoin.

  • Barcelona-based Web3 Video Games Startup GFAL Raises $3.2M in Seed Funding to Expand Team and Accelerate Production Plans

    Barcelona-based startup GFAL has secured $3.2 million in seed funding from investors including Supercell Ltd and Mitch Lasky. The company plans to use the funds to expand its team and accelerate its game production plans, which leverage AI and Web3 technology for immersive gameplay. GFAL's Elemental Raiders mobile game soft-launched in March 2023, with plans to build on this for a 2024 launch. CEO Manel Sort expressed gratitude for the investment and excitement to work with former colleagues from Digital Chocolate.

  • DWF Ventures announces investment in blockchain game developer Overworld

    DWF Ventures announced an investment in Overworld, a chain game developer. Overworld recently announced plans to launch another NFT series, and in addition, Overworld will soon launch the main world arena.

  • Wu Jiezhuang, a member of the National Committee of the Chinese People's Political Consultative Conference, suggested that Hong Kong refer to IPO to provide innovative financing models for Web3

    Wu Jiezhuang, a member of the National Committee of the Chinese People's Political Consultative Conference and a member of the Hong Kong Legislative Council, wrote an article in the Hong Kong Wen Wei Po titled "Leading the Digital Economy by Adapting to the Web3 Trend". The article pointed out that developing Web3+ has both advantages and new challenges. The Hong Kong government has taken an important step in the direction of developing Web3 and the digital economy by formulating a short- to medium-term strategic development blueprint, ensuring that policies and resources are in place, and promoting the construction of Web3+ application scenarios. Focusing on Web3, establishing an international innovation financing platform can not only help Hong Kong leverage its traditional financial advantages, but also help it become a global digital technology center. It is suggested to refer to the mature mode of existing enterprises' IPOs in Hong Kong, provide an innovative financing model for Web3, and create a market trend and service competitive advantage to promote the development of the industry and attract upstream and downstream of the industry chain at home and abroad to gather in Hong Kong.