Passer au contenu principal

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Cette page est complémentaire de products/clmm/accounts (description des comptes) et de products/clmm/math (description des calculs). Elle fait autorité pour les arguments et l’ordre des comptes ; les dispositions d’octets précises proviennent de l’IDL.

Inventaire des instructions

GroupeInstructionNotes
AdminCreateAmmConfigDéfinir un nouveau palier de frais.
AdminUpdateAmmConfigModifier les taux d’un palier existant.
AdminUpdatePoolStatusMettre en pause/reprendre les opérations d’un pool.
AdminCreateSupportMintAssociatedInscrire sur la liste blanche une configuration d’extension de mint Token-2022 pour utilisation dans les pools CLMM.
AdminCreateOperationAccountInitialiser le compte d’opération au niveau du programme (opération unique).
AdminUpdateOperationAccountModifier la liste blanche du compte d’opération.
AdminCreateDynamicFeeConfigCréer un jeu de paramètres de frais dynamiques réutilisable sous un index u16.
AdminUpdateDynamicFeeConfigModifier un DynamicFeeConfig existant. Les pools ayant déjà pris un instantané de cette config ne sont pas affectés.
PoolCreatePoolInitialiser un pool CLMM lié à un AmmConfig. Chemin de frais standard FromInput. Coexiste avec CreateCustomizablePool.
PoolCreateCustomizablePoolRecommandé pour les nouveaux pools. Même structure que CreatePool, avec en plus collect_fee_on et un indicateur optionnel enable_dynamic_fee.
PositionOpenPosition / OpenPositionV2 / OpenPositionWithToken22NftÉmettre un NFT de position. OpenPositionV2 remplace la V1 (nouvelle disposition des comptes avec l’emplacement d’extension bitmap) ; OpenPositionWithToken22Nft émet le NFT de position en Token-2022 plutôt qu’en SPL Token. Le nouveau code devrait utiliser la V2 ou la variante Token-2022.
PositionIncreaseLiquidity / IncreaseLiquidityV2Ajouter de la liquidité à une position existante.
PositionDecreaseLiquidity / DecreaseLiquidityV2Retirer de la liquidité ; collecte les frais dus.
PositionClosePositionBrûler le NFT et fermer le PersonalPositionState.
PositionCloseProtocolPositionNettoyage réservé à l’admin pour les PDAs ProtocolPositionState hérités. Le programme actuel ne crée ni ne lit plus le ProtocolPositionState — cette instruction existe uniquement pour récupérer le loyer des comptes créés par d’anciennes versions du programme.
SwapSwap / SwapV2Swap à liquidité constante. Les deux variantes appliquent les frais dynamiques, le routage de frais unilatéral et la correspondance d’ordres limités ; la seule différence est que SwapV2 accepte les mints Token-2022 (la variante V1 exige que les deux coffres soient des SPL Token classiques).
SwapSwapRouterBaseInMulti-hop, utilisé par le routeur.
Ordre limitéOpenLimitOrderPlacer un ordre de vente à un tick. Les tokens non exécutés restent sur le tick ; le moteur de correspondance les exécute au fur et à mesure que le prix le franchit.
Ordre limitéIncreaseLimitOrderAugmenter un ordre ouvert existant.
Ordre limitéDecreaseLimitOrderRéduire ou annuler un ordre ouvert ; verse le reliquat non exécuté ainsi que toute sortie déjà réglée.
Ordre limitéSettleLimitOrderTransférer les tokens de sortie exécutés vers le propriétaire de l’ordre. Peut être appelé par le propriétaire ou par le keeper opérationnel.
Ordre limitéCloseLimitOrderFermer un compte d’ordre entièrement consommé. Le loyer est toujours restitué au owner de l’ordre. Peut être appelé par le propriétaire ou le keeper.
FraisCollectProtocolFeeCollecte admin des frais de protocole.
FraisCollectFundFeeCollecte admin des frais de fonds.
RécompensesInitializeRewardAttacher un nouveau flux de récompenses à un pool.
RécompensesSetRewardParamsModifier le taux d’émission/la fin d’une récompense existante.
RécompensesUpdateRewardInfosMettre à jour la croissance des récompenses jusqu’à maintenant (appelé par tout swap ou changement de position).
RécompensesTransferRewardOwnerTransférer l’autorité permettant de définir ou d’alimenter un flux de récompenses.
RécompensesCollectRemainingRewardsAprès le end_time d’un flux de récompenses, récupérer les tokens non alloués vers le financeur.
UtilitaireInitTickArrayInitialiser un compte de tableau de ticks (souvent regroupé avec OpenPosition).
La plupart des instructions réservées à l’admin (CreateAmmConfig, UpdateAmmConfig, UpdatePoolStatus, CreateSupportMintAssociated, CreateOperationAccount, UpdateOperationAccount, CloseProtocolPosition) sont contrôlées par la clé publique admin codée en dur dans le programme. Les instructions d’administration des flux de récompenses (TransferRewardOwner, CollectRemainingRewards) sont contrôlées par le financeur de la récompense, et non par l’admin du programme. Le suffixe V2 signifie « prend en charge Token-2022 sur les coffres / NFT, nécessite l’emplacement d’extension bitmap ». Le SDK sélectionne V2 par défaut pour les nouveaux pools.

