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

Loupe

Le module Loupe est entièrement en lecture seule.

Le module Loupe est entièrement en lecture seule. Il fournit les fonctions d'introspection requises par l'EIP-2535, permettant aux explorateurs de blocs, frontends et bots d'indexation de « voir » à l'intérieur du Garden et de cartographier ses capacités.

DiamondLoupeBase.sol et DiamondLoupeFacet.sol#

Ces contrats implémentent l'interface standard IDiamondLoupe. Étant donné que les capacités d'un Garden peuvent évoluer dans le temps (via des mises à jour), les interfaces utilisateur devraient utiliser ces fonctions pour vérifier qu'un Garden prend en charge une action spécifique avant d'envoyer une transaction.

Il implémente également IERC165, permettant à d'autres contrats d'interroger supportsInterface(bytes4).

Fonctions d'introspection clés pour les Builders :

  • facets() : Retourne toutes les adresses de facettes actives et leurs sélecteurs de fonctions regroupés.
  • facetFunctionSelectors(address _facet) : Retourne toutes les fonctions regroupées dans une facette spécifique.
  • facetAddress(bytes4 _functionSelector) : Retourne l'adresse exacte de la facette qui gère une fonction spécifique.

Extrait crucial : Interroger un Sélecteur

Les Builders peuvent l'utiliser pour vérifier dynamiquement si un Garden possède une fonctionnalité spécifique installée :

// From DiamondLoupeBase.sol
/// @notice Retrieves the facet that supports the given function selector
function _facetAddress(bytes4 _functionSelector) internal view returns (address facetAddress_) {
    // Looks up the specific routing mapping in Diamond Storage
    facetAddress_ = DiamondCutStorage.layout().selectorToFacetAndPosition[_functionSelector].facetAddress;
}

DiamondLoupeStorage.sol#

Stocke les mappages pour la détection d'interface ERC-165 (mapping(bytes4 => bool) supportedInterfaces). Ceci est initialisé lors du premier déploiement du Garden.