Pool.fans

Revenue Tokenization Documentation

Primitives and tools for tokenizing any revenue stream into tradeable ERC-20 tokens with automatic distribution.

Overview

What is PoolFans?

PoolFans provides revenue tokenization primitives that convert any revenue stream into tradeable ERC-20 tokens. Choose your revenue source, tokenize it, then use our tooling to distribute, monetize, or automate your cashflows.

Tradeable Revenue Rights

100 tokens = 100% of fee stream

Automatic Distribution

Revenue auto-settles on transfer

DeFi Composable

Works everywhere ERC-20s work

Multiple Revenue Sources

Trading fees, auctions, subscriptions

Product Architecture

Step 1: Revenue Sources
Trading Fees
Swap fees from LPs
Clanker Rewards
Creator LP fees
Launchpad Fees
V4 Hook fees
Vault Revenue
Auctions, transfers
Revenue Share Tokens (ERC-20)
Step 2: Distribution & Tooling
Time-Wrappers
Automations
Staking Pools
Token Sales
Auctions

How Revenue Claiming Works

Trading Fee Tokens

Fees are claimable anytime as they accrue. Hold rev share tokens β†’ claim your proportional share whenever you want.

Revenue Vault

Revenue piles up until creator initiates claiming. Stakers then claim entire earned portion for that period.

Core Primitives Quick Reference

Clanker TokenizerTokenize Clanker LP trading fees. Works with V3.1+ existing tokens or deploy new with tokenized fees built-in.
PoolFans LaunchpadAny ERC-20. Deploy new token with fees OR add existing to Uniswap V4 LP with dynamic hooks.
Post-Clank LPsAdd additional Uniswap V4 LPs to existing tokens with tokenized fee rewards.
Revenue VaultAccrue revenue from auctions, subscriptions, or any source. Stakers claim proportionally on period end.

Clanker Creator Rewards

LIVE

Tokenize Your Clanker LP Trading Fees

Convert your Clanker creator rewards into tradeable ERC-20 tokens. Works with both V4 and V3.1 Clanker tokens β€” deploy new with tokenized fees built-in, or tokenize existing positions.

New Token Launch

Deploy with tokenized fees built-in

Existing Tokens

Tokenize V4 or V3.1 positions

Share with Community

Distribute fee rights to holders

Claim Anytime

Revenue accrues continuously

Architecture DiagramFOR DEVS

Full system architecture visualization

View on Lucidchart

Interactive diagrams showing contract relationships

System Components

RevenueShareRegistryStores tokenized Clanker tokens β†’ vault mappings. Manages tokenizer contracts.
Tokenizers (Factory)Factory contracts that deploy new vaults for each Clanker token.
Revenue VaultsIndividual vaults per token that hold and distribute revenue to share holders.

How Vaults Work

The tokenizer contracts are factory contracts - they deploy a unique Revenue Vault for each Clanker token you tokenize. You cannot simply point your fee recipient to the tokenizer contract.

Flow: Tokenizer deploys vault β†’ You point fee recipient to your new vault β†’ Vault distributes to share holders

Factory Contract Addresses (Base)

Example Transactions

V4 Tokenizer

Current

ClankerV4Tokenizer

New tokens: Tokenize revenue fees for new Clanker V4 tokens via:

tokenizeAndDeployV4Clanker()

Existing tokens: Tokenize via 2-step flow:

  1. 1.initTokenization() - Admin initiates tokenization
  2. 2.Admin manually updates reward admin to vault in Fee Locker (off-chain)
  3. 3.finalizeTokenization() - Admin completes and receives shares

RevenueSharesVaultV4

  • Handles reward claims via claimRewards()
  • Extends BaseRevenueShareVault with fee distribution logic
  • Supports V4 Fee Locker with fee conversion

Uniswap V4 Swap Lag Behavior

1-Swap Lag: Due to Uniswap V4's architecture, fees from the most recent swap won't be immediately available for claiming.

Swap Ngenerates fees β†’ stored in hook's balance
Swap N+1executes β†’ triggers fee distribution from Swap N

This means the latest swap's fees are always "pending" until the next swap occurs.

