About Louper

A free, open source inspector for EIP-2535 Diamond smart contracts.

What Louper does

Diamond contracts built on EIP-2535 route each function call to a separate implementation contract called a facet. Because that routing table lives in contract storage rather than in bytecode, ordinary block explorers cannot show you what a diamond actually does — they see a fallback function and nothing else.

Louper solves that. Give it an address and a network, and it calls the contract's loupe functions to enumerate every facet and every function selector, then matches those selectors against verified source to reconstruct a human-readable interface. You get the full facet list, a combined ABI, and the ability to call read and write functions directly.

How it works

  1. Louper calls facets() on the diamond.
  2. For each facet address returned, it fetches verified source from a block explorer.
  3. It filters each facet's ABI down to only the selectors the diamond actually registered.
  4. Unresolved selectors fall back to public selector databases.
  5. The result is rendered server-side and cached to keep repeat lookups fast.

Everything is read from live chain state, so what you see reflects the contract as it exists now — not as a deployment script intended it to be.

Who builds it

Louper is built and maintained by Mark3Labs. It has been used by diamond developers, auditors and integrators since 2022, and the source is public under an open source licence.

Contributions are welcome on GitHub, whether that is a bug report, a new chain, or a correction to one of the guides.

How it is funded

Louper is free to use and has no accounts, no paywall and no usage limits. Running it costs money — RPC access, explorer API quotas and hosting — which is covered by Mark3Labs and by advertising displayed on the site. Ads are clearly labelled and never influence which contracts are shown or how they are presented.

We do not sell your data. See the privacy policy for exactly what is and is not collected.

Limitations worth knowing

  • Louper cannot show names for functions on unverified facets — only raw selectors. Bytecode does not contain function names.
  • A contract that does not implement facets() cannot be enumerated, even if it uses a diamond-like fallback.
  • Contract metadata is cached, so a facet verified moments ago may take time to appear with its proper name.
  • Louper is an inspection tool, not an audit. It reports what a contract exposes, not whether it is safe.

Contact

Questions, corrections or partnership enquiries: [email protected], or see the contact page.