-
Notifications
You must be signed in to change notification settings - Fork 0
01 system overview
Catalysis Coverage is the application layer that turns restaked collateral into programmable protection. It sits on top of Catalysis Core, which abstracts Symbiotic and EigenLayer operations such as committee creation, stake tracking, reward distribution, and slashing.
Coverage contracts manage:
- pool creation and underwriting policy terms,
- policy request and binding lifecycle,
- premium collection and fee routing, and
- claim adjudication and payout settlement.
Core contracts manage:
- committee capacity and stake accounting,
- operator and vault connectivity to restaking platforms,
- reward fan-out to restaking adapters, and
- slashing execution and collateral return.
Coverage and Core share a canonical identifier:
-
policyId(Coverage) is the same value ascommitteeId(Core). - committee-level capacity in Core is set from requested
coverageAmount. - slashing is executed by committee, which means per policy.
Coverage request actor mapping:
- The
buyerfield in policy metadata is typically the covered vault itself or its adapter/agent contract. - The
claimeris a separately authorized address that can file claims for that policy. - In adapter-based integrations,
claimeris typically the cover adapter. - In atomic shortfall make-whole flows,
beneficiaryis typically the cover adapter so it can top up the exit path.
This 1:1 mapping keeps capacity, accounting, and loss handling aligned across layers.
graph TB
subgraph Users
CURATOR[Curator / Operator]
COVERED[Covered Vault / Adapter]
CLAIMER[Authorized Claimer]
USER[End User Depositor]
end
subgraph Coverage Layer
CPF[CoverPoolFactory]
CP[CoverPool clones]
PM[PolicyManager]
PC[PremiumCollector]
PRM[PremiumManager]
CM[ClaimManager]
SR[SpecRegistry]
SW[Swapper]
end
subgraph Core Layer
SM[StakeManager]
RM[RewardsManager]
SLM[SlashingManager]
PF[ChainlinkPriceFeed]
end
subgraph Restaking
SYM[Symbiotic vaults]
EIG[EigenLayer strategies]
end
subgraph Morpho Integration
CV[Covered Vault]
ADP[Catalysis Cover Adapter]
BV[Base Vault]
end
CURATOR --> CPF
CPF --> CP
CPF --> SM
COVERED --> PM
PM --> SM
PM --> CP
CURATOR --> CP
CP --> SR
CP --> PM
CP --> SM
PC --> PRM
PRM --> RM
CLAIMER --> CM
CM --> SR
CM --> PF
CM --> SLM
CM --> SW
SM --> SYM
SM --> EIG
RM --> SYM
RM --> EIG
SLM --> SYM
SLM --> EIG
USER --> CV
CV --> ADP
ADP --> BV
ADP --> PM
ADP --> CM
BV --> PC
For Morpho-style integrations, the insured product uses a dual-vault topology:
- Covered Vault (Morpho V2): user-facing insured vault.
- Catalysis Cover Adapter: strategy adapter that allocates to base vault and handles shortfall claims.
- Base Vault (Morpho V1/V2): underlying yield vault.
Behavioral split:
- deposits into Covered Vault are premium-bearing and insured,
- deposits into Base Vault are not insured by Coverage.
Each covered vault maps to one base vault for deterministic accounting and claim attribution.
Each CoverPool is curator-controlled and has:
- its own quote signer (
QUOTE_SIGNER_ROLE), - independent fee settings (
poolFeeBps,feeRecipient), and - policy binding authority via pool admin role.
This isolates underwriting strategy and economics across pools.
Policies are requested first, then bound later:
-
PolicyManager.requestCoverage()creates a draft and committee. - Curator binds via
CoverPool.bindPolicyForRequest(...)once delegation is ready. -
PolicyManager.bindPolicy(...)stores immutable-like policy metadata for claims.
Coverage does not slash or distribute rewards directly on restaking protocols. Instead, Coverage calls Core:
- premium reward routing:
PremiumManager -> RewardsManager, - claim-driven slashing:
ClaimManager -> SlashingManager.
This keeps SSP-specific complexity in Core adapters.
Claim logic is delegated to registered ISpec implementations:
- pool registers
(pool, specId) -> specinSpecRegistryat bind time, - claim path resolves spec from registry and runs
spec.evaluate(context).
- Curator creates a pool through
CoverPoolFactory. - Factory registers curator/operator to network via Core
StakeManager. - Covered vault (or its adapter acting as buyer) requests coverage through
PolicyManager(draft created). - Core committee is created with
committeeId = policyId; operator assigned. - Restakers delegate stake in supported vaults/strategies.
- Curator binds policy with signed quote and committee vault list.
- Covered-vault management fees accrue as ERC-4626 shares to
PremiumCollector. - Collector redeems shares,
PremiumManagersplits fees and routes restaker share to CoreRewardsManager. - On user withdrawal:
- no shortfall: adapter deallocates from base vault and returns assets,
- shortfall: adapter triggers claim, receives payout, and makes exit whole.
- If claim is payable,
ClaimManagertriggers Core slashing for the policy committee, swaps collateral if needed, and pays the configured beneficiary (typically the adapter in this model).