RTP is a set of contracts plus integration surfaces. Frontends (including rtp.fun) sit above the contracts and are replaceable.

Layers

  1. Issuance — RH Launch factory (bonding → graduation) and Crowdfund factory (campaigns).
  2. Shared modules — referral registry, vesting, LP lock.
  3. Settlement — Uniswap v4 pool + hooks configured per platform.
  4. Treasury — destination for opening tax.
  5. Integrate — platform registration, TypeScript SDK, quote interface, agent-facing docs.
flowchart LR
  P[Platform] --> F[Factories]
  F --> RH[RH Launch]
  F --> CF[Crowdfund]
  RH --> G[Graduation]
  CF --> G
  G --> V4[Uniswap v4 pool]
  G --> Lock[LP lock]
  CF --> Vest[Vesting]
  P --> Ref[Referral registry]
  G --> T[Treasury]

Path isolation

A market is created on one path. Shared modules still apply: a Crowdfund campaign uses vesting and referral; an RH Launch market uses LP lock at graduation. Platforms may enable one or both paths.

Hooks

Uniswap v4 hooks are the integration point for listing behavior. Per-platform hook configuration is a later-phase item; today a registered platform receives the profile the factory supports.

Sources of truth

QuestionSource
Is a market live?Factory / campaign state
What is the opening tax?Parameter reader on-chain
Who earned referral credit?Referral registry
When does a position unlock?Vesting module
Can LP be withdrawn?LP lock

Docs on rtp.sh can lag. If they disagree with a contract, the contract wins.