For the complete documentation index, see llms.txt. This page is also available as Markdown.

Core Modules

This page lists every contract module that is part of the Paimon protocol design, separated by deployment status.

✅ Live on BSC Mainnet

Product Line A — Paimon Prime (PP)

Module
Mainnet address
Source

PPT (Prime Vault, ERC-4626)

0x8505c32631034A7cE8800239c08547e0434EdaD9

src/ppt/PPT.sol

RedemptionManager

(operational, not enumerated)

src/ppt/RedemptionManager.sol

AssetController

(operational, not enumerated)

src/ppt/AssetController.sol

RedemptionVoucher (ERC-721)

(operational, not enumerated)

src/ppt/RedemptionVoucher.sol

PaimonOracleAdapter

(operational, not enumerated)

src/adapters/PaimonOracleAdapter.sol

CashPlusAdapter

(operational, not enumerated)

src/adapters/CashPlusAdapter.sol

External money-market vault

(third-party, not enumerated)

(third party)

Product Line B — Pre-IPO SPV Tokens

Module
Mainnet address
Source

pSPCX (EIP3643Token)

0x6DC9a487bF8Fd047e41AB336003AE6e4FE602646

src/eip3643/EIP3643Token.sol

xSPCX (ShadowERC20)

0x05353Dabf163Fb2fec87f9e0f00f94Eae4AC1631

src/eip3643/ShadowERC20.sol

TokenBridge

(operational, not enumerated)

src/eip3643/TokenBridge.sol

Compliance Layer

Module
Mainnet address
Source

KYCAggregator

(operational, not enumerated)

src/eip3643/KYCAggregator.sol

SimpleKYCProvider

(operational, not enumerated)

src/eip3643/SimpleKYCProvider.sol

Shared Issuance + Reputation Layer

Module
Mainnet address
Source

LaunchpadDrop V4.2.2

0xea088Af719F3238982823fa5eE1C1FaCb2E0e231

src/launchpad/LaunchpadDrop.sol

LaunchpadSettlement

(operational, not enumerated)

src/launchpad/LaunchpadSettlement.sol

PaimonTreasury (launchpad)

(operational, not enumerated)

src/treasury/PaimonTreasury.sol

PaimonBadge (Soulbound ERC-721)

0x48e9a6846D9722599621aF8A6af0F23b0dB8184a

src/launchpad/PaimonBadge.sol

PointsHubV2

0x748560eaCcd4C01FC29b3B5b72d3b8C85B2B5017

src/point/PointsHubV2.sol

StakingModule (PPT staking)

0x80D9b50f4f1ECdd30CD61E400bf8B9b74eC8795f

src/point/StakingModule.sol

LPStakingModule

(deployed)

src/point/LPStakingModule.sol

PointsRedemption

(deployed)

src/point/PointsRedemption.sol

Modules marked "operational, not enumerated" are infrastructure / settlement / compliance contracts managed under multisig + timelock. Their addresses are visible on-chain through interactions with the user-facing tokens above; we do not enumerate them in published documentation.

🚧 Phase-2 — Designed, Not Deployed

Module
Purpose
Status

PAIMON

Governance + utility ERC-20

Token not yet issued

VotingEscrow (veNFT)

Lock-up + voting power NFT

Not deployed; design currently locks HYD, intended to lock PAIMON

GaugeController

Emission allocation voting (7-day epochs, batch voting)

Not deployed

BribeMarketplace

External incentives on Gauges

Not deployed

RewardDistributor

Merkle-root reward distribution

Not deployed

DEXFactory / DEXPair

Paimon's own AMM (V2-style with 0.25 % fee, 70 / 30 voter / treasury split)

Not deployed

Treasury.sol (RWA-backed CDP)

RWA collateral → mint HYD synthetic

Not deployed; experimental design

HYD synthetic asset

Low-volatility synthetic backed by RWA

Not deployed

PSM (Peg Stability Module)

1:1 USDC ↔ HYD swap with 0.1 % fee

Not deployed

Tranche Vault (sPP / jPP)

Senior / Junior yield stratification on top of PP

No contract written — design only

Protection Band automation

TWAP-based deviation monitoring + auto T+0 suspension

Not deployed; manual KEEPER intervention only

Module Reference

PPT (Prime Vault) — ERC-4626 Live Vault

ERC-4626 + UUPS upgradeable + AccessControl + Pausable + ReentrancyGuard.

Key state

Variable
Type
Meaning

assetController

address

Source of calculateAssetValue() for off-vault held assets

redemptionManager

address

Source of liability data

totalRedemptionLiability

uint256

Outstanding pending-redemption obligations (deducted from NAV)

totalLockedShares

uint256

Shares locked while pending settlement (excluded from effectiveSupply)

