Private beta · test money onlyRequest an invite

IntegrationEnglish

Referrals

Binding, resolution, payout

A referrer earns 0.10 % of every trade made by anyone bound to them, on every market, for 90 days, renewed on each new click.

Binding

  1. Someone opens a link carrying a scout's handle: unpriced.xyz/r/<handle>.
  2. The site records it.
  3. When that visitor signs in with a wallet, the server writes the binding on chain through the referral operator key.

Users never write their own bindings. bind is gated by OPERATOR_ROLE, and reverts on SelfReferral.

function bind(address account, address referrer) external onlyRole(OPERATOR_ROLE);

Behaviour

Window90 days from the click. Immutable in the contract
RenewalEach new click restarts the full 90 days
ConflictLast click wins. A new bind overwrites the previous referrer
ExpiryreferrerOf returns the zero address, and the referrer share goes to the platform

Changing the window means deploying a new registry and pointing the factory at it, versioned like the fee preset. It is never edited in place.

Payout

On every trade the market resolves the trader's referrer:

market → factory.referralRegistry() → registry.referrerOf(trader)

Both hops are staticcalls with a graceful fallback. A missing factory, a missing registry or a reverting registry never blocks a trade. The referrer share goes to the platform instead. A growth feature does not get to stop someone from selling.

The cut accrues inside the market contract and is withdrawn with claimFees(). It is never pushed, so a referrer whose wallet cannot receive dollars blocks nothing.

Reading

registry.referrerOf(account)   // active referrer, or address(0)
registry.bindingOf(account)    // (referrer, expiresAt)
registry.attributionWindow()   // 90 days in seconds
market.referrerFeeShareBps()   // 2500 = 25% of the fee = 0.25% of volume
market.feesOwed(referrer)      // waiting to be claimed on this market

Lifetime earnings come from FeeSplit, whose referrer field is indexed:

sum(FeeSplit.referrerFee) where referrer == <address>   // earned
sum(FeesClaimed.amount)   where account  == <address>   // withdrawn

Earnings accrue per market. A referrer with active referees across ten markets makes ten claimFees() calls. There is no aggregator contract.

Stacking with the creator share

A creator who shares their own market's card through their own referral link earns both: the creator share, 0.70 % for life, plus the referrer share, 0.10 %, for 0.80 % of the volume they generate. A creator who shares nothing earns 0.70 %.

Rules for integrators

  • Display only earnings derivable from the chain or the index. If it is not in FeeSplit or feesOwed, it is not a number.
  • Show counts and volumes, not referee identities.
  • A binding expires, is overwritten, and grants the referrer no visibility into anyone's positions.