Joseon.funDocs
AppExplorerOpen app

Protocol

Fees

Who earns what on curve trades and on swaps, and how to claim it.

Two phases, two rates#

A launch earns fees in two phases. On the curve it is 2% per trade, and it is finite — it ends when the curve sells out. On the pool it is 0.30% per swap, and it keeps going for as long as the pool trades.

CurveJoseonSwap
Rate2.00%0.30%
Charged inETHthe input token
Creator70% of the fee50% of the fee (launch pools)
Protocol30% of the fee30% of the fee
LPsthe remainder
Durationuntil graduationindefinitely

Launching itself is free apart from gas. These rates are constants in the deployed contracts, not settings on a website, so nobody can change them for a launch that is already live.

Curve trades: 2%#

Charged on both buys and sells, always in ETH. On a buy the fee comes off before the curve moves; on a sell it comes off before the payout. Neither touches token supply.

The split is 70% creator, 30% protocol. Creator fees accrue against whoever was the fee recipient at the time of the trade, so a handover moves future earnings and leaves earlier ones where they were.

A curve that fills with no sells produces:

ETH
Total fee~0.0734694
Creator (70%)~0.0514286
Protocol (30%)~0.0220408

Those fees sit inside the curve's ETH balance but are excluded from what sells can pay out and from what graduation migrates, so another person's trade can never spend them.

One recipient, by design#

A launch has exactly one fee recipient address. LaunchRegistryV2 stores a single address per token, so there is nothing to divide at the protocol level.

The app used to offer a percentage split across several wallets. It was removed on 2026-07-28: the percentages were display metadata only, so a collaborator promised a share had no claim the protocol would honour. If you want a split, point the fee recipient at a splitter contract you control — then the split is enforced by that contract's code rather than by a label. Tokens created before the change may still carry feeShares metadata; treat it as historical and non-binding.

Swaps: 0.30%#

The rate is the same for every pool. Only the split differs.

RecipientLaunch poolPlain pool
Creator / approved CTO50% → 0.15%
Protocol30% → 0.09%30% → 0.09%
LPs20% → 0.06%70% → 0.21%
Total0.30%0.30%

Traders are not affected by the split. The AMM prices a swap against the input net of the whole fee regardless of who receives it, so this redirects value rather than charging more for it.

Why launch pools pay a creator share#

A graduated pool's opening position is locked forever. If the whole 0.30% went to LP share value, most of it would accrue to a position nobody can ever redeem — value with nowhere to go. Routing 50% to the creator and 30% to the protocol makes it claimable, and the 20% still left in the reserves rewards anyone who adds liquidity later.

Plain pools keep 70% with LPs, because they have no creator and voluntary liquidity is the only thing they run on.

Curve fees end, swap fees do not#

Curve fees are capped at roughly 0.051 ETH for the creator, once. Swap fees are 0.15% of volume, forever. Past ~34 ETH of cumulative post-graduation volume, a creator has earned more from swaps than the entire curve paid them.

The same logic applies to the protocol, which is why swap fees rather than launch fees are the long-run revenue line.

Claiming#

Everything is pull-based. Nothing expires, and nothing is pushed to you on each trade — which is what keeps a swap cheap and free of surprises.

WhatWherePaid to
Curve creator feesthe launch's curvethe recipient the fees accrued to
Swap creator feesthe graduated poolthe recipient in place when the swap happened
Swap protocol feesthe graduated poolthe protocol's fee destination

To be unambiguous about what a takeover does: every fee from a swap after the reassignment belongs to the new recipient. The previous recipient keeps nothing but the balance that had already accrued to them before it, and only if they had not claimed it yet. They cannot earn again from that pool.

Both pool claims are permissionless: anyone can trigger them, and the funds go to the address whose balance is being settled rather than to the caller. That is why an unclaimed balance is not stranded — claimCreatorFeesFor(address) settles it for the wallet it belongs to, even after that wallet has been replaced.

The app shows claimable balances in Portfolio and on each token page. Contract calls has the raw versions.

Handing a token over#

If a creator steps away, the fee recipient can be reassigned by the protocol's immutable feeAdmin. That is deliberate: CTO means Community Take Over, and an abandoned project is exactly the case where the outgoing recipient will never sign. Requiring their signature would mean no takeover could happen.

A reassignment moves future earnings only — whatever has already accrued stays with whoever earned it, on the curve and in the pool alike. The pair settles the outgoing recipient before the pointer moves, so the admin cannot take earned money. A handover changes nothing about the token, its pool, its price, or its locked liquidity.

Creating a token#

Creating a token is free beyond network gas.

The protocol's own fee destination is still controlled by a single key. Moving it behind a multisig is a known requirement before mainnet — see safety and risk.