CreatePool

Arguments
sqrt_price_x64: u128           // prix initial
open_time:      u64            // les swaps sont rejetés avant cette heure
Comptes (résumé)
#NomWSNotes
1pool_creatorWS
2amm_configPalier de frais choisi.
3pool_stateWinit ici.
4token_mint_0Trié.
5token_mint_1
6token_vault_0Winit ici, propriété du PDA d’autorité du pool.
7token_vault_1W
8observation_stateWinit ici.
9tick_array_bitmap_extensionWinit ici (V2).
10token_program
11token_program_2022
12system_program, rent
Préconditions
  • token_mint_0 < token_mint_1 par ordre d’octets.
  • amm_config.disable_create_pool == false.
  • Les mints ne sont pas rejetés par la liste blanche d’extensions Token-2022.
Postconditions
  • pool_state.sqrt_price_x64 = sqrt_price_x64, tick_current = floor(log_{1.0001}(price)).
  • pool_state.liquidity = 0 (aucune position pour l’instant).
  • pool_state.fee_on = FromInput (valeur par défaut héritée).
  • pool_state.dynamic_fee_info est mis à zéro (frais dynamiques désactivés).

CreateCustomizablePool

Recommandé pour les nouveaux pools. Même effet que CreatePool, avec en plus un mode de collecte de frais par pool et une activation optionnelle des frais dynamiques. Arguments
pub struct CreateCustomizableParams {
    pub sqrt_price_x64:    u128,
    pub collect_fee_on:    CollectFeeOn,   // FromInput | Token0Only | Token1Only
    pub enable_dynamic_fee: bool,
}
Comptes (résumé) — identiques à CreatePool, avec en plus, lorsque enable_dynamic_fee = true :
#NomWSNotes
Ndynamic_fee_configLa config partagée dont prendre un instantané. Doit déjà exister.
Préconditions — identiques à CreatePool. Si enable_dynamic_fee = false, dynamic_fee_config est ignoré. Postconditions
  • pool_state.fee_on est défini sur la variante CollectFeeOn choisie.
  • Si les frais dynamiques sont activés : pool_state.dynamic_fee_info est initialisé à partir du DynamicFeeConfig fourni (cinq paramètres de calibration copiés ; champs d’état mis à zéro).
  • Sinon : pool_state.dynamic_fee_info est mis à zéro (= frais dynamiques inactifs de façon permanente pour ce pool).
fee_on et le bit d’activation des frais dynamiques sont définis uniquement à la création du pool. Il n’existe pas de mise à niveau en place — les pools créés via CreatePool hérité ne peuvent pas bénéficier rétroactivement des frais dynamiques ni des frais unilatéraux. Les nouveaux déploiements doivent utiliser cette instruction par défaut.

OpenPositionV2 / OpenPositionWithToken22Nft

Créer une nouvelle position dans un pool existant. Arguments
tick_lower_index: i32
tick_upper_index: i32
tick_array_lower_start_index: i32
tick_array_upper_start_index: i32
liquidity:  u128              // L souhaité (ou 0 pour utiliser les montants ci-dessous)
amount_0_max: u64
amount_1_max: u64
with_metadata: bool           // écrire les métadonnées NFT (Metaplex)
base_flag: Option<bool>       // true = ajuster sur amount0 ; false = ajuster sur amount1
Comptes (résumé)
#NomWS
1payerWS
2position_nft_owner
3position_nft_mintWS (keypair)
4position_nft_accountWATA du propriétaire pour le NFT.
5metadata_accountWMetaplex (optionnel, si with_metadata).
6pool_stateW
7protocol_position
8tick_array_lowerWCréé si non initialisé.
9tick_array_upperWIdem.
10personal_positionWCréé ici.
11token_account_0, token_account_1WATAs source de l’utilisateur.
12token_vault_0, token_vault_1W
13rent, system_program, token_program
14associated_token_program
15metadata_programOptionnel.
16token_program_2022V2.
17vault_0_mint, vault_1_mintV2.
18tick_array_bitmap_extensionWV2 (si touché).
Calcul — voir products/clmm/math. En fonction de base_flag, le programme résout soit liquidity, soit (amount_0_max, amount_1_max) pour obtenir le L réel et les montants de tokens effectivement consommés. Préconditions
  • tick_lower < tick_upper, tous deux multiples de pool.tick_spacing, dans [MIN_TICK, MAX_TICK].
  • Les tableaux de ticks requis sont passés et initialisés (ou créés ici via un CPI InitTickArray dans la transaction).
  • L’utilisateur dispose d’au moins amount_0_max et amount_1_max dans les ATAs sources.
