Ich wusste zuvor nicht, was PancakeSwap Infinity ist, heute habe ich mir die Zeit genommen, die Dokumentation gründlich zu lesen, das Folgende ist mein persönliches Verständnis

▰▰▰▰▰▰

Das V2/V3-Protokoll ist schon viele Jahre alt, ich bin sicher, dass alle damit sehr vertraut sind, und im Vergleich zu früher bietet Infinity (das als V4 betrachtet werden kann) mehr Flexibilität und Offenheit, es hat drei Hauptmerkmale

Singleton-Architektur - Alle Liquiditätspools befinden sich in einem Vertrag Vault, es ist ein großes Tresor

Blitzbuchhaltung - Die EIP-1153-Funktion wird genutzt, um zuerst zu berechnen und dann abzurechnen, Mehrfachtransaktionen haben auch einzigartige Vorteile und sparen Gas

HOOK - Im gesamten Lebenszyklus des Pools (d.h. Poolinitialisierung, Austausch, Hinzufügen von Liquidität, Entfernen von Liquidität usw.) können benutzerdefinierte Funktionen hinzugefügt werden, z.B. wenn Sie ein bestimmtes Mitglied sind, können Sie eine niedrige Gebühr erhalten

▰▰▰▰▰▰

Was ist der Unterschied im Handelsprozess zu V2/V3?

  • V2/V3 ist wie ein **Automat**: Du wirfst eine Münze ein, die Maschine gibt dir ein Produkt, alles muss sofort ausgeglichen werden.

  • Infinity ist wie eine **Bank mit einem Superbuch**: Du gehst hinein (Lock), kannst Geld einzahlen, abheben, Währungen tauschen, selbst wenn das Geld zwischendurch zehntausendmal fließt, die Bank führt nur Buch. Wenn du dann gehst (Unlock), wird überprüft, ob dein Kontostand ausgeglichen ist.

▰▰▰▰▰▰

Detaillierte Notizen

Als nächstes folgt die Interpretation der Dokumentation, auch eine tiefere Lernerfahrung (logische Vorab-Logik).

▰▰

Buchhaltungsebene & Vault Schatzkammer

Der Kern dieses Protokolls ist Vault, alle Pools sind in diesem Schatzkammervertrag enthalten, durch das Verfahren "zuerst buchen, dann abrechnen". Bei Mehrsprungtransaktionen (Hop 1 -> Hop 2 -> Hop 3) ist es nicht erforderlich, tatsächlich Token zu überweisen; es reicht aus, nur den Nettobetrag am Ende zu überweisen, was die Gasgebühren erheblich spart.

Der Ablauf des Handels ist wie folgt: vault.lock() um einen Lock von der Schatzkammer zu erhalten, die Schatzkammer wird mit lockAcquired(…) zurückrufen (ähnlich dem Flash-Darlehenrückruf von V2/V3), dann kannst du alle erforderlichen Prozesse wie Swap, modifyLiquidity in diesem Rahmen durchführen, und schließlich durch eine der vier Methoden take(), settle(), mint() oder burn() die endgültigen Salden mit der Schatzkammer abgleichen.

Dabei ist BalanceDelta wie eine Rechnung, die festhält, wie viel du dem Pool schuldest oder wie viel der Pool dir schuldet. Je nach Vorzeichen des Delta wird der Geldfluss bestimmt, delta.amount0() > 0 oder delta.amount0() < 0 bestimmt deine Operation.

Normalerweise bedeutet mehr als 0, dass das Protokoll dir Token schuldet. Du kannst vault.take verwenden, um Token zu nehmen, oder mint, um in die Schatzkammer einzuzahlen, sowie clear, um die Saldenunterschiede zu bereinigen (alles auf Null zurücksetzen). Diese Funktion wird normalerweise nur verwendet, wenn die Gasgebühren die Werte von erc20 übersteigen.

Wenn es kleiner als 0 ist, dann schuldest du dem Pool Token. Du musst den Status über vault.sync(…) synchronisieren, dann die Token in die Schatzkammer übertragen und schließlich settle() verwenden, um die Abrechnung vorzunehmen, damit die Schatzkammer oder der Buchhalter den Token-Bestand vergleichen kann, um die Abrechnung durchzuführen.

Dieser Prozess ist vergleichbar mit einem Besuch im Sam's Club: Du scannst deine Mitgliedskarte, betrittst den Supermarkt, wählst Milch, Rindfleisch und ein Rindergeschirr aus und beginnst, dem Supermarkt Geld zu schulden. Am Ende gehst du zur Kasse, um die Abrechnung vorzunehmen, überweist das Geld und schließt die Zahlung ab.

Beispielcode von der offiziellen Website

▰▰

PoolManager Poolverwaltung

Wenn man sagt, Vault ist eine **riesige Schatzkammer (verantwortlich für die Geldverwaltung)**, dann ist PoolManager der **Zentralprozessor (verantwortlich für die Geschäftslogik)**, der die Regeln der Schatzkammer verwaltet und alle Transaktionsergebnisse berechnet.

PoolManager ist ebenfalls ein Singleton-Vertrag. Infinity hat diesmal zwei Arten von AMM-Logik, CLPoolManager und BinPoolManager.

- CLPoolManager ist die zentrale Liquidität von V3, die jedem sehr vertraut ist, mit Konzepten wie Tick, sqrtPriceX96 und einer Reihe anderer.

- BinPoolManager ist derzeit sehr beliebt als Liquiditätsbuchtyp, es ähnelt stark der zentralen Liquidität von V3, verteilt jedoch die Liquidität auf verschiedene diskrete Bins, wobei jedem Bin ein fester Preis zugewiesen wird. Liquiditätsanbieter können einem oder mehreren Bins Liquidität bereitstellen.

Die offizielle Website hat eine gute Abbildung, um dies zu erklären.

Obwohl es zwei verschiedene Logiken gibt, werden in Infinity alle Pools in einem PoolManager-Vertrag (CL Bin zwei Vertragsadressen) zusammengefasst, wobei:

  • PoolKey ist eine Struktur, die jeden Pool beschreibt.

  • PoolId ist ein bytes32-Typwert, der aus PoolKey abgeleitet wird.

  • Initializing wird verwendet, um den Pool zu initialisieren.

Alle wichtigen Liquiditätsereignisse wie Swap, modifyLiquidities usw. finden in diesem Vertrag statt.

▰▰

Infinity Universal Router und Permit2

Die offizielle Website beschreibt auch den effizienten Infinity Universal Router und Permit 2, der eine schnelle Autorisierung ermöglicht und in v2, v3,

Infinity führt den Austauschprozess durch, Interessierte können die Dokumentation separat studieren.

| Vault | 0x238a358808379702088667322f80aC48bAd5e6c4 |

| CLPoolManager | 0xa0FfB9c1CE1Fe56963B0321B32E7A0302114058b |

| BinPoolManager | 0xC697d2898e0D09264376196696c51D7aBbbAA4a9 |

| CLPositionManager | 0x55f4c8abA71A1e923edC303eb4fEfF14608cC226 |

| CLQuoter | 0xd0737C9762912dD34c3271197E362Aa736Df0926 |

| BinQuoter | 0xC631f4B0Fc2Dd68AD45f74B2942628db117dD359 |

| MixedQuoter | 0x2dCbF7B985c8C5C931818e4E107bAe8aaC8dAB7C |

#BinanceABCs $CAKE $BNB