V3.1.0 Tokenizer

Legacy

ClankerTokenizerV3_1_0

Tokenizes revenue fees for existing Clanker V3.1.0 tokens via 2-step flow:

  1. 1.initTokenization() - Admin initiates tokenization
  2. 2.Admin manually updates creator/interfacer admin to vault in LP Locker (off-chain)
  3. 3.finalizeTokenization() - Admin completes and receives shares

Participant Types: V3.1.0 has two tokenizable fee positions:

ParticipantType.Creator~70% of fees
ParticipantType.Interfacer~10% of fees

Note: V3.1.0 always uses FeeIn.Both (no fee preference choice)

RevenueSharesVaultV3_1_0

  • Handles reward claims via claimRewards()
  • Extends BaseRevenueShareVault with V3.1.0-specific fee distribution logic
  • Compatible with Clanker V3.1.0 fee structure and LP locker mechanisms

PoolFans Launchpad

DEV

Launch Any ERC-20 with Tokenized Fees

Deploy any ERC-20 token with Uniswap V4 liquidity and dynamic fee hooks β€” not just Clanker tokens. Launch new tokens or add existing tokens to V4 pools with tokenized fee rewards built-in.

Deploy New Tokens

Launch with V4 LP and tokenized fees

Existing Tokens

Add any ERC-20 to V4 pools

Dynamic Fee Hooks

DynamicVolumeHook for MEV protection

Tokenized Rewards

ERC-20 fee shares for distribution

Launchpad vs Clanker Tokenizer

PoolFans Launchpad

  • β€’ Any ERC-20 token
  • β€’ Direct Uniswap V4 integration
  • β€’ Custom dynamic fee hooks
  • β€’ Full control over pool params

Clanker Tokenizer

  • β€’ Clanker tokens only
  • β€’ Uses Clanker's V4 deployer
  • β€’ Clanker's fee hooks
  • β€’ Integrates with Fee Locker

In Development

The PoolFans Launchpad is currently in development. It will enable launching any ERC-20 token with Uniswap V4 liquidity and tokenized fee rewards β€” extending beyond Clanker tokens to support the broader ecosystem.

Post-Clank LPs

LIVE

Add V4 Liquidity to Existing Tokens

Create additional Uniswap V4 liquidity positions for existing tokens with tokenized fee rewards. Expand liquidity depth for any token that already has a Clanker or V3 pool.

Expand Liquidity

Add V4 depth to existing tokens

Tokenized Fee Rewards

LP fees β†’ tradeable ERC-20 shares

Dynamic Hooks

DynamicVolumeHook for fee optimization

Multiple Pools

Stack liquidity across V3 + V4

How It Works

1

Select Existing Token

Choose any token that already has a pool (Clanker, V3, or other)

2

Deploy V4 LP Position

Create Uniswap V4 pool with dynamic hooks and custom tick ranges

3

Receive Tokenized Fee Shares

Get ERC-20 tokens representing your share of LP trading fees

Revenue Vault

SOON

Tokenize Any Revenue Stream

Beyond trading fees β€” tokenize revenue from any source: auctions, subscriptions, protocol fees, or direct transfers. Revenue accrues in the vault and stakers claim proportionally when the creator initiates a distribution period.

Any Revenue Source

Auctions, subscriptions, transfers

Periodic Distribution

Creator-initiated claiming periods

Pro-Rata Claims

Stakers claim proportionally

Vault-Based Model

Revenue piles up until distribution

Revenue Vault vs Trading Fee Tokens

Revenue Vault

Revenue piles up until creator initiates claiming. Stakers then claim their entire earned portion for that period.

Trading Fee Tokens

Fees are claimable anytime as they accrue. Hold rev share tokens β†’ claim your proportional share whenever.

Coming Soon

Revenue Vault enables tokenizing non-trading revenue streams with periodic distribution. Currently in development β€” available contract types include TokenHolderRevenueVault and TreasuryStakeRevenueVault.

Rev Staking Pools

Real Yield Staking β€” No Inflation

Let your community stake your Clanker token and earn actual trading fees from your token's LP. Unlike emission-based staking, rewards come from real economic activity β€” no token dilution.