Postconditions
  • personal_position existe, liquidity est défini, fee_growth_inside_last est capturé en instantané.
  • Les entrées du tableau de ticks à tick_lower et tick_upper sont mises à jour (liquidity_gross += L, liquidity_net ± L, instantanés de croissance des frais maintenus).
  • pool_state.liquidity += L si la position est dans la plage (tick_lower ≤ tick_current < tick_upper).
Erreurs courantesInvalidTickIndex, NotApproved, ZeroAmountSpecified, TransactionTooLarge (si trop de tableaux de ticks).

IncreaseLiquidityV2

Ajouter de la liquidité à une position déjà ouverte. Arguments
liquidity: u128
amount_0_max: u64
amount_1_max: u64
base_flag: Option<bool>
Comptes — comme OpenPosition sans le mint NFT (la position existe déjà ; le NFT est passé en tant qu’ATA du propriétaire détenant 1 token). Effet
  • Transfère amount_0_actual / amount_1_actual de l’utilisateur vers les coffres.
  • Incrémente personal_position.liquidity et pool_state.liquidity (si dans la plage), ainsi que liquidity_gross / liquidity_net des ticks limites en conséquence.
  • Collecte les frais et récompenses dus depuis le dernier accès et les crédite sur tokens_fees_owed_{0,1} / reward_amount_owed. Ces montants ne sont versés que lors d’un DecreaseLiquidity ou d’un CollectReward, pas lors d’une augmentation.

DecreaseLiquidityV2

Retirer de la liquidité d’une position. Arguments
liquidity: u128
amount_0_min: u64
amount_1_min: u64
Comptes — même structure qu’IncreaseLiquidity. Effet
  • Calcule (amount_0, amount_1) pour le L retiré en fonction du sqrt_price_x64 actuel.
  • Règle les frais et récompenses accumulés depuis le dernier accès, de la même façon qu’IncreaseLiquidity.
  • Transfère amount_0 + fees_owed_0 et amount_1 + fees_owed_1 hors des coffres vers l’utilisateur.
  • Décrémente les compteurs de liquidité ; si le nouveau personal_position.liquidity == 0, la position est éligible à ClosePosition.
Slippageamount_0_min et amount_1_min représentent les minimums acceptés par l’utilisateur, nets des frais de transfert Token-2022 côté sortie.

ClosePosition

Brûler le NFT de position et fermer le PersonalPositionState. Préconditions
  • personal_position.liquidity == 0.
  • tokens_fees_owed_{0,1} == 0.
  • Tous les compteurs de récompenses reward_amount_owed == 0.
(C’est-à-dire : collecter tout et ramener la position à zéro au préalable.) Effet
  • Brûle le NFT.
  • Ferme le compte de mint du NFT et le compte personal_position, en restituant le loyer au payer.

SwapV2

Parcourir la courbe de liquidité ; entrée exacte ou sortie exacte selon is_base_input. Arguments
amount: u64                  // entrée si is_base_input=true, sortie sinon
other_amount_threshold: u64  // sortie minimum ou entrée maximum
sqrt_price_limit_x64: u128   // borne dure ; 0 ⇒ sans limite
is_base_input: bool
Comptes (résumé)
#NomWSNotes
1payerS
2amm_config
3pool_stateW
4input_token_accountW
5output_token_accountW
6input_vaultW
7output_vaultW
8observation_stateW
9token_program
10token_program_2022V2.
11memo_programV2 (requis pour certains chemins Token-2022).
12input_vault_mint, output_vault_mintV2.
13tick_array_bitmap_extension (optionnel)WSi le swap s’étend dans l’extension.
14+tick_array (restants)WSuffisamment de tableaux pour couvrir la plage attendue du parcours.
Les appelants passent une liste ordonnée de tableaux de ticks couvrant le parcours de swap attendu ; le programme en utilise autant que nécessaire. Le SDK calcule cette liste via PoolUtils.computeAmountOutFormat ou l’endpoint de devis de l’API. Préconditions
  • pool_state.status autorise le swap.
  • now >= open_time.
  • sqrt_price_limit_x64 se trouve du bon côté de sqrt_price_x64 pour la direction choisie.
