Esta página fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.Ver versión en inglés →
Dos comisiones independientes, cuatro destinos
CPMM aplica dos comisiones con tasas independientes en cada operación:- Comisión de operación — cobrada a
AmmConfig.trade_fee_ratey dividida entre tres destinos:- Parte de LP — permanece en la bóveda y aumenta
k. Se reclama implícitamente al quemar tokens LP. - Parte del protocolo — acumulada en
PoolState.protocol_fees_token*; retirada porprotocol_ownermedianteCollectProtocolFee. - Parte del fondo — acumulada en
PoolState.fund_fees_token*; retirada porfund_ownermedianteCollectFundFee.
- Parte de LP — permanece en la bóveda y aumenta
- Comisión de creador (opcional, por grupo) — cobrada a
AmmConfig.creator_fee_rateindependientemente de la comisión de operación y acumulada enPoolState.creator_fees_token*. El creador puede retirarla medianteCollectCreatorFee, o cualquier pagador puede activar la ruta restringida por destinoCollectCreatorFeePermissionless. Activa solo cuando el grupo fue creado conenable_creator_fee = true.
trade_fee únicamente, nunca de creator_fee. Un grupo con creator_fee_rate = 1000 (0,10%) y trade_fee_rate = 2500 (0,25%) cobra un 0,35% combinado de la entrada en una operación con comisión de creador en entrada, de la cual el creador se queda con el 0,10% y el depósito de comisión de operación obtiene el 0,25%.
Las tasas de comisión de operación (trade_fee_rate, protocol_fee_rate, fund_fee_rate) y creator_fee_rate residen en AmmConfig. La bandera enable_creator_fee por grupo y el modo creator_fee_on (de qué lado de la operación se cobra la comisión de creador) residen en PoolState. Consulta products/cpmm/accounts.
Tasas y unidades
Todas las tasas sonu64 denominadas en unidades de 1 / FEE_RATE_DENOMINATOR donde FEE_RATE_DENOMINATOR = 1_000_000.
trade_fee_ratees una fracción del volumen de operación.2500⇒ 0,25% del lado relevante (entrada o salida, dependiendo decreator_fee_on— consulta “De qué lado de la operación se cobran las comisiones” a continuación).creator_fee_ratees una fracción del volumen de operación, cobrada separadamente de la comisión de operación.1000⇒ 0,10% del lado relevante.protocol_fee_rateyfund_fee_rateson fracciones de la comisión de operación, no del volumen.120_000⇒ 12% de la comisión de operación.
AmmConfig[index=0] (el grupo “estándar” de 0,25%) en mainnet, como referencia:
Entonces, en una operación de $1.000 contra
AmmConfig[0] con enable_creator_fee = false: $2,50 de comisión de operación total, de los cuales $2,10 permanecen con los LP, $0,30 van al protocolo, $0,10 al fondo. El depósito de creador es 0 porque la comisión de creador está deshabilitada.
Si el mismo grupo tuviera enable_creator_fee = true y creator_fee_rate = 1000 (0,10%), el usuario paga un $1,00 adicional al depósito de creador — cobrado del mismo lado de la operación configurado por creator_fee_on — para un total de $3,50 de comisiones. El depósito de comisión de operación y sus divisiones de protocolo/fondo permanecen sin cambios.
Confirma los valores actuales de mainnet contra GET https://api-v3.raydium.io/main/cpmm-config — las tasas son mutables por administrador y deben leerse actualizadas en lugar de codificarse.
La división, en código
- La comisión total en entrada redondea hacia arriba para que el grupo nunca subcobre.
- Las subdivisiones de
trade_fee(protocolo, fondo) redondean hacia abajo para que su suma nunca excedatrade_fee; el resto es la parte de LP. lp_share = trade_fee − protocol_fee − fund_fee(creator_fee no se resta aquí porque es su propio depósito).- La comisión de creador se toma de entrada o salida dependiendo de
PoolState.creator_fee_on(consulta la siguiente sección). La tasa es la misma de cualquier forma.
De qué lado de la operación se cobran las comisiones
CPMM tiene una configuracióncreator_fee_on por grupo (BothToken / OnlyToken0 / OnlyToken1) que determina si la comisión de creador se toma del lado de entrada o salida de una operación dada. La función auxiliar de tiempo de ejecución is_creator_fee_on_input(direction) colapsa eso a un booleano por operación:
Cuando la comisión de creador está en el lado de entrada, tanto la comisión de operación como la comisión de creador se deducen de
amount_in antes de que se ejecute la curva. Matemática de cotización: toma el trade_rate + creator_rate combinado de la entrada.
Cuando la comisión de creador está en el lado de salida, solo la comisión de operación se deduce de amount_in; la curva produce una salida sin comisión, luego la comisión de creador se deduce de esa salida. Matemática de cotización: toma trade_rate de la entrada; toma creator_rate de la salida.
La comisión de operación en sí siempre se toma del lado de entrada (el patrón estándar de Uniswap-V2). Solo la comisión de creador puede estar en salida.
Cómo las comisiones “acumuladas” interactúan con la curva
Un detalle importante: las comisiones de protocolo, fondo y creador permanecen físicamente en la bóveda hasta que se llama a su respectiva instrucciónCollect*. Pero se excluyen de la vista de la curva del saldo de la bóveda.
Una imagen concreta después de una operación:
curve_x (y el análogo curve_y) al aplicar k' ≥ k. Así es como las comisiones que no son de LP llegan a sus destinos sin inflar la parte de LP del grupo.
Consecuencias que debes considerar en tu diseño:
- Cotizar fuera de saldos brutos es incorrecto. Si construyes un cotizador fuera de
getTokenAccountBalance, consistentemente sobrestimarás el precio que el grupo honrará. Siempre resta comisiones acumuladas, o simula medianteSwapBaseInput/ la API. CollectProtocolFeeno mueve el precio. Mueve tokens fuera de la bóveda y pone a cero los contadoresprotocol_fees_token*, por lo quecurve_xycurve_ypermanecen sin cambios.- Las comisiones de LP no se acumulan en un contador. Son implícitas en el saldo de la bóveda. El derecho del LP a las comisiones de LP acumuladas se ejerce quemando tokens LP (es decir, mediante
Withdraw) — no hayCollectLpFee.
Interacción con comisiones de transferencia de Token-2022
Las comisiones de transferencia de Token-2022 se aplican por la acuñación, no por CPMM. Actúan en cada transferencia de token — operación, depósito, retiro y los barridosCollect*. La matemática de comisión de operación de CPMM se calcula contra la cantidad que realmente llegó a la bóveda, es decir, neta de la comisión de transferencia de la acuñación de entrada (si la hay).
Entonces, en el peor caso, un usuario paga tres impuestos distintos en una operación de entrada exacta:
- La comisión de transferencia de la acuñación de entrada en
amount_in(a la autoridad de comisión de la acuñación). - La
trade_feedel grupo en el resto (dividida como se indicó anteriormente). - La comisión de transferencia de la acuñación de salida en
amount_out(a la autoridad de comisión de la acuñación).
minimum_amount_out se denomina en lo que el usuario realmente recibe. Si estás escribiendo tu propio cotizador, refleja ese comportamiento, o tus verificaciones de deslizamiento serán sistemáticamente demasiado generosas.
Consulta algorithms/token-2022-transfer-fees para la derivación detallada.
Comisión de creador
La comisión de creador es opcional y por grupo. La tasa reside enAmmConfig.creator_fee_rate; la bandera de habilitación y el lado (creator_fee_on) residen en PoolState:
- Habilitada en la creación del grupo.
Initializeestableceenable_creator_fee = falsepor defecto; los grupos creados medianteInitializeWithPermission(utilizado por graduaciones de LaunchLab y otras rutas controladas) pueden pasarenable_creator_fee = truey elegircreator_fee_on. - La tasa se comparte con el nivel de comisión. La tasa en sí es
AmmConfig.creator_fee_rate, el mismo valor en todos los grupos vinculados a esa configuración. Cada grupo entonces decide si cobrarla (enable_creator_fee) y de qué lado de la operación cobrarla (creator_fee_on). Cuandoenable_creator_fee = false, la tasa de comisión de creador efectiva del grupo es cero independientemente del valor de configuración (consultaPoolState::adjust_creator_fee_rateen el código fuente). - Independiente de la comisión de operación. La comisión de creador nunca reduce las partes de LP / protocolo / fondo — es su propia tasa, aplicada separadamente, acumulada en sus propios contadores.
- Retirada mediante
CollectCreatorFeeoCollectCreatorFeePermissionless. La ruta original requiere quePoolState.pool_creatorfirme. La ruta sin permisos permite que cualquier pagador active la recopilación pero fija ambos destinos a las ATA canónicas del creador. - No se puede reactivar o redirigir después de la creación. Un grupo inicializado con
enable_creator_fee = falsenunca cobrará una comisión de creador; uno inicializado con uncreator_fee_onparticular no puede cambiar de lado.
Flujo operativo de recopilación
Los propietarios del protocolo y del fondo son el multisig de Raydium en mainnet; consulta
security/admin-and-multisig. En la ruta original solo para creador, el firmante del creador es la cuenta registrada en PoolState. En la ruta sin permisos, el llamador paga para crear cualquier ATA de creador faltante. El programa restringe creator a pool_state.pool_creator y deriva cada destino de ese creador más la acuñación de bóveda correspondiente y el programa de token, por lo que el llamador no puede redirigir fondos.
Cambiar un nivel de comisión
Las tasas de comisión se pueden cambiar por el administrador medianteUpdateAmmConfig (consulta products/cpmm/instructions). Los cambios entran en vigor en la siguiente operación para cada grupo vinculado a ese AmmConfig — no hay migración, porque los grupos cargan la configuración en cada operación.
Lo que el administrador no puede hacer:
- Mover un grupo de un
AmmConfiga otro. - Repreciar retroactivamente las comisiones ya acumuladas.
- Recopilar comisiones sin el firmante
protocol_owner/fund_owner.
Lectura de comisiones de un grupo en ejecución
Comparación con CLMM y AMM v4
Consultareference/fee-comparison para una matriz lado a lado. Resumen:
- AMM v4 utiliza una comisión de operación fija del 0,25% con una división LP/protocolo diferente y sin comisión de fondo.
- CLMM las comisiones son por nivel de espaciado de tick, acumuladas por posición (no por grupo), y se reclaman mediante
DecreaseLiquidityoCollectFees.
Dónde ir a continuación
products/cpmm/math— donde la deducción de comisión de operación se conecta a la curva.products/cpmm/instructions— las listas de cuentas de instrucciónCollect*.algorithms/token-2022-transfer-fees— cómo combinar correctamente una comisión de operación de grupo con una comisión de transferencia de acuñación.

