Je ne savais pas ce qu'était PancakeSwap Infinity jusqu'à maintenant, aujourd'hui j'ai pris le temps de lire attentivement la documentation, les points suivants sont mon interprétation personnelle
▰▰▰▰▰▰
Les protocoles V2/V3 existent depuis de nombreuses années, et tout le monde les connaît bien. Infinity (pouvant être considéré comme V4) est plus souple et plus ouvert que les versions précédentes, avec trois caractéristiques principales
Architecture singleton - Tous les pools de liquidité sont regroupés dans un seul contrat Vault, un grand coffre-fort
Comptabilité instantanée - En utilisant la fonctionnalité EIP-1153 pour calculer d'abord, puis régler, les transactions multi-sauts bénéficient d'avantages uniques, tout en économisant les frais de gaz
HOOK - Pendant toute la durée de vie du pool (initialisation du pool, échange, ajout de liquidité, retrait de liquidité, etc.), des fonctionnalités personnalisées peuvent être ajoutées, par exemple, si vous êtes membre de tel ou tel programme, vous pouvez bénéficier d'un frais réduit
▰▰▰▰▰▰
Alors, quelle est la différence dans le processus de transaction avec V2/V3 ?
V2/V3 ressemble à un **distributeur automatique** : vous insérez de l'argent, la machine vous donne des produits, vous devez tout régler immédiatement.
Infinity ressemble à une **banque avec un grand livre super** : vous entrez (Lock), vous pouvez y déposer de l'argent, retirer de l'argent, échanger des devises, même si au cours du processus, l'argent a circulé mille fois, la banque ne fait que tenir les comptes. Lorsque vous sortez (Unlock), le solde de votre compte est-il équilibré ?
▰▰▰▰▰▰
Notes détaillées
Ensuite, ce sont des notes d'interprétation des documents, un apprentissage plus approfondi (logique de code en premier).
▰▰
Niveau comptable & coffre-fort Vault
Le cœur de ce protocole est Vault, tous les Pools sont dans ce contrat de coffre, en utilisant la méthode 'enregistrement d'abord, règlement ensuite', si c'est une transaction multi-saut (Hop 1 -> Hop 2 -> Hop 3), le processus intermédiaire ne nécessite pas de transfert réel de tokens, il suffit de régler le montant net à la fin, ce qui permet d'économiser considérablement sur les frais de gas.
Les étapes du processus de transaction sont : vault.lock() pour obtenir un verrou du coffre, le coffre vous rappellera avec lockAcquired(……) (similaire au rappel de prêt éclair de V2/V3), ensuite vous pouvez effectuer tous les processus nécessaires tels que Swap, modifyLiquidity pour modifier les opérations de liquidité ici, et enfin utiliser take(), settle(), mint() ou burn() pour vérifier le solde final avec le coffre.
Le delta BalanceDelta est comme une facture, enregistrant combien vous devez au Pool ou combien le Pool vous doit, déterminant la direction des flux de fonds selon le signe du delta, delta.amount0() > 0 ou delta.amount0() < 0 pour effectuer vos opérations.
En général, supérieur à 0 signifie que le protocole vous doit des tokens, vous pouvez utiliser vault.take pour retirer les tokens, ou vous pouvez mint pour les déposer dans le coffre et clear pour annuler la différence de solde (rendre zéro) cette fonction n'est généralement utilisée que lorsque le coût de gas dépasse la valeur de l'erc20.
Si c'est moins que 0, cela signifie que vous devez des tokens au pool, vous devez synchroniser l'état via vault.sync(…) puis transférer les tokens au coffre, et enfin utiliser settle() pour régler, permettant au coffre ou à la comptabilité de comparer les soldes des tokens pour le règlement.
Ce processus est similaire à aller chez Sam's Club, vous entrez avec votre carte de membre, choisissez du lait, du bœuf, et vous commencez à devoir au club, puis vous vous rendez à la caisse pour le règlement, effectuez un paiement et enfin vous obtenez un reçu.
Code d'exemple sur le site officiel

▰▰
Gestion de PoolManager
Si Vault est un **grand coffre (responsable de la garde des fonds)**, alors PoolManager est le **processeur central (responsable de la logique commerciale)** qui gère les règles du coffre et calcule tous les résultats des transactions.
PoolManager est également un contrat singleton, Infinity a cette fois deux logiques AMM, CLPoolManager et BinPoolManager.
- CLPoolManager est le pool de liquidité centralisé de la version V3, que tout le monde connaît bien, avec des concepts tels que Tick, sqrtPriceX96, etc.
- BinPoolManager est actuellement un type de livre de liquidité très populaire, très similaire à la liquidité centralisée de V3, mais distribuant la liquidité dans différents Bins discrets, chaque tranche étant attribuée à un prix fixe. Les fournisseurs de liquidité peuvent fournir de la liquidité à une ou plusieurs tranches.
Le site officiel propose un bon graphique pour expliquer ceci.

Bien qu'il existe deux logiques différentes, dans Infinity, tous les pools seront encapsulés dans un contrat PoolManager (adresses des deux contrats CL Bin), où :
PoolKey est une structure qui décrit chaque pool.
PoolId est un type de valeur bytes32 dérivée de PoolKey.
Initialisation utilisée pour initialiser le pool.
Tous les principaux événements de liquidité tels que swap, modifyLiquidities, etc. se déroulent dans ce contrat.
▰▰
Routeur universel Infinity et Permit2
Le site officiel explique également le routeur universel Infinity efficace et le Permit 2, qui peuvent rapidement autoriser et dans v2, v3,
Infinity effectue le processus d'échange, ceux qui sont intéressés peuvent étudier la documentation séparément.
| Vault | 0x238a358808379702088667322f80aC48bAd5e6c4 |
| CLPoolManager | 0xa0FfB9c1CE1Fe56963B0321B32E7A0302114058b |
| BinPoolManager | 0xC697d2898e0D09264376196696c51D7aBbbAA4a9 |
| CLPositionManager | 0x55f4c8abA71A1e923edC303eb4fEfF14608cC226 |
| CLQuoter | 0xd0737C9762912dD34c3271197E362Aa736Df0926 |
| BinQuoter | 0xC631f4B0Fc2Dd68AD45f74B2942628db117dD359 |
| MixedQuoter | 0x2dCbF7B985c8C5C931818e4E107bAe8aaC8dAB7C |