Real Revenue

Trading fees, not emissions

Time-Bounded

You control the duration

Pro-Rata Distribution

Based on stake percentage

How It Works

1

Creator Sets Up Pool

Choose staking token (your Clanker), duration, and amount of tokenized revenue shares

2

Community Stakes Tokens

Users stake their Clanker tokens and start earning proportional rewards

3

Rewards Stream Linearly

Tokenized fees distribute over the duration. Claim anytime, unstake when ready

For Creators

  • β€’ Incentivize holding without dilution
  • β€’ Set duration: 30, 90, 180 days
  • β€’ Revenue shares move to pool for duration
  • β€’ Withdraw shares after lock up expires

For Stakers

  • β€’ Stake Clanker tokens to earn fees
  • β€’ Rewards are tokenized fee revenue
  • β€’ Claim WETH/USDC from your rewards
  • β€’ Enter/exit anytime (forfeit future rewards)

Important

  • Revenue shares move to staking contract β€” the contract claims that portion of fees and distributes to stakers over the duration.
  • Duration is fixed β€” once deployed, the reward period cannot be changed. You can only withdraw your deposited revenue shares after lock up expires.
  • Stakers can exit anytime β€” users forfeit future (not earned) rewards when unstaking early.
  • Withdraw after lock up β€” creators get back their tokenized revenue shares which represent your reward stream in perpetuity.

Contract Addresses (Base)

Time-Locked Wrapper

NEW

Stream Revenue to Any Address

Full Guide

Route your trading fees for a limited time by locking your tokenized fees. Mint wrapped shares for incentives or distributionsβ€”withdraw your original tokenized fees after. Perfect for team allocations, DAO treasury, partner revenue splits, and community incentives.

Temporary Distribution

Share rewards without losing ownership

Rewards Pass Through

Recipients earn WETH/USDC during lock

Fixed Lock Periods

30 days to 24 months options

Automatic Return

Withdraw your shares after expiry

Common Use Cases

Revenue Streaming to Team/Contributors

Time-wrap 20% of fees for 12 months, distribute to 5 team members. Each receives 4% of revenue, claimable as it accrues, with principal locked for 1 year.

DAO Treasury with Vesting

Lock 30% of protocol revenue in DAO multisig for 24 months. DAO claims rewards for operations while principal stays locked for long-term alignment.

Partner Revenue Split

Share 5% of fees with launchpad partner for 3 months. Partner earns from every trade during the deal period without permanent equity dilution.

Community Airdrop with Vesting

Reward top 100 holders with 10% of fees vested over 6 months. They earn yield immediately but can't dump the position until lock expires.

Advisor Compensation

Revenue rights instead of tokens, with vesting

Protocol Insurance Fund

Set aside revenue for emergencies, locked safely

Staking Reward Distribution

Use time-wrapped tokens as staking rewards

Multi-Wallet Distribution

Different recipients with different lock periods

Lock Tiers

Tier 030 days
Short-term commitment
Tier 190 days
Quarterly lock-ups
Tier 2180 days
Semi-annual commitment
Tier 3365 days
Annual lock, strong conviction
Tier 4730 days
Maximum commitment (2 years)

How It Works

1

Creator Wraps Fee Shares

Deposit vault tokens with a lock tier, receive transferable claim tokens 1:1

2

Distribute Claim Tokens

Transfer claim tokens to recipients β€” they earn WETH/USDC rewards during lock

3

Reclaim After Expiry

Once lock expires, creator withdraws original vault tokens back

Contract Addresses (Base)

Automations

Programmable Revenue Actions

Full Guide

Automate what happens to your revenue with programmable actions. Set up automatic buybacks, burns, LP provisions, or treasury allocations that execute whenever fees are claimed.

Auto-Buyback & Burn

Automatically buy and burn tokens from fees

LP Provision

Route fees to liquidity pools

Treasury Funding

Send percentage to treasury wallet

Split Actions

Combine multiple actions with percentages

How It Works

1

Configure Automator

Choose your action type and set parameters (burn address, LP pool, treasury wallet, etc.)

2

