Core Smart Contracts

  • BorrowerOperations.sol: Enthält die grundlegenden Operationen, mit denen Kreditnehmer mit ihrem Vault interagieren: Vault-Erstellung, Kollateralaufstockung/-abhebung, Schuldenrückzahlung. Es sendet auch Ausgabegebühren an den Governance-Vertrag. Die Funktionen in BorrowerOperations rufen TroveManager auf, um den Trove-Status zu aktualisieren, falls erforderlich. Sie interagieren auch mit den verschiedenen Pools, um Tokens zwischen Pools oder zwischen Pool und Nutzer zu bewegen.

  • TroveManager.sol: Verzeichnet den Status jedes Vaults, d. h. das Kollateral und die Schulden eines Vaults. Er speichert auch den Einsatz des Troves und die damit verbundenen Belohnungen durch Umverteilung. Es werden keine Werte (Tokens) im TroveManager selbst gehalten. Funktionen des TroveManagers interagieren mit verschiedenen Pools, um Tokens bei Bedarf zu verschieben.

  • LiquidationOperations.sol: Verfügt über keinen eigenen Zustand oder Token-Bestand, arbeitet jedoch mit dem TroveManager und StabilityPoolManager zusammen, um Vaults bei Bedarf zu liquidieren.

  • StabilityPool.sol: Bietet Funktionen für Stability Pool-Operationen: Einzahlungen tätigen und zusammengefasste Einlagen sowie angesammelte Kollateralgewinne abheben. Dieser Pool hält die jAsset-Einlagen sowie die Kollateralgewinne der Einleger, die durch Liquidationen entstehen. Es gibt einen StabilityPool für jeden jAsset-Token.

  • StabilityPoolManager.sol: Verfolgt alle Stability Pools und fungiert als Verteiler zwischen ihnen und den LiquidationOperations.

  • ReservePool.sol: Hält jUSD und JLY als Reserveentschädigung. Wird durch BorrowerOperations gefüllt und stellt Tokens für unter-kollateralisierte Liquidationen bereit.

  • CollSurplusPool.sol: Hält das Kollateralüberschuss aus Vaults, die im Recovery Mode liquidiert wurden. Gibt den Überschuss an den jeweiligen Kreditnehmer zurück, wenn dieser es beansprucht.

  • RedemptionOperations.sol: Verwendet den Status des TroveManagers und der SortedTroves, um Redemptions durchzuführen. Dabei werden jUSD (Schulden) verbrannt und Kollateral aus dem StoragePool an den Einlöser ausgezahlt. Redemption-Gebühren werden an den Governance-Vertrag übertragen.

  • SortedTroves.sol: Eine doppelt verknüpfte Liste, die die Adressen der Vault-Besitzer speichert, sortiert nach ihrem LACR. Vaults werden basierend auf ihrem ICR an der korrekten Position eingefügt oder neu eingefügt, sobald ein Vault-Besitzer seinen Vault aktualisiert.

  • HintHelpers.sol: Ein Hilfsvertrag, der nur Leseoperationen zur Berechnung genauer Hinweise für Vault-Operationen bereitstellt, die erforderlich sind, um den Vault in die sortierte Liste (SortedList) (wieder-)einzufügen.

  • DebtToken.sol: Der jAsset-Token-Vertrag, der den ERC20-Standard für fungible Tokens zusammen mit EIP-2612 implementiert. Enthält einen Mechanismus, der versehentliche Transfers an Adressen wie den StabilityPool oder address(0) blockiert. Der Vertrag prägt, verbrennt und überträgt jAsset-Token.

  • TokenManager.sol: Enthält eine Liste von Schuldtokens (DebtToken) und Kollateral-Token (ERC20), die dem System zur Verfügung stehen. Er ermöglicht der Governance, Tokens in das System einzuführen.

  • StoragePool.sol: Hält den gesamten Kollateralbestand und zeichnet die Gesamtschulden der Vaults auf. Er trennt die Vermögenswerte zwischen:

    • Aktive Vermögenswerte gesunder Vaults.

    • Default-Vermögenswerte liquidierter Vaults, die auf aktive Vault umverteilt werden sollen. Wenn ein Vault ausstehende Schulden-"Belohnungen" hat, werden diese auf den Vault angewendet, wenn er das nächste Mal eine Kreditnehmeroperation, eine Redemption oder eine Liquidation durchläuft.

    • jUSD Gas Compensation als Liquidationsreserve. jUSD wird gespeichert, wenn ein Vault eröffnet wird, und freigegeben, wenn ein Vault liquidiert oder geschlossen wird.

    • Nicht zugewiesene Vermögenswerte aus einer Umverteilung, bei der der letzte Vault eines Kollateraltyps liquidiert wurde. Diese können von jedem beansprucht werden.

  • SwapPair.sol: Swap-Pool-Vertrag. Hält die Liquidität eines Swap-Paares. Berechnet die dynamische Swap-Gebühr basierend auf der Reserve (Pool-Preis) und dem Oracle-Unterschied.

  • SwapOps.sol: Verwaltet Swap-Paare und fungiert als Routing-Anbieter zwischen ihnen. Es bietet dem Kreditnehmer die Schnittstelle für die Schuldenaufnahme, die von BorrowerOperations unterstützt wird.

  • PriceFeed.sol: Enthält Funktionen zum Abrufen des aktuellen Oracle-Preises, den das System zur Berechnung der Kollateralisierungsverhältnisse verwendet.

Last updated