Core Concepts
Attention Markets

Attention Markets

Attention already behaves like a market, but it has no price feed. Hashtags trend, communities form, and value accrues to platforms rather than participants. Superhero gives every trend a token whose price is a deterministic function of how many people have bought in.

Why a curve instead of an order book

An order book needs two-sided interest. A brand-new hashtag has none: nobody is standing by to quote a price for #ThingThatHappenedAnHourAgo. A bonding curve removes the counterparty entirely.

  • No order book, no counterparty. You always trade against the contract, so there is always liquidity and a quotable price, from the first token onward.
  • Price is a function of supply and nothing else. Supply only moves when someone buys or sells, so price encodes net conviction rather than the temporary balance of resting orders.
  • Solvency is structural. The sell curve sits strictly below the buy curve at every supply level, so the reserve held by the sale contract is always enough to redeem the entire circulating supply. There is no bank-run state.

The cost of that guarantee is the spread. Superhero sets it at 1%: half to the token's DAO treasury, half to the affiliation chain. See Where the Money Goes.

The curve

Superhero uses one exponential curve for every community token:

buy(x)  = 0.001 * e^(0.00000001 * x) - 0.0009999
sell(x) = buy(x) * 0.995

price paid for `amount` tokens   = integral of buy(x) from supply to supply + amount
return for selling `amount` back = integral of sell(x) from supply - amount to supply

x is the circulating supply in whole tokens. The trade card's client-side estimator uses the same three constants (a = 0.001, k = 0.00000001, c = 0.0009999) to show you a quote before you sign.

Two design consequences fall straight out of the constants:

  • At supply zero the marginal price is 0.001 - 0.0009999 = 0.0000001 AE. The curve starts almost free, which makes being first meaningfully rewarding.
  • The exponent is small (1e-8), so the curve is nearly linear for the first few hundred thousand tokens and then bends hard. Only 10–20% of the total supply is expected to be reached, which gives a noticeable price increase right from the start of the curve.

A worked example

Take a token at supply zero: freshly created, nobody has bought. All figures are computed from the curve formula above.

SupplyMarginal price of the next token
00.0000001000 AE
100,0000.0000011005 AE
1,000,0000.0000101502 AE
10,000,0000.0001052709 AE
100,000,0000.0017183818 AE

Now follow one buyer through it.

The first buyer spends 1 AE. Solving the integral for a 1 AE curve cost at supply 0 gives about 437,014 tokens. Their marginal price rose from 0.0000001 AE to roughly 0.0000053 AE per token along the way, a 53× move in the marginal price, on a 1 AE trade, because the curve is steepest in relative terms at the very bottom.

The next buyer spends the same 1 AE. They start at supply 437,014, not 0, so the same AE buys materially fewer tokens. The price encodes who was early.

Buying a million tokens at different points shows the same thing from the other side:

Buy 1,000,000 tokens starting at supplyCurve cost
05.12 AE
1,000,00015.22 AE
10,000,000110.82 AE
100,000,0001,732.02 AE

Round trip. If the first buyer sells immediately at the same supply, the sell curve returns 0.995 of the curve value, about 0.995 AE against the 1.005 AE they actually paid (the curve cost plus the 0.5% affiliation fee). The round trip costs them roughly 1% of the gross, before gas, so the curve does not reward churn.

The social loop

  1. Someone posts about a topic. The post is on-chain and attributed to them.
  2. Attention gathers on the topic: the feed, the hashtag page, the token's chat room.
  3. Some of that attention converts into buying pressure on the topic's token.
  4. Buying moves the supply, which moves the price, which is visible to everyone in real time.
  5. The visible price move is itself a signal that draws more attention. Back to step 1.

The loop runs in both directions. Posting about a topic generates attention, which generates buying pressure on the related token; fading attention drains it.

The trending score

trending_score is the momentum signal the product exposes. It is a field on every token returned by GET /api/tokens, it is the default sort (order_by=trending_score&order_direction=DESC), and there is a per-token endpoint at GET /api/tokens/[address]/score.

It is computed off-chain by the backend:

score = (0.35 * trading_score + 0.65 * social_score) * freshness_decay

Every input is a count over a rolling 24-hour window, capped and then log-normalised:

normalized(raw, cap) = ln(1 + min(raw, cap)) / ln(1 + cap)

Capping before the logarithm means a signal stops helping entirely once it saturates (the 5,001st AE of 24-hour volume adds nothing), and the logarithm means the first few units of any signal are worth far more than the next few. Both work against brute-force manufacturing of a score.

GroupSignalWeight in groupCap (24h)
Trading (0.35)Active wallets0.4025
TradingBuy count0.2040
TradingSell count0.2040
TradingVolume in AE0.205,000
Social (0.65)Posts mentioning the symbol0.3215
SocialComments mentioning the symbol0.3250
SocialUnique authors mentioning it0.2220
SocialTips on mentioning posts0.0515
SocialTip amount in AE0.03250
SocialReads of mentioning posts0.06200

Social activity is weighted almost twice as heavily as trading: community activity dominates ranking. Buys and sells count equally, at 0.20 each, so a token being dumped trends exactly as hard as a token being accumulated. The score measures activity, not direction.

The decay term is a Hacker-News-style gravity function on time since the most recent activity of any kind, trading or social:

freshness_decay = 1 / (1 + age_hours / 2) ^ 1.15

At two hours idle a token keeps about half its pre-decay score; at a day, about a twentieth. Scores are refreshed on a cron (every two hours for tokens with recent activity, every six for a stale backfill), so a score you read may be up to two hours behind the window it describes. Tokens flagged unlisted are skipped entirely.

Trending tags are a different mechanism that happens to share a word. They may not have tokens at all, and their score and source are pushed in by external providers through POST /api/trending-tags behind an API-key guard, not computed from Superhero activity. source is a free-form string naming the provider platform, for example x, facebook or github.

A rising trending score means attention is accelerating; a falling score means it is fading. Read that as a claim about attention, not about price. trending_score is a value between 0 and 1; choose entry and exit thresholds accordingly.

The trending score is a derived number, not a protocol quantity: no contract reads it, no vote depends on it, and the weights above are backend configuration that can change with a deploy. Treat it as a ranking aid, not as ground truth. See The Trending Score.

Related