Link to Revenue Vault

Connect your automator to your tokenized revenue shares vault

3

Auto-Execute on Claim

Actions execute automatically whenever rewards are claimed from the vault

Deflationary Mechanics

  • β€’ Auto-buyback tokens from DEX
  • β€’ Burn purchased tokens automatically
  • β€’ Reduce supply with every trade
  • β€’ No manual intervention needed

Protocol Growth

  • β€’ Auto-fund development treasury
  • β€’ Build protocol-owned liquidity
  • β€’ Compound growth automatically
  • β€’ Transparent on-chain execution

Contract Addresses (Base)

AutoSwapVaultFactory (Simple Swaps)
MultiActionVaultFactory (Chained Actions)

Initial Revenue Offerings

LIVE

Presale Your Future Trading Fees

Sell claims to your future trading fee revenue before or after token launch. Set your price, supply, and duration β€” raise capital by offering investors a share of your perpetual fee stream.

Raise Capital

Sell claims to future fee revenue

Set Your Terms

Price, supply, and sale duration

Perpetual Revenue

Investors earn fees forever

Early Supporters

Reward believers with real yield

How It Works

1

Configure Your Offering

Set price per revenue token, total supply for sale, and sale duration

2

Investors Purchase

Users buy revenue tokens during the sale period, funding your project

3

Revenue Streams to Holders

Token holders earn proportional trading fees in perpetuity

Pre-Launch Funding

  • β€’ Raise funds before token exists
  • β€’ Give early supporters real yield
  • β€’ No token dilution needed
  • β€’ Align incentives from day one

Post-Launch Capital

  • β€’ Monetize existing fee streams
  • β€’ Fund development or marketing
  • β€’ Create secondary market for fees
  • β€’ Reward community contributors

IRO vs Staking Pools

Initial Revenue Offerings

Sell revenue tokens permanently β€” investors own their share of fees forever

Staking Pools

Loan revenue for a period β€” stakers earn during duration, you reclaim shares after

Architecture Principles

Immutable Registry Design

The RevenueShareRegistry is designed to be permanent and unchangeable. Once deployed, it serves as the canonical source of truth for vault mappings. This separation ensures the registry remains stable while tokenizers can be upgraded or added.

Forward Compatibility

  • Designed to support future Clanker versions (V5, V6, etc.) as well as V3.1+
  • New tokenizers can be added without modifying the registry or existing vaults
  • Each tokenizer is self-contained with version-specific logic
  • Vaults inherit from BaseRevenueShareVault for consistent revenue distribution

Permissionless Design

  • Anyone can tokenize their Clanker admin positions
  • No gatekeeping or approval needed from protocol admins
  • Users maintain full control of their positions until finalization

Two-Step Tokenization Flow

No CREATE2 Prediction

We explicitly avoid relying on off-chain CREATE2 address prediction in the UI. If the UI incorrectly predicts the vault address, the user transfers admin to the wrong address, and recovering admin rights would require centralized logic controlled by a multisig safe.

1
initTokenization()

Deploys vault on-chain, stores pending state, returns actual vault address

2

Admin transfers admin role to the verified vault address

Off-chain action via Fee Locker / LP Locker

3
finalizeTokenization()

Validates vault is admin, validates recipient authorization, mints shares

PoolFans SDK

NEW

Programmatic Token Deployment with Tokenized Fees

The PoolFans SDK enables developers to programmatically deploy Clanker tokens with tokenized fee rewards - similar to the Clanker SDK, but with built-in revenue share tokenization.

TypeScript SDK
Tokenized Rewards
Viem Compatible

Installation

bash
# npm
npm install @poolfans/sdk viem

# yarn
yarn add @poolfans/sdk viem

# pnpm
pnpm add @poolfans/sdk viem

# bun
bun add @poolfans/sdk viem

Quick Start

typescript
import { PoolFansTokenizer } from '@poolfans/sdk';
import { createWalletClient, createPublicClient, http } from 'viem';
import { privateKeyToAccount } from 'viem/accounts';
import { base } from 'viem/chains';

// Initialize wallet
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);

const publicClient = createPublicClient({
  chain: base,
  transport: http(),
});

