Facets & Selectors

Every piece of executable logic in a MORE Vault lives in a facet — a contract that exposes one or more function selectors. To make those facets discoverable and reviewable, the protocol logs facets in the Vault Registry and the DAO flags permissionless facets as restrictred.

This split lets builders ship new strategy modules immediately while giving front‑ends and integrators a simple way to surface only audited code by default.

Publishing to the registry

Call addFacet(facet[self], selectors). The transaction records:

  • facet – the automatically assigned address of the new facet.

  • selectors[] – array of 4‑byte function identifiers implemented by the facet.

The registry does no checks. A facet can expose any selectors, including ones that overlap with core functions. The registry is monitored by the DAO. Any new facet added to the registry is flagged with setFacetRestricted.

Verifying facet & selector integrity

Any user can call getRestrictedFacets(facets[]) on the VaultsFactory contract in order to verify if a facet is permissionless or DAO-approved.

Last updated