withdrawableRedemptionFees

uint256

Accrued fees not yet withdrawn (deducted from NAV)

emergencyQuota

uint256

KEEPER-managed budget for T+0 redemptions

lockedMintAssets

uint256

Recently minted underlying not yet released for redemption

standardQuotaRatio

uint256

bps applied to totalLiquidity to derive Standard channel quota (default 7000)

lockedSharesOf[user]

mapping

Per-user locked-share count

Key functions

Function
Meaning

deposit(assets, receiver)

ERC-4626 deposit; reverts if assets < MIN_DEPOSIT (10e18)

mint(shares, receiver)

ERC-4626 mint; same minimum

sharePrice()

NAV per share with virtual offset for inflation-attack protection

totalAssets()

Gross assets minus liabilities minus fees (ERC-4626 override)

effectiveSupply()

totalSupply - totalLockedShares

grossAssets()

Cash balance + assetController.calculateAssetValue()

refreshEmergencyQuota, restoreEmergencyQuota

KEEPER-only quota management

addRedemptionLiability / removeRedemptionLiability

OPERATOR-only (called by RedemptionManager)

RedemptionManager

Two-channel redemption with approval workflow and settlement.

Function
Meaning

requestStandardRedemption(shares)

Open T+7 redemption (auto-approved if below threshold)

requestEmergencyRedemption(shares)

Open T+0 redemption (1.5 % fee, capped by emergency quota)

approveRedemption(requestId)

KEEPER approves a PENDING_APPROVAL request

rejectRedemption(requestId, reason)

KEEPER rejects → status becomes CANCELLED, emergency quota refunded

claimRedemption(requestId)

User claims after settlement time

cancelRedemption(requestId)

User cancels before approval

Threshold parameter
Default
Purpose

baseRedemptionFeeBps

50 (0.5 %)

Standard fee

emergencyPenaltyFeeBps

100 (1 %)

Added on top of base for emergency channel

standardApprovalAmount

50,000 PP

Above this → requires approval

standardApprovalQuotaRatio

2000 bps (20 %)

Or above 20 % of dynamic standard quota → requires approval

emergencyApprovalAmount

30,000 PP

Above this → requires approval

emergencyApprovalQuotaRatio

2000 bps (20 %)

Or above 20 % of emergency quota → requires approval

AssetController

Manages asset value updates and delayed settlement (e.g. CashPlus subscription).

RedemptionVoucher (ERC-721)

Issued when a redemption's expected settlement extends past the standard window. Contains requestId, net amount, expected settlement time. Transferable; the voucher holder calls a public settle endpoint to claim the underlying once settlement actually occurs.

EIP3643Token (pSPCX)

UUPS-upgradeable EIP-3643 implementation. Roles: DEFAULT_ADMIN_ROLE / ADMIN_ROLE / UPGRADER_ROLE / AGENT_ROLE. Functions: standard ERC-20 + freezeAddress, freezePartialTokens, unfreeze, forcedTransfer, pause, setKYCProvider. See EIP-3643 Compliance.

ShadowERC20 (xSPCX)

UUPS-upgradeable plain ERC-20 with single special rule: only bridge address can mint / burn. All other functions standard.

TokenBridge

Hub managing N (security, shadow) pairs. Maintains invariant totalSupply(shadow) = lockedAmount(security) × ratio per pair. Functions: createPair, deposit (security → shadow), redeem (shadow → security, KYC-gated).

KYCAggregator + SimpleKYCProvider

KYCAggregator.isVerified(addr) returns OR of all registered providers. SimpleKYCProvider is a whitelist managed by operator-mediated addToWhitelist / removeFromWhitelist calls.

LaunchpadDrop V4.2.2

4-Layer drop sale with points-and-USDT double gate. Phases: Created → QuestActive → Snapshot → Commitment → LayerSale → Settled → Finalized (or Cancelled). See Launchpad.

PaimonBadge

Soulbound ERC-721. Five badge types (SpacePioneer, AIBeliever, DualHolder, TopReferrer, QuestMaster). Each (user, type) mintable once. batchMint for drop finalization.

PointsHubV2

Aggregator implementing reward credit (addReward, REWARD_ROLE) and deduction (deductPoints, DEDUCTOR_ROLE). Backward-compatible with v1 ABI (getTotalPoints, getClaimablePoints).

StakingModule v2.3

PPT staking → points. Two stake types (Flexible 1.0×, Locked 1.02×–2.00×). Constants: MIN_STAKE_AMOUNT = 10e18, MIN_LOCK_DURATION = 7 days, MAX_LOCK_DURATION = 365 days, EARLY_UNLOCK_PENALTY_BPS = 5000, MAX_STAKES_PER_USER = 100.

Inter-Module Interactions

Last updated