const walletClient = createWalletClient({
  account,
  chain: base,
  transport: http(),
});

// Initialize PoolFans SDK
const tokenizer = new PoolFansTokenizer({
  publicClient,
  walletClient,
});

Deploy New Token with Tokenized Fees

Deploy a new Clanker V4 token with fee rewards automatically tokenized into tradeable ERC20 shares.

typescript
// Deploy new token with tokenized fee rewards
const result = await tokenizer.deployWithTokenizedFees({
  // Token Configuration
  name: "My Token",
  symbol: "MTK",
  image: "ipfs://your-image-hash",
  tokenAdmin: account.address,

  // Metadata (optional)
  metadata: {
    description: "A token with tokenized rewards",
    socialMediaUrls: ["https://twitter.com/mytoken"],
  },

  // Rewards Configuration - tokenized into ERC20 shares
  rewards: {
    recipients: [
      {
        recipient: account.address,  // Revenue share holder
        admin: account.address,      // Can manage this position
        bps: 6000,                   // 60% of fees
        token: "Both",               // Receive both tokens
      },
      {
        recipient: "0x...",          // Community treasury
        admin: "0x...",
        bps: 4000,                   // 40% of fees
        token: "Both",
      },
    ],
  },

  // Fee Configuration
  fees: {
    type: "dynamic",  // or "static"
    // Dynamic fees start high (MEV protection) and decay
  },

  // Optional: Vesting Vault
  vault: {
    percentage: 20,           // 20% of supply locked
    lockupDuration: 604800,   // 7 days in seconds
    vestingDuration: 2592000, // 30 days vesting
    recipient: account.address,
  },

  // Optional: Dev Buy at launch
  devBuy: {
    ethAmount: 0.1,  // Buy 0.1 ETH worth at launch
  },
});

// Wait for deployment
const { tokenAddress, vaultAddress, txHash } = await result.waitForTransaction();

console.log("Token deployed:", tokenAddress);
console.log("Revenue vault:", vaultAddress);

Tokenize Existing Clanker

For tokens already deployed on Clanker, use the two-step tokenization flow:

typescript
// Step 1: Initialize tokenization (deploys vault)
const initResult = await tokenizer.initTokenization({
  clankerToken: "0x...",  // Your existing Clanker token
  version: "v4",          // or "v3.1.0"
  rewards: {
    recipients: [
      {
        recipient: account.address,
        admin: account.address,
        bps: 10000,  // 100% to you initially
        token: "Both",
      },
    ],
  },
});

const { vaultAddress, pendingId } = await initResult.waitForTransaction();
console.log("Vault deployed at:", vaultAddress);

// Step 2: Transfer admin to vault in Fee Locker (off-chain)
// Go to clanker.world and update your fee recipient to the vault address

// Step 3: Finalize tokenization
const finalizeResult = await tokenizer.finalizeTokenization({
  pendingId,
  clankerToken: "0x...",
});

const { sharesToken } = await finalizeResult.waitForTransaction();
console.log("Revenue shares minted:", sharesToken);

Custom Starting Market Cap

By default, Clanker tokens launch at ~10 ETH market cap. You can customize the starting price using the tickIfToken0IsClanker parameter and custom pool positions.

Key Insight

The tickIfToken0IsClanker must be ≀ the lowest tickLower in your positions. For lower market caps (higher ticks), you need custom positions.

Market Cap β†’ Tick Reference

~10 ETH (Standard)
-230400
~20 ETH
-223400
typescript
import { PoolFansTokenizer } from '@poolfans/sdk';
import type { PoolPosition } from '@poolfans/sdk';

// Custom positions for 20 ETH market cap
// The starting tick (-223400) must be <= lowest tickLower
const positions: PoolPosition[] = [
  { tickLower: -223400, tickUpper: -207000, positionBps: 1000 },  // 10%
  { tickLower: -207000, tickUpper: -148000, positionBps: 5000 },  // 50%
  { tickLower: -195000, tickUpper: -148000, positionBps: 1500 },  // 15%
  { tickLower: -148000, tickUpper: -113000, positionBps: 2000 },  // 20%
  { tickLower: -134000, tickUpper: -113000, positionBps: 500 },   // 5%
];