Erreurs courantesExceededSlippage, SqrtPriceLimitOverflow, TickArrayNotFound, LiquidityInsufficient. Ce que SwapV2 fait en interne et que les appelants doivent savoir (version post-2025) :
  1. Surcharge de frais dynamiques — si pool.dynamic_fee_info est non nul, le programme met à jour l’accumulateur de volatilité en utilisant la distance en ticks parcourue depuis le dernier swap (selon les règles de filtre/décroissance décrites dans products/clmm/fees) et ajoute un dynamic_fee_component au-dessus de AmmConfig.trade_fee_rate. Les frais totaux sont plafonnés à 10 % (MAX_FEE_RATE_NUMERATOR / 1_000_000).
  2. Correspondance des ordres limités — lorsque le parcours de prix franchit un tick contenant des ordres limités ouverts, le programme remplit d’abord la liquidité des ordres limités disponibles à ce tick (FIFO par order_phase), puis continue le long de la courbe de liquidité LP. Les montants exécutés mettent à jour tick.unfilled_ratio_x64 et tick.part_filled_orders_remaining pour le règlement ultérieur ; les ordres eux-mêmes restent non dépensés jusqu’à ce que leur propriétaire appelle SettleLimitOrder.
  3. Routage des frais unilatéral — lorsque pool.fee_on = Token0Only ou Token1Only, l’étape de swap calcule toujours le même échange entrée-sortie ; les frais sont ensuite acheminés vers le côté configuré. Pour les directions où le côté de frais configuré est la sortie, les frais sont déduits de la sortie du swap (l’utilisateur reçoit out − fee) ; pour les directions où il s’agit de l’entrée, le comportement correspond à FromInput. Voir is_fee_on_input(zero_for_one) et is_fee_on_token0(zero_for_one) sur PoolState.
Swap (V1) implémente les mêmes frais dynamiques, le même routage de frais unilatéral et la même correspondance d’ordres limités que SwapV2 ; la seule fonctionnalité qui lui manque est la prise en charge de Token-2022 — les deux coffres doivent être des SPL Token classiques. Les pools comportant un mint Token-2022 doivent être swappés via SwapV2. L’agrégateur et le SDK préfèrent déjà V2 pour chaque segment CLMM, de sorte que les appelants n’ont pas à distinguer selon le type de mint.

OpenLimitOrder

Placer un ordre de vente à un tick spécifique. L’ordre s’inscrit dans une cohorte FIFO par tick et s’exécute au fur et à mesure que le prix la franchit. Arguments
nonce_index:    u8       // index du compte nonce choisi par l'utilisateur (0..255 par portefeuille)
zero_for_one:   bool     // true : vendre token0 contre token1 ; false : vendre token1 contre token0
tick_index:     i32      // doit être un multiple de pool.tick_spacing
amount:         u64      // montant du token d'entrée
Comptes (résumé)
#NomWSNotes
1payerWSPropriétaire de l’ordre ; paie le loyer.
2pool_stateW
3tick_arrayWLe tableau de ticks contenant tick_index.
4limit_order_nonceWPDA. init_if_needed — créé lors du premier ordre de l’utilisateur sous ce nonce_index.
5limit_orderWPDA. init ici.
6input_token_accountWATA d’entrée de l’utilisateur.
7input_vaultWCoffre d’entrée du pool.
8input_vault_mintGestion des frais Token-2022.
9input_token_programSPL ou Token-2022.
10system_program, rent
Préconditions
  • tick_index % pool.tick_spacing == 0 et dans [MIN_TICK, MAX_TICK].
  • tick_index se trouve du bon côté de pool.tick_current pour la direction choisie (vendre token0 → le tick doit être au-dessus du tick actuel, et inversement). Vendre à un tick déjà franchi entraînerait une exécution immédiate et est rejeté.
  • pool_state.status autorise l’opération d’ordre limité (bit 5).
