First of all, all TBA users have a “smart wallet”, an ERC-4337 compatible smart account. This is the base of on-chain operations within TBA. Pun intended.
When you start the post creation flow you type in text as you would in any other social media.
Then
- You can select whether the post is made purchasable – this is ON by default. When enabled, you will “coin” your post, as Jesse puts it.
- You can then modify the caption for your post. This is the ticker for the post and how it shows up in your wallet.
- Hitting post initiates a series of on- & off-chain actions, including posting the actual content onto Farcaster, as described below.
Coining a post creates an account abstraction (AA) transaction – a transaction executed on behalf of your smart wallet. This AA tx first creates an ERC-20 token using Base’s own “BaseCoin” SafeERC20 implementation.
The BaseCoin implementation defines a few special methods specific to BaseCoins and overrides a few ERC20 functions. Most importantly:
a) It defines protocolRewards, payoutRecipient, and platformReferrer address variables within the ERC20 for later use;
b) It defines the address for Doppler’s Airlock contract. Doppler is a liquidity bootstrapping protocol which abstracts certain UniV4 interactions;
c) It stores a tokenURI string which contains the token’s metadata; and
d) It overrides ERC20’s update function so that these tokens emit CoinTransfer events, specific to BaseCoins.
The AA tx then updates the name and symbol as defined. The owner gets set to your wallet, as does the payoutRecipient. As the owner, you can modify the payoutRecipient and the tokenURI.
Then the AA tx updates the tokenURI to point to an IPFS file. This file contains the name and description of the token which you were able to set during step 2. It also points to the Pinata Cloud/IPFS image which serves as the token’s logo (example).
Now the transaction mints 1 billion tokens and transfers 1% of those to your wallet. The remaining 99% get moved to a “ContentCoinHook”, a Uniswap V4 hook that manages the “coin exchange”.
Most of the tokens, however, get immediately moved further into Uniswap’s Pool Manager where they are used to create a WETH pair with your coin with 3% fees.
The hook then immediately uses a multi-step process to modify the coin’s liquidity to reach a certain “bonding curve”. This whole process currently costs Coinbase, who sponsors the transaction, approximately $0.04-0.15 in gas fees, depending on gas prices and how many other AA transactions get bundled together. Additionally, they have to pay for the IPFS hosting costs and any web2 costs (which are negligible).
That’s awfully expensive, right? Coinbase seems to think otherwise.
Whether it is justified or not, we’ll see. But Coinbase has a few levers it can pull. There’s a flurry of different fees associated with the coins;
a) trading fees split between creators (50%), protocol (20%), platform referrer (15%), and trade referrer (15%); and
b) LP fees split between creators, platform referrer, and Doppler.
Based on my potentially flawed understanding, the net effect is that Coinbase, as the referrer, receives approximately 60bp of all trades; to break even, each coin would need to trade ~$50 when accounting for sponsoring trade gas fees as well.
I’m somewhat skeptical whether that will happen because the power laws apply to content as well; most content is not interesting, and whether that 1% of content that will be traded will make up for the rest… I don’t know.
While I do not have robust data on this, I believe Pump Fun volumes on a per token basis would easily break that ~$50 barrier. However, Pump Fun is meant, primarily, for price speculation so the user journey and user expectations are different. When you are a social-first protocol with price speculation as a second-class citizen, we probably have to apply a heavy volume discount. Furthermore, because of the UX framing, I do not think any of these coins will become the next Fartcoin or DOGE; mobilising the culture behind a text-based post is much harder. This is a low-$-volume, high-post-quantity game – one TBA’s design does not optimally support.
I understand what TBA is trying to do, but I believe the modality they use is wrong.
I’m also rather skeptical about using a “market cap” as the primary indicator of user interest. Market cap for all coins starts at $51, which is a made up figure as there is no real money behind any new post. Furthermore, the problem with market caps is that they are – frankly – meaningless. The market cap is solely defined by the shape of the liquidity, not the actual open interest or market value for a coin.
Traditionally, market cap is the theoretical value of a company’s outstanding shares at the current market price, but it is not a direct proxy for the proceeds from liquidating the entire company. Within crypto, we have accepted this and intentionally misconstrued market cap to create baseless hype. In fact, we have even manipulated the liquidity parameters in bonding curves to further boost the hype. Within TBA, the curvature of the bonding curve is extremely aggressive; by buying with just $5, the market cap reaches $665; with $100 the market cap goes to almost $8000.
When you are targeting non-crypto natives and trying to bring the world onchain, you want to minimise jargon that confuses users. Building speculative systems is possible with simpler and easier-to-understand language.
There’s also one part that the users pay for by themselves – and this currently presents a significant onboarding hurdle; each TBA user is a Farcaster user. Farcaster charges for posting using a measure called “storage units”, so users are paying a little bit to Farcaster every time they post. While this is probably not a huge hurdle for existing Farcaster users, getting and paying for a Farcaster account in the first place – for new users – is a potential blocker. This might unnecessarily reduce uptake unless TBA is able to onboard users into Farcaster more seamlessly – and hopefully without requiring the users to pay for their storage units.
The last gripe I have is the absolute lack of gas efficiency. This is a super simple system. There is no reason to use UniV4 with hooks. This could be a <1000 SLOC smart contract. Trades consume ~1m gas; creating posts consume ~2.5m gas. It doesn’t seem like a big deal on an L2 whose purpose is to further reduce gas fees, but this is – currently – very cost prohibitive at scale.
Imagine the potential if creating a post and trading cost just 10% of the gas?