Mainnet deployment for Release 0.2.0 is planned for June 3, 2026, at 11:00 AM UTC+8 (Wednesday).
Release summary
| Component | Version | PR |
|---|---|---|
| Program | 0.2.0 | dynamic-bonding-curve #193 |
| TypeScript SDK | 1.5.8 | dynamic-bonding-curve-sdk #103 |
What We Shipped
- Transfer Hook Support
- Restricted Mint Authority
What To Do
| Integrators | What Changed | What To Do |
|---|---|---|
| Swap Routers |
|
|
| Trading Terminals |
|
|
| Partners |
|
|
Program: dynamic-bonding-curve 0.2.0
Program ID (mainnet and devnet): dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqNProgram PR #193Added
- Added an endpoint
claim_protocol_fee2that requiresprotocol_fee_authorityas the signer instead of an operator. Only one of the pool tokens can be claimed per instruction call. - Added endpoint
create_config_with_transfer_hookthat creates aConfigWithTransferHookaccount storing the transfer hook program alongside the pool config. Only valid fortoken_type: Token2022. The transfer hook program must be executable and cannot be the DBC program, SPL Token program, Token 2022 program, or default pubkey. - Added endpoint
initialize_virtual_pool_with_token2022_transfer_hookfor creating virtual pools with token-2022 base mints that have transfer hooks. The transfer hook program is sourced from theConfigWithTransferHookaccount and the transfer hook authority is set to thepool_authority. The transfer hook program and authority is revoked after the last swap when the curve completes. - Added endpoints with transfer hook support:
swap2_with_transfer_hook,claim_trading_fee2andclaim_creator_trading_fee2. These accept atransfer_hook_accounts_info: TransferHookAccountsInfoparameter for passing transfer hook extra accounts via remaining accounts. The original endpoints are unchanged for backwards compatibility with non-transfer-hook pools. - Added
WithTransferHookevent variants for events consumed by external indexers to differentiate between transfer-hook and non-transfer-hook pool operations:EvtInitializePoolWithTransferHook,EvtSwap2WithTransferHook,EvtCurveCompleteWithTransferHook,EvtCreateConfigV2WithTransferHook. - Re-enabled
TokenAuthorityOption::CreatorUpdateAndMintAuthorityandTokenAuthorityOption::PartnerUpdateAndMintAuthorityfor transfer-hook configs only. The mint authority is assigned to the creator or partner at pool initialization.
Changed
- Update anchor to 1.0.2
Deprecated
- Deprecated
claim_protocol_feeandzap_protocol_feeendpoints in favour of usingclaim_protocol_fee2through theprotocol_feewrapper program. - Deprecated
TokenAuthorityOption::CreatorUpdateAndMintAuthorityandTokenAuthorityOption::PartnerUpdateAndMintAuthorityfor non-transfer-hook configs.
Removed
- Removed unused events:
EvtPartnerWithdrawMigrationFeeandEvtClaimProtocolLiquidityMigrationFee
Breaking Changes
create_configendpoint now rejects the configs with the followingtoken_update_authority:CreatorUpdateAndMintAuthorityandPartnerUpdateAndMintAuthorityinitialize_virtual_pool_with_spl_tokenandinitialize_virtual_pool_with_token2022endpoints now reject configs whosetoken_update_authorityisCreatorUpdateAndMintAuthorityorPartnerUpdateAndMintAuthority. Existing configs on-chain that used these variants can no longer initialize new pools.- For non-transfer-hook pools,
base_mintmint authority can no longer be assigned to the creator or partner. It is always revoked at pool initialization. Transfer-hook pools may still assign mint authority to creator/partner.
TypeScript SDK: @meteora-ag/dynamic-bonding-curve-sdk 1.5.8
SDK PR #103Added
- Added Token-2022 transfer-hook support for DBC pool configs and pools:
client.partner.createConfigWithTransferHookclient.partner.createConfigAndPoolWithTransferHookclient.partner.createConfigAndPoolWithFirstBuyWithTransferHookclient.creator.createPoolWithTransferHookclient.creator.createPoolWithFirstBuyWithTransferHookclient.creator.createPoolWithPartnerAndCreatorFirstBuyWithTransferHook
- Added transfer-hook swap and fee claim endpoints:
client.pool.swap2WithTransferHookclient.partner.claimPartnerTradingFee2client.creator.claimCreatorTradingFee2
- Added transfer-hook account helper types:
TransferHookAccountsInfoTransferHookRemainingAccountsFirstBuyWithTransferHookParamsPartnerFirstBuyWithTransferHookParamsCreatorFirstBuyWithTransferHookParamsAccountsType
- Added account types for transfer-hook program accounts:
ConfigWithTransferHookTransferHookPool
- Added
CreateVirtualPoolMetadataParametersas an exported IDL-derived type. - Added
client.partner.createConfigAndPoolandclient.partner.createConfigAndPoolWithFirstBuyso partner-owned config-and-pool flows live under the partner service. - Added
client.creator.createPool,client.creator.createPoolWithFirstBuy, andclient.creator.createPoolWithPartnerAndCreatorFirstBuyso creator-owned pool initialization flows live under the creator service. - Added
client.partner.claimPartnerTradingFeeToReceiverandclient.creator.claimCreatorTradingFeeToReceiverfor the non-transfer-hook fee claim flows that do not requiretempWSolAcc. - Added test coverage for transfer-hook config creation, pool creation, swaps, first buys, and fee claims using the new
transfer_hook_countertest program.
Changed
- Updated the DBC IDL and generated types to include transfer-hook instructions and account layouts.
- Updated DAMM V1, DAMM V2, and Dynamic Vault IDLs and generated types.
- Updated
DynamicBondingCurveClientso all services share oneStateServiceinstance. - Updated
StateService.getPoolConfigto fetch both regularpoolConfigaccounts and transfer-hook config accounts. - Updated
StateService.getPoolto fetch both regularvirtualPoolaccounts and transfer-hook pool accounts. - Updated swap quote math and state helpers to read virtual pool fields from the new nested
poolStatelayout. - Updated
buildCurve*helpers to accepttoken.tokenAuthorityOptionand map it to the on-chaintokenUpdateAuthorityfield. - Renamed
createVaultProgramtocreateDynamicVaultProgramto match the Dynamic Vault IDL naming. - Renamed internal/public DAMM V1 and Dynamic Vault generated IDL program types from
DammV1andDynamicVaulttoAmmandVault. - Updated validator and CI setup to use the
mercurial_vault.sofixture and include thetransfer_hook_counter.sofixture. - Reworked
docs.mdwith the current SDK service layout and transfer-hook function documentation. - Updated
getMigratedPoolMarketCapFeeSchedulerParamsandMigratedPoolMarketCapFeeSchedulerParamsto usepriceMultipledirectly.
Breaking Changes
- Pool creation methods moved service namespaces. Existing callers must update:
client.pool.createPool(...)->client.creator.createPool(...)client.pool.createPoolWithFirstBuy(...)->client.creator.createPoolWithFirstBuy(...)client.pool.createPoolWithPartnerAndCreatorFirstBuy(...)->client.creator.createPoolWithPartnerAndCreatorFirstBuy(...)client.pool.createConfigAndPool(...)->client.partner.createConfigAndPool(...)client.pool.createConfigAndPoolWithFirstBuy(...)->client.partner.createConfigAndPoolWithFirstBuy(...)
- Pool address params were renamed from
virtualPooltopoolacross SDK request types. Update call sites for:CreateLockerParamsWithdrawLeftoverParamsMigrateToDammV1ParamsMigrateToDammV2ParamsDammLpTokenParamsPartnerWithdrawSurplusParamsCreatorWithdrawSurplusParamsTransferPoolCreatorParamsWithdrawMigrationFeeParamsClaimPartnerPoolCreationFeeParams
- Virtual pool account data now uses the nested
poolStatelayout. Code that directly readsVirtualPoolfields must migrate from flat fields likepool.config,pool.baseMint,pool.quoteReserve,pool.sqrtPrice, andpool.metricstopool.poolState.config,pool.poolState.baseMint,pool.poolState.quoteReserve,pool.poolState.sqrtPrice, andpool.poolState.metrics. TokenType.SPLwas renamed toTokenType.SPLToken. The enum value remains0, but TypeScript callers must update the enum member name.TokenUpdateAuthorityOptionwas renamed toTokenAuthorityOption. Update imports and references.TokenConfig.tokenUpdateAuthoritywas renamed totokenAuthorityOptionfor allbuildCurve*helpers. The helper still maps this value to the on-chaintokenUpdateAuthorityconfig field.PreCreatePoolParamswas renamed toCreatePoolBaseParams. Update imports and any explicit type annotations.- The old no-
tempWSolAcctrading fee claim types were renamed.ClaimTradingFeeParams->ClaimPartnerTradingFeeParamsClaimTradingFee2Params->ClaimPartnerTradingFeeToReceiverParamsClaimCreatorTradingFee2Params->ClaimCreatorTradingFeeToReceiverParams
- The old
claimPartnerTradingFee2andclaimCreatorTradingFee2non-transfer-hook behavior moved toclaimPartnerTradingFeeToReceiverandclaimCreatorTradingFeeToReceiver. In1.5.8,claimPartnerTradingFee2andclaimCreatorTradingFee2build transfer-hook fee claim instructions and should be used only for transfer-hook pools. createVaultProgramwas renamed tocreateDynamicVaultProgram. Update helper imports.StateService.getDammV1LockEscrowwas removed. Consumers that need lock escrow data must fetch it through the relevant generated program client.LockEscrownow comes from IDL types instead of IDL accounts. Update assumptions if you were treating it as an Anchor account object.- Raw IDL instruction indexes changed. Code using
DynamicBondingCurve['instructions'][index]directly must be updated because transfer-hook instructions shifted the generated instruction order. - Market cap fee scheduler config now uses
priceMultiple. ReplacemarketCapFeeSchedulerParams.startingMarketCapandmarketCapFeeSchedulerParams.endingMarketCapwithmarketCapFeeSchedulerParams.priceMultiple.
Fixed
- Fixed state and quote helpers to work with the new nested virtual pool account layout.
- Fixed transfer-hook pool state reads so
getPoolConfig,getPool, fee metrics, fee breakdowns, and curve progress helpers work with both regular and transfer-hook pools. - Fixed SOL quote handling in transfer-hook fee claim flows by preserving the wrapped SOL post-instructions where needed.
Mainnet deployment for Release 0.1.10 is planned for March 16, 2026, at 11:00 AM UTC+8 (Monday).
Release summary
| Component | Version | PR |
|---|---|---|
| Program | 0.1.10 | dynamic-bonding-curve #174 |
| TypeScript SDK | 1.5.7 | dynamic-bonding-curve-sdk #101 |
What We Shipped
- Migrate to DAMM v2 Inner Positions
- Migrate to DAMM v2 Compounding Fee Pool
What To Do
| Integrators | What Changed | What To Do |
|---|---|---|
| Trading Terminals |
|
|
| Partners |
|
|
Program: dynamic-bonding-curve 0.1.10
Program ID (mainnet and devnet): dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqNProgram PR #174Added
- Add new endpoint
create_operator_accountandclose_operator_accountthat allows admin to manage different operator accounts. - Add new account
Operator, that would storeswhitelisted_addressas well as their operational permissions - Add new endpoint
zap_protocol_feethat allow operator to claim protocol fees and zap out to SOL/USDC or other token in pool and send to treasury address - Add support for damm-v2 Compounding
collect_fee_mode. This can be enabled through thecreate_configendpoint by passingmigrated_pool_fee.collect_fee_mode: 2andcompounding_fee_bps: 1-10_000field inConfigParameters
Changed
- When migrate to damm-v2, instead of using external accounts for vesting, now we will use position itself, that would save 2 accounts for damm-v2 migration instruction.
Removed
- Removed the
create_claim_protocol_fee_operatorendpoint in favor ofcreate_operator_account, which can create an operator account configured with permissions, including claiming protocol fees.
TypeScript SDK: @meteora-ag/dynamic-bonding-curve-sdk 1.5.6
SDK PR #98Added
- Added
MigratedCollectFeeModeenum withCompounding(2) support for migrated DAMM v2 pool configuration. - Added
compoundingFeeBpssupport inMigratedPoolFeeConfigand propagated it through allbuildCurve*helpers.
Changed
- Updated migrated pool fee validation to require
compoundingFeeBps > 0only whencollectFeeMode = MigratedCollectFeeMode.Compounding, and0otherwise. - Updated migration flow for DAMM v2 to remove position vesting accounts from
migrateDammV2remaining accounts. - Removed
deriveDammV2PositionVestingAccountPDA helper.