Postconditions
  • limit_order existe, avec un instantané de tick.order_phase et tick.unfilled_ratio_x64 à l’ouverture.
  • tick.orders_amount += amount (dans la cohorte actuelle).
  • limit_order_nonce.order_nonce += 1.
  • Événement OpenLimitOrderEvent émis.
Erreurs courantesInvalidLimitOrderAmount (nul ou inférieur au minimum du pool), InvalidTickIndex (hors de [MIN_TICK, MAX_TICK], ou du mauvais côté de tick_current pour la direction choisie), TickAndSpacingNotMatch (tick_index % pool.tick_spacing != 0), OrderPhaseSaturated.

IncreaseLimitOrder

Augmenter un ordre ouvert existant. Uniquement appelable par le owner de l’ordre. Arguments
amount: u64    // montant supplémentaire du token d'entrée
Comptes — comme OpenLimitOrder sans le compte nonce ; le PDA limit_order est passé directement. Préconditions
  • limit_order.owner == signer.
  • L’ordre est toujours dans la même cohorte (tick.order_phase == limit_order.order_phase). Si la cohorte a déjà commencé à s’exécuter, l’ordre est partiellement réglé — l’appelant devrait d’abord appeler DecreaseLimitOrder ou SettleLimitOrder pour avancer.
Effet
  • Transfère amount de l’ATA du propriétaire vers input_vault.
  • limit_order.total_amount += amount ; tick.orders_amount += amount.

DecreaseLimitOrder

Réduire ou annuler entièrement un ordre ouvert. Rembourse le reliquat non exécuté au propriétaire, ainsi que toute sortie déjà réglée lors de remplissages partiels passés. Arguments
amount:     u64    // montant du token d'entrée à retirer (max = reliquat non exécuté)
amount_min: u64    // plancher de slippage sur le retrait côté entrée
Comptes — côtés token d’entrée et de sortie :
#NomWS
1ownerS
2pool_stateW
3tick_arrayW
4limit_orderW
5input_token_accountW
6output_token_accountW
7input_vaultW
8output_vaultW
9input_vault_mint, output_vault_mint
10token_program, token_program_2022
Effet
  • Recalcule le montant exécuté de l’ordre à partir du unfilled_ratio_x64 de la cohorte depuis l’ouverture.
  • Envoie la sortie exécutée vers output_token_account.
  • Renvoie amount d’entrée non exécutée vers input_token_account.
  • Met à jour limit_order en conséquence. Si le nouveau reliquat non exécuté est nul, le programme ferme le compte et rembourse le loyer au owner.

SettleLimitOrder

Transférer les tokens de sortie exécutés vers le propriétaire sans modifier le reliquat non exécuté de l’ordre. Utile lorsque des keepers auto_withdraw souhaitent verser progressivement des remplissages partiels de longue durée. Appelant — soit le owner de l’ordre, soit le limit_order_admin du programme (un portefeuille chaud opérationnel hors chaîne qui exécute une boucle de keeper automatisée). Le keeper ne dispose d’aucune autre autorité — il ne peut pas déplacer les fonds des utilisateurs en dehors du transfert de la sortie exécutée vers l’ATA de sortie du owner de l’ordre. Comptes
#NomWS
1signerSpropriétaire ou limit_order_admin
2pool_state
3tick_array
4limit_orderW
5output_token_accountWATA de sortie du propriétaire.
6output_vaultWCoffre de sortie du pool.
7output_vault_mint
8output_token_program
Effet
  • Calcule la sortie cumulée due en utilisant (limit_order.unfilled_ratio_x64, tick.unfilled_ratio_x64).
  • Transfère le delta vers output_token_account.
  • Met à jour limit_order.settled_output.
  • Ne ferme pas l’ordre ; il reste ouvert sur toute entrée restante.

CloseLimitOrder

Fermer un compte d’ordre entièrement consommé. Le loyer est toujours restitué à limit_order.owner, quel que soit le signataire. Appelant — soit owner, soit limit_order_admin. Préconditions
  • L’ordre a un reliquat non exécuté nul (soit amount == total_amount a été exécuté et réglé, soit le propriétaire avait précédemment réduit l’ordre à zéro sans le fermer).
Effet
  • Ferme limit_order ; le loyer est envoyé à limit_order.owner.

CreateDynamicFeeConfig (admin)

