Skip to content

For AI agents: a documentation index is available at /llms.txt. Every page is also available as Markdown at the same URL with a .md suffix, or by requesting Accept: text/markdown.

BLOK Capital

Facet.sol

agit comme le contrat de base pour tous les modules de logique du Garden. Il définit les règles de contrôle d'accès centrales que chaque module suit.

Couche d'Accès : Facet.sol#

  • Facet.sol agit comme le contrat de base pour tous les modules de logique du Garden.
  • Il définit les règles de contrôle d'accès centrales que chaque module suit.
  • Son rôle principal est de protéger le système contre les actions non autorisées ou dangereuses, en particulier pendant les opérations sensibles.

Idée principale : Interactions restreintes pendant la connexion à un Indice#

  • Lorsqu'un Garden est connecté à un Indice, certaines opérations deviennent plus restrictives.
  • L'interaction directe de l'utilisateur est limitée pendant les processus automatisés comme le rééquilibrage.
  • Cela permet d'éviter :
    • Le front-running (utilisateurs exploitant le timing pour en tirer profit)
    • Les incohérences d'état causées par des actions externes inattendues

Restriction d'Appel au DEX#

  • Pendant un rééquilibrage, les fonctions de swap ne peuvent être exécutées que par le contrat Garden lui-même.
  • Les utilisateurs ou contrats externes ne sont pas autorisés à déclencher ces swaps.
  • Cette restriction garantit :
    • Une exécution contrôlée des transactions
    • Aucune interférence externe
    • Un comportement du système cohérent et prévisible
/// @notice Checks if the caller is the garden itself when connected to an index
function _onlyGardenCanCallDexWhenIndexConnected() internal view {
    LibDiamond.Layout storage ld = LibDiamond.layout();
    if (ld.isConnectedToIndex) {
        // Enforce Diamond self-calls only
        if (msg.sender != address(this)) {
            revert Garden_OnlyGardenCanCallDexWhenIndexConnected();
        }
    } else {
        // If not connected to an index, fallback to owner validation
        if (msg.sender != OwnershipStorage.layout().owner) {
            revert Garden_UnauthorizedCaller();
        }
    }
}