Project launches
Referrals and KOLs
How a referrer is bound to a launch and paid for life, and how KOLs share a launch's fee window.
Status#
How a referrer is bound#
| Rule | How it holds |
|---|---|
| Whose referrer | The creator’s own, as the platform recorded it when the creator signed up |
| Carried by | A LaunchAttestor signature over factory, creator, referrer, expiry and nonce. Any other referrer fails the signature check. |
| Unsigned launch | No referrer; naming one reverts |
| Self-referral | Refused |
| Written | ReferralLedger.setReferrer(curve, referrer) in the launch transaction |
| At graduation | Copied to the launch’s locker, so pool fees keep paying the same referrer |
| Changeable | Never — referrerOf is write-once |
What a referrer earns#
A referrer takes a rate of the protocol’s share of every fee the launch pays, for the life of the launch: on the curve, and after graduation from the pool.
| Term | Value |
|---|---|
| Default rate | 10% of the protocol share (production) |
| Per-referrer override | Set by the owner, up to the ceiling |
| Ceiling | 30% (MAX_RATE_BPS, a constant) |
| Applied | The rate in force when each fee arrives; credited balances are never rewritten |
| Source | Paid in |
|---|---|
| The protocol leg of every trade fee (curve and pool) | The launch’s raise currency: ETH or the listed ERC-20 |
| The platform half of a lapsed KOL window | The launch’s raise currency |
| The launch fee | Not shared — it goes from the fee desk to the protocol |
Referrers pull their own balances: claim() / claimTo(recipient) for ETH, claimToken(token) / claimTokenTo for an ERC-20. The rest of the protocol share goes on to the fee meter; the referrer’s cut never counts there.
KOL fee windows#
The KOL leg — 40% of every trade fee on production terms — accrues to KolSplitter under the launch. Once a day it is opened as a window the creator can hand out.
| Step | Who | Rule |
|---|---|---|
openWindow | The keeper | Sweeps the launch’s pending KOL fees into a window. One per day, on a 24-hour grid anchored at the launch time. The keeper supplies no amounts or recipients. |
allocate | The creator | Whole percentages of the window to eligible KOLs, at least 1% per line, within each KOL’s rank cap, up to 100% in total. Open for 6 hours. |
closeWindow | Anyone, after 6 hours | What was not allocated lapses: 50% to the creator’s crew splitter, 50% to ReferralLedger naming the launch, where the referrer takes their rate |
claim / claimToken | The KOL | Pays the KOL’s credited balance, in the launch’s raise currency |
Allocating less keeps more for the creator, through the lapse. After graduation the locker’s KOL fees run on their own grid, starting at graduation.
Who can be allocated#
| Condition | Required |
|---|---|
| Enrolled | A platform account with a connected X account, attested on chain |
| Subscription | A live X subscription, unless the KOL’s rank is Platinum or above |
| Standing | Not banned, and attested within the last 30 days |
| If the registry cannot answer | No allocation succeeds; the window lapses 50/50 |
KOL ranks and caps#
A rank sets the largest share of one window a KOL may take. Rank is the higher of what the KOL’s lifetime fees earned justify and any rank won by peer vote.
| Rank | Share of a window | Lifetime KOL fees |
|---|---|---|
| Unranked | 10% | 0 |
| Bronze | 12% | 0.10 ETH |
| Silver | 15% | 0.25 ETH |
| Gold | 20% | 5 ETH |
| Platinum | 25% | 30 ETH |
| Diamond | 30% | 100 ETH |
| Rule | Value |
|---|---|
| Promotion | Exactly one rank; never to Bronze, never to Diamond |
| Opener | A KOL in good standing ranked at least one above the destination; never the subject |
| Voting period | 7 days |
| Quorum · majority | 70% of active, eligible KOLs at open · 51% of ballots cast |
| Platform minimum | 1,000 eligible KOLs before any vote can open |
| Cooldown | One vote per subject per 30 days |
| Open for proposals | Only while proposalsOpen() reads true; the contract ships closed |