Dynamic Fee Sharing Program
At Meteora, we’ve developed aNode.js <> Typescript SDK to make deploying and managing your Dynamic Fee Sharing vault easier. The following sections includes information on installing and using the SDK. It also covers where to find the latest code, and how to contribute to these repositories.
Program Details
Dynamic Fee Sharing Program
Meteora Dynamic Fee Sharing Program
Dynamic Fee Sharing IDL
Meteora Dynamic Fee Sharing Program IDL
| Network | Program ID |
|---|---|
| Mainnet | dfsdo2UqvwfN8DuUVrMRNfQe11VaiNoKcMqLHVvDPzh |
| Devnet | dfsdo2UqvwfN8DuUVrMRNfQe11VaiNoKcMqLHVvDPzh |
Fee Vault Types
Dynamic Fee Sharing offers two types of fee vaults to accommodate different use cases:Non-PDA Fee Vault
A fee vault created with an external keypair. Provides flexibility for standalone fee-sharing arrangements.
PDA Fee Vault
A fee vault derived from a base account. Ideal for protocol integrations where the vault is tied to another entity.
Non-PDA Fee Vault
A Non-PDA Fee Vault uses a regular Solana account (keypair-based) for the fee vault address. The vault address is generated externally and must be provided as a signer during initialization. Characteristics:- Fee vault address is a randomly generated keypair
- The keypair must be stored and managed externally
- Multiple vaults can be created for the same token mint and owner
- Simpler to understand and implement
- Creating standalone fee vaults without ties to other protocol entities
- Need to create multiple fee-sharing arrangements for the same token
- Vault lifecycle is independent of any base account
- Simpler integration without deterministic address requirements
PDA Fee Vault
A PDA Fee Vault uses a Program Derived Account (PDA) for the fee vault address. The vault address is deterministically derived from a base account and token mint, making it recoverable and tied to a specific entity. Characteristics:- Fee vault address is derived from seeds:
[FEE_VAULT_PREFIX, base_address, token_mint] - No external keypair storage needed - address is always recoverable
- Only ONE vault per (base account, token mint) combination
- Base account must sign during initialization
- Vault is logically tied to another account (e.g., AMM pool, bonding curve, liquidity position)
- Need deterministic address derivation for protocol integration
- Want to avoid external keypair management
- Address should be recoverable from (base, token_mint) pair
- Integrating with features that reference a base entity
Comparison
| Aspect | Non-PDA Fee Vault | PDA Fee Vault |
|---|---|---|
| Address Generation | External keypair (random) | Derived from seeds (deterministic) |
| Address Recovery | Requires storing keypair | Derivable from (base, token_mint) |
| Uniqueness | Multiple vaults per (owner, token_mint) | One vault per (base, token_mint) |
| Signer Requirement | Fee vault keypair signs init | Base keypair signs init |
| Tied to Entity | No | Yes (via base account) |
| Use Case | Standalone vaults | Protocol-integrated vaults |
Both vault types share the same underlying state structure and support identical operations after initialization: funding fees, claiming fees, and fee distribution via the checkpoint mechanism.