const result = await tokenizer.deployWithTokenizedFees({
  name: "My Token",
  symbol: "MTK",
  image: "",
  tokenAdmin: account.address,
  rewards: {
    recipients: [{
      recipient: account.address,
      admin: account.address,
      bps: 10000,
      token: "Both",
    }],
  },
  pool: {
    positions,
    tickIfToken0IsClanker: -223400,  // ~20 ETH market cap
  },
});
Verified deployment: View on BaseScan

Configuration Reference

rewards.recipients[]

recipientAddress to receive revenue shares
adminAddress that can manage this position
bpsBasis points (0-10000, sum must = 10000)
token"Both" | "Paired" | "Clanker"

fees

type: "static"Fixed fee rate throughout
type: "dynamic"High β†’ low decay (MEV protection)

vault (optional)

percentage10-90% of supply to lock
lockupDurationSeconds (min 7 days = 604800)
vestingDurationSeconds (can be 0)

Fee Preference System (V4 Only)

V4 tokenization supports three fee preferences, determining which tokens the vault receives:

FeeIn.BothRecommended

Vault receives both CLANKER + WETH fees. Best for maximum fee capture.

FeeIn.Paired

Vault receives only WETH fees. Best for stable value rewards.

FeeIn.Clanker

Vault receives only CLANKER token fees. Best for token accumulation.

Reward Distribution Algorithm

Vaults use a cumulative reward per share algorithm for gas-efficient, pro-rata distribution:

When fees arrive:

cumulativeRewardPerShare += (newFees Γ— SCALE) / totalSupply

When user claims:

reward = (userShares Γ— cumulativeRewardPerShare) / SCALE - checkpoint

ERC20 Transfer Hook

On every transfer, the vault automatically checkpoints both sender and receiver rewards. This ensures rewards earned before the transfer stay with the original holder, while new rewards go to the new holder.

Protocol Fee Mechanism

Current Fee

1%

100 basis points

Maximum Fee

5%

500 basis points cap

Protocol fee is deducted during share minting with rounding UP to ensure the protocol always receives its fee. Example: Minting 100 shares with 1% fee = 1 share to protocol, 99 shares to user.

V4 Tokenizer Functions

tokenizeAndDeployV4Clanker(config, shareRecipients)

Deploy new token with tokenized fees

finalizeTokenization(clankerToken, adminIndex)

Complete tokenization after admin transfer

deployVault(clankerToken, feePreference)

Deploy a revenue vault

computeVaultAddress(clankerToken, pairedToken, feePreference)

Compute vault address

V3.1.0 Tokenizer Functions

finalizeTokenization(clankerToken, adminIndex)

Complete tokenization

deployVault(clankerToken, feePreference)

Deploy a revenue vault

computeVaultAddress(clankerToken, pairedToken, feePreference)

Compute vault address

getTokenizerVersion()

Get tokenizer version

lpLocker()

Get LP locker address

rescueTokens(token, amount, recipient)

Rescue tokens (admin only)

tokenizedParticipants(clankerToken)

Get tokenized participants

Constants & Events

Constants

BPS_DENOMINATOR10000
BPS_TO_PERCENTAGEConversion factor
SHARES_DECIMALS18

Events

TokenizationFinalized

Emitted when tokenization completes

TokensRescued

Emitted when tokens are rescued

Fee Preferences

Choose How You Receive Trading Fees

V4 tokenization supports three fee preferences, determining which tokens your revenue vault receives:

FeeIn.BothRecommended

Vault receives both CLANKER + WETH fees. Best for maximum fee capture and diversified revenue.

FeeIn.Paired

Vault receives only WETH (paired token) fees. Best for stable value rewards without token exposure.

FeeIn.Clanker

Vault receives only CLANKER token fees. Best for token accumulation and bullish positioning.

V3.1 vs V4 Fee Preferences

V4: Choose your fee preference during tokenization.
V3.1.0: Always uses FeeIn.Both β€” no fee preference choice available.

Revenue Claiming

