Vault Registry

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.

The Vault Registry also includes an array of DAO-approved protocols with which premissioned vaults can interact.

Additionally, the Vault Registry records the protocol fee and the protocol fee recipient for each vault.

Publishing to the registry

Only the DAO can add a facet to the registry. To do so it calls addFacet(facet, selectors[]). The transaction records:

  • facet – the address of the new facet.

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

The registry checks if the selector already exists in another facet. If so, the facet author should update the selector to one that does not exist. A facet can expose any selectors, including ones that overlap with core functions or those of other facets.

Verifying facet & selector integrity

Any user can call getAllowedFacets() or getFacetSelectors(facet) on the VaultsFactory contract in order to verify if a facet is DAO-approved and which selectors are included in that facet.

Last updated