
Tokens that declarehow they behave.
A modular ERC-20 extension framework. One view call returns every way a token departs from the standard — and one bytecode check tells you whether to believe it.
Discover the frameworkWe are a modular extension framework for ERC-20, built for a chain where every token is its own program.
One word. Every way this token departs from a plain ERC-20.
Fixed at deployment. Read it once, store it next to the token address, and never read it again. A token that does not answer has not told you it is ordinary — it has told you nothing, and those are different in the direction that costs money.
Read the integration guideDeclaration
extensions(), behaviorFlags(), extensionData(), accountState(). What is installed, how it is configured, and what that means.
Interfaces
Metadata, transfer fee, transfer restriction, non-transferability, transfer hook. Descriptive names, no draft ERC numbers.
Implementation
Composable modules on OpenZeppelin v5, and three deployment shapes: immutable, upgradeable, or a clone of a shared runtime.
Verification
Canonical tokens are 45-byte clones of one runtime you vetted. Match the shape, read the address, and the declaration stops being a claim.

The same pool, the same token, the same 2% fee, and five routes through it.
The route that quotes on the amount it sends fails with Uniswap V2's K error. The four that ask the token something first all succeed — request the fee, price against the published ceiling, name the output wanted, or transfer under a floor and never learn what the fee was. Nothing about the token changed between the runs, only whether the integrator could find out in advance.
Every capability here already exists on chain. Fee-on-transfer, pausing, freezing and hooks are all shipping today.
What does not exist is a way for a token to say which of them it has, cheaply enough that reading it is not a favour.
Measurements
Nothing in this section is estimated.