Créer un jeu de paramètres réutilisable sous un index u16. Arguments
index:                       u16
filter_period:               u16   // secondes ; ex. 30
decay_period:                u16   // secondes ; ex. 600. Doit être > filter_period
reduction_factor:            u16   // 1..10_000 ; ex. 5_000 = 50% de rétention par fenêtre de décroissance
dynamic_fee_control:         u32   // 1..100_000 ; gain sur la courbe volatilité-frais
max_volatility_accumulator:  u32   // plafond
Comptes
#NomWSNotes
1ownerWSClé publique admin codée en dur.
2dynamic_fee_configWPDA, init ici.
3system_program
Erreurs courantesInvalidDynamicFeeConfigParams si decay_period <= filter_period ou si un champ à valeur nulle est hors limites.

UpdateDynamicFeeConfig (admin)

Modifier un DynamicFeeConfig existant. Les pools ayant déjà pris un instantané de la config au moment de leur création ne sont pas mis à jour rétroactivement ; seuls les pools nouvellement créés référençant cette config adopteront les nouvelles valeurs. Arguments — les cinq mêmes champs de calibration que CreateDynamicFeeConfig (filter_period, decay_period, reduction_factor, dynamic_fee_control, max_volatility_accumulator) ; index est fixé à la création et n’est pas repassé ici.

CollectProtocolFee / CollectFundFee

Structure identique à celle du CPMM pour CollectProtocolFee / CollectFundFee. Le signataire doit correspondre à AmmConfig.owner / AmmConfig.fund_owner. Collecte les frais de protocole/fonds accumulés depuis les coffres du pool vers un destinataire, puis remet à zéro les champs PoolState.protocol_fees_* / fund_fees_* correspondants.

InitializeReward

Ajouter un nouveau flux de récompenses à un pool. Au maximum 3 flux peuvent être actifs simultanément. Arguments
open_time:     u64
end_time:      u64
emissions_per_second_x64: u128   // Q64.64
Comptes
#NomWS
1reward_funderWS
2funder_token_accountW
3amm_config
4pool_stateW
5operation_statePDA d’état d’opération CLMM contrôlant la création de récompenses.
6reward_token_mint
7reward_token_vaultWinit ici.
8reward_token_program
9system_program, rent
Préconditions
  • Moins de 3 flux actuellement actifs sur le pool.
  • Le financeur dépose total_emission = emissions_per_second × (end_time − open_time) de tokens de récompense dans le coffre dans le cadre de cette instruction.
  • Mint de récompense autorisé par operation_state.

SetRewardParams

Prolonger, alimenter ou modifier le taux d’émission d’un flux de récompenses existant. Généralement appelé par le créateur du pool ou le multisig Raydium. Les contraintes sont définies on-chain : il est généralement possible d’étendre end_time ou d’augmenter les émissions, mais pas de les réduire rétroactivement. Vérifiez la liste des propriétaires de operation_state.

UpdateRewardInfos

Comptabilité pure — règle reward_growth_global_x64 jusqu’à l’heure actuelle en multipliant emissions_per_second × Δt / liquidity. Appelée en interne par chaque instruction touchant à la liquidité. Exposée en tant qu’instruction autonome car des acteurs externes (interfaces, cranks) souhaitent parfois la déclencher directement.

CollectReward

Le propriétaire d’une position réclame les tokens de récompense dus. Comptes
#NomWS
1nft_ownerS
2nft_accountATA du propriétaire détenant le NFT de position.
3personal_positionW
4pool_stateW
5protocol_position
6reward_token_vaultW
7recipient_token_accountW
8token_program
9token_program_2022
Effet
  • Règle la croissance des récompenses (même mécanisme que pour les frais).
  • Transfère le montant dû vers l’ATA destinataire, remet à zéro reward_amount_owed[i].

Matrice des changements d’état

Instructionpool.liquiditypool.fee_growth_globalpool.reward_growth_globalpersonal_position.liquidityTableau de ticks
CreatePool00
OpenPosition+ si dans la plagenouveauajouter liquidity_gross/net
IncreaseLiquidity+ si dans la plagerégler le dûrégler le dû+ajuster
DecreaseLiquidity− si dans la plagerégler le dûrégler le dûajuster
ClosePositionsupprimé
SwapV2± aux franchissements+franchir et inverser l’extérieur ; correspondre aux cohortes d’ordres limités
OpenLimitOrderorders_amount += amount sur le tick cible
IncreaseLimitOrderorders_amount += amount
DecreaseLimitOrderorders_amount -=, peut fermer la cohorte
SettleLimitOrder— (lecture seule sur le tick)
CloseLimitOrder
CreateCustomizablePool00
UpdateRewardInfos+
CollectRewardrégler le dû

Pour aller plus loin

Sources :