Skip to main content

Common Market Deployments

Contract: PendleCommonPoolDeployHelperV2

Repository: pendle-finance/Pendle-Common-Pool-Deploy

Overview

PendleCommonPoolDeployHelperV2 is the recommended helper for deploying Pendle markets. It handles the full deployment pipeline in a single transaction:

  1. Deploy (or reuse) the SY contract
  2. Create PT and YT via the yield contract factory
  3. Create the market via the market factory
  4. Seed initial liquidity at a target implied rate

There are two deployment paths depending on whether you are using a Common SY or a custom SY you've already deployed.

Prerequisite: Approve tokenToSeedLiquidity spending by PendleCommonPoolDeployHelperV2 before calling. ETH is accepted natively.

Path 1: Deploy Common Market

Use this path when your asset fits one of the pre-built Common SY types. The helper deploys the SY for you alongside the market.

function deployCommonMarketById(
bytes32 id,
bytes memory constructorParams,
bytes memory initData,
PoolConfig memory config,
address tokenToSeedLiquidity,
uint256 amountToSeed,
address syOwner
) external returns (PoolDeploymentAddrs memory);
  • id — the bytes32 type ID of the Common SY (see Registered Type IDs)
  • constructorParams / initData — ABI-encoded constructor and initializer args for the SY (see Common SY Types for encoding per type)
  • config — market parameters (see PoolConfig below)
  • tokenToSeedLiquidity — token to use for seeding initial liquidity
  • amountToSeed — amount of that token to seed
  • syOwner — owner address for the deployed SY contract

Returns PoolDeploymentAddrs { SY, PT, YT, market }.

Path 2: Deploy Normal Market

Use this path when you have already deployed a custom SY (i.e., not a Common SY type) and want to create the PT/YT pair and market around it.

function deploy5115MarketAndSeedLiquidity(
address SY,
PoolConfig memory config,
address tokenToSeedLiquidity,
uint256 amountToSeed
) public payable returns (PoolDeploymentAddrs memory);
  • SY — address of your already-deployed SY contract
  • config — market parameters (see PoolConfig below)
  • tokenToSeedLiquidity / amountToSeed — token and amount for initial liquidity seeding

This is callable by anyone (not owner-gated), making it suitable for permissionlessly listing a custom SY. Returns PoolDeploymentAddrs { SY, PT, YT, market }.

PoolConfig Struct

struct PoolConfig {
uint32 expiry;
uint256 rateMin;
uint256 rateMax;
uint256 desiredImpliedRate;
uint256 fee;
}
FieldDescription
expiryMarket expiry as a Unix timestamp
rateMinMinimum implied APR, 1e18-scaled (e.g., 0.01e18 = 1%)
rateMaxMaximum implied APR, 1e18-scaled (e.g., 0.30e18 = 30%)
desiredImpliedRateTarget implied APR for seeding; must be between rateMin and rateMax
feeSwap fee, 1e18-scaled (e.g., 0.001e18 = 0.1%)

Further Reading