Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Ce que cela fait. Crée un nouveau pool CLMM au niveau de frais de votre choix, puis ouvre une position concentrée initiale. Deux transactions, un seul script. Le code provient des démos officielles dans
raydium-sdk-V2-demo/src/clmm et a été adapté pour s’exécuter dans un seul fichier Node.Configuration
Assurez-vous d’avoir lu les prérequis du démarrage rapide et d’avoirRPC_URL, KEYPAIR et les dépendances installées.
La création d’un pool CLMM entraîne un frais unique plus un loyer par tick-array pour la position initiale. Vous aurez également besoin des deux mints de semence dans votre portefeuille — ouvrir une position quand le prix se situe dans la plage choisie nécessite de la liquidité des deux côtés.
Étape 1 — config.ts
Enregistrez sous config.ts. Cette structure est la même que celle du modèle src/config.ts.template du dépôt de démo — disableFeatureCheck est forcé à true (recommandé pour tout intégration non triviale afin que le SDK ne se bloque pas sur son appel de détection de fonctionnalités au démarrage) :
Étape 2 — createPool.ts
Enregistrez aux côtés de config.ts. Source : src/clmm/createPool.ts.
Étape 3 — createPosition.ts
Source : src/clmm/createPosition.ts.
Étape 4 — utils.ts
Source : src/clmm/utils.ts.
Exécuter
Ce qui vient de se passer
Transaction 1 —raydium.clmm.createPool a initialisé :
- l’état du pool à la PDA canonique pour
(mint1, mint2, ammConfig), - les
token_0_vaultettoken_1_vault(triés par ordre d’octet du mint), - le ring buffer
observation, - la bitmap de tick-array en ligne,
sqrt_price_x64 initial à partir de votre initialPrice.
Transaction 2 — raydium.clmm.openPositionFromBase a ouvert une position concentrée :
- créé un NFT de position dans votre portefeuille (le NFT est la position ; le transférer transfère la position),
- alloué des tick arrays aux limites inférieure et supérieure (loyer unique si première position dans ces plages ; les tick arrays ne sont jamais fermés par le programme, donc les positions suivantes dans les mêmes arrays ne payent pas de loyer supplémentaire),
- déposé
inputAmountdemint1et le montant de paire correspondant demint2(calculé parPoolUtils.getLiquidityAmountOutFromAmountIn), - crédité la position avec une liquidité proportionnelle à la largeur de la plage.
[0.000001, 100000]) est effectivement pleine ; resserrez-la pour concentrer les frais près du prix spot actuel.
Choisir un niveau de frais
clmmConfigs[0] est le niveau de frais le plus bas. L’ensemble complet est publié sur GET https://api-v3.raydium.io/main/clmm-config :
| Index | tradeFeeRate | Espacement des ticks | À utiliser quand |
|---|---|---|---|
| 0 | 100 (1bp) | 1 | Stables / stables, perte impermanente très faible attendue |
| 1 | 500 (5bp) | 10 | Actifs hautement corrélés (p. ex. liquid-staking vs sous-jacent) |
| 2 | 2_500 (25bp) | 60 | Paire de tokens standard, blue-chip + stable |
| 3 | 10_000 (1,00%) | 120 | Paire volatile ou illiquide où le risque de IL est élevé |
user-flows/choosing-a-pool-type pour une matrice de décision complète.
Erreurs courantes
Pool already exists for this config— Un pool CLMM existe déjà pour ce triplet(mint1, mint2, ammConfig). Recherchez l’ID de pool existant et ignorez l’étape 2.Insufficient funds for amount B— Votre portefeuille a le montant demandé demintAmais pas lemintBcorrespondant. Ouvrir une position quand le prix se situe dans la plage nécessite de la liquidité des deux côtés.Tick out of range— VotrelowerPriceouupperPricesort de la plage de prix représentable. Utilisez une plage plus raisonnable par rapport au prix actuel.- Prix obsolète — Une cotation de l’API peut être obsolète de 5 à 60 secondes. Si
executePositionéchoue sur le slippage, décommentez le blocgetRpcClmmPoolInfodanscreatePosition.tspour récupérer le prix actuel juste avant de signer.
Avertissements
- Le NFT de position est votre seul accès. Perdez le NFT ou transférez-le, vous perdez l’accès à la position. Traitez-le comme une clé.
- Les positions hors plage ne gagnent pas de frais. Si le prix se déplace en dehors de
[lowerPrice, upperPrice], votre position est entièrement parquée dans un actif et ne gagne rien jusqu’à ce que vous rééquilibriez. - Le loyer du tick array est unidirectionnel. La première position à toucher un tick array jamais initialisé paie son loyer ; le programme n’expose pas de voie pour fermer les tick arrays, donc ce loyer est permanent. Les positions suivantes dans le même array sont gratuites.
Suivant
products/clmm/overview— mécaniques complètes du CLMM.products/clmm/ticks-and-positions— les mathématiques derrière les ticks.algorithms/impermanent-loss— quantifier l’amplification de la IL du CLMM.user-flows/create-clmm-pool— le même flux via l’interface Raydium.