How to Claim Your Trading Fee Revenue

Revenue share tokens entitle you to a proportional share of all trading fees collected by the vault. Fees accrue continuously and can be claimed at any time.

1

Hold Revenue Share Tokens

Your proportional claim on fees is determined by your token balance

2

Fees Accrue Automatically

As trades happen, fees flow to the vault and your claimable balance grows

3

Claim Anytime

Call claimRewards() to withdraw your accumulated fees

Reward Distribution Algorithm

Vaults use a cumulative reward per share algorithm for gas-efficient, pro-rata distribution:

When fees arrive:

cumulativeRewardPerShare += (newFees Γ— SCALE) / totalSupply

When user claims:

reward = (userShares Γ— cumulativeRewardPerShare) / SCALE - checkpoint

ERC20 Transfer Hook

On every transfer, the vault automatically checkpoints both sender and receiver rewards. This ensures rewards earned before the transfer stay with the original holder.

Contract Addresses

All PoolFans contracts deployed on Base Mainnet (Chain ID: 8453)

PoolFans Tokenizer System

V4 Tokenizer Factory
V3.1.0 Tokenizer Factory
Revenue Share Registry

Post-Clank LP System

PostClankLP Factory
LP Tokenizer
Revenue Share Hook (V4)
Dynamic Volume Hook (V4)
Creator Fee Hook (V4)

Tooling & Automation

StakingRewardsFactory
TimeWrapperFactory
AutoSwapVaultFactory
MultiActionVaultFactory

External Clanker Contracts

Clanker V4 Deployer
Fee Locker (V4)
LP Locker (V3.1.0)

Token Recovery

Revenue Vaults

Have a rescueTokens() function that allows withdrawing accidentally sent tokens.

Protected: Revenue tokens (clanker/paired tokens) cannot be rescued

Tokenizers

Can rescue any tokens via rescueTokens().

Tokenizers are not designed to hold funds

Engagement Pools

Trading Competitions

On-Chain Trading Competitions

Engagement Pools are the live game layer of PoolFans β€” transparent, on-chain competitions where players compete on ROI. Everything from entries to payouts resolves trustlessly via smart contracts.

1 Key = 1 Position

Open a position on any listed token and track your live performance

How It Works

Earn Keys Through Engagement

Complete social coordination tasks (like, recast, follow) to earn keys that grant pool entry

Open On-Chain Positions

Use your key to open a position on any listed token β€” all positions are recorded on-chain

Compete on ROI

When the pool timer ends, all positions close automatically and top ROI performers share the prize pot

Automatic Payouts

Winners receive prizes automatically via smart contracts β€” no manual claims needed

Fully On-Chain & Trustless

  • Positions are recorded on-chain with verifiable entry prices
  • ROI calculations are transparent and immutable
  • Payouts execute automatically when the pool ends β€” no intermediaries
  • Prize pools are held in smart contracts, not custodial wallets

How to Join a Pool

1

Access the Platform

Open the PoolFans miniapp in the Base app or on Farcaster, then go to the Pools tab

2

Review Pool Details

Check the prize pool, current top ROI, creator, number of participants, and time remaining

3

Select a Token

Choose from trending tokens or browse the full list to find your pick

4

Confirm Your Position

Hit Confirm to open your position using a key β€” this is an on-chain transaction

5

Track Your Performance

View all your pool positions in the Profile tab and monitor your ROI in real-time

How to Create a Pool

1

Launch Pool Creation

Go to the Create tab and click Launch to start the pool creation flow

2

Configure Pool Parameters

Set pool name, duration, prize token + amount, and number of winners with percentage splits

3

Define Engagement Tasks

Choose activities that earn keys: follow an account, like/recast content, or post a cast

4

Deploy On-Chain

Review everything and hit Create β€” you'll confirm two on-chain transactions to launch

Creator Configuration

Creators have full control over pool parameters to design competitions that fit their community:

Pool Duration
Prize Token & Amount
Number of Winners
Percentage Splits

Ready to Tokenize?

Start tokenizing your Clanker revenue or learn more about how Clanker works.

Found an issue in the docs or have questions?

Report issue or ask a question