Skip to Ozmium documentation
Ozmium Docs

Security and Trust

Ozmium's custody model, honest audit status, the full contract disclosure, privacy and crash-report handling, and how to report a vulnerability privately.

This page is written to be checkable. Where a claim can be verified onchain, the verification method is given instead of an assurance.

The Custody Model

Ozmium is self-custodial. It never holds, controls, or has access to your funds or keys. Every deposit, swap, loan, and leveraged position is initiated and signed in your own wallet, which shows the final confirmation before anything happens.

The falsifiable test:

If Ozmium ceased to exist right now, every position you hold remains yours and remains manageable directly at the underlying protocol.

Ozmium passes because it operates no contract that holds user funds. It reads public state and produces calldata. Your wallet is the only signer. The chain is the only enforcer.

What You Can Verify Before Signing

Ozmium builds transactions against a fixed set of third-party contracts, and every one of them is on a published list. In the app, a seal marks each protocol that publishes independent third-party audits of the contract being called.

That seal is a claim about the destination, not about this interface. The distinction is kept deliberately, because they are different things and only one of them has been audited by an outside firm.

The protocols Ozmium routes to - Gains Network, Morpho, Aave, Uniswap, and Aerodrome - each publish their own audit reports. The Ozmium interface layer has not had a formal third-party audit; independent review of it is ongoing work. Non-custody limits what that exposure can reach, since the interface holds nothing and signs nothing, but it is a structural mitigation rather than a substitute for review.

Every transaction is inspectable in your wallet and on Basescan before you approve it, which is the protection that does not depend on trusting anyone's description of anything.

The Contract Disclosure

Every contract the interface can build a transaction against, on one list, so a user or an auditor can verify the destinations without reading the source.

A seal in the app marks a protocol that publishes independent third-party audits of that contract. It is never a claim about the Ozmium interface, which is unaudited and says so.

Contract Protocol What Ozmium Asks It to Do Third-party Audited
Aave V3 Pool Aave Supplies, withdraws, borrows, and repays against Aave reserves Yes
Morpho Blue Morpho Lends and borrows on isolated Morpho markets Yes
Gains Network Diamond Gains Network (gTrade) Opens, modifies, and closes leveraged positions Yes
Permit2 Uniswap Holds the token allowance a swap spends, under a signature you sign per swap with its own amount and deadline Yes
Aerodrome Router Aerodrome Adds and removes liquidity on Aerodrome pools Yes
Uniswap V3 Position Manager Uniswap Mints and manages concentrated liquidity positions Yes
USDC Circle The settlement token for lending, perps, and most swaps Yes
OZ Token Clanker The project's own ERC-20 on Base, deployed by Clanker v3.1 as a standard token and source-verified onchain No

Live addresses for every row are published on the app's own Terms sheet at ozmium.org, where the list is derived directly from the modules that call each address rather than hand-copied. A hand-copied list is a claim about the code, and claims drift. The app's list cannot disagree with what the app actually calls.

Verify any address against the protocol's own documentation before you sign.

On the OZ Token Row

The OZ token is marked not audited, deliberately. The Clanker v3.1 contracts are public with published documentation, but no third-party audit report is published for them.

OZ is source-verified onchain - anyone can read the deployed bytecode against the published source. That is a real and checkable property, and it is a weaker claim than audited. The two are not shown as the same thing.

Runtime-Resolved Addresses

Two destinations are chosen at runtime rather than pinned at build time. They are called out rather than hidden, because "we only ever call contracts we chose" is the interesting claim and these are its only exceptions:

Token Address

There is only one token for Ozmium. The Base ERC-20 address is:

0x148313dcdb7a7111ebefa4871f6a7fef34833b07

If this ever changes, the change will be indicated officially on the app's Terms sheet and here. Any other address claiming to be OZ is not OZ.

Operational Wallets

Ozmium holds no user funds, so none of this touches you. For its own accounts, the project separates wallets by role, keeps value at rest behind a Safe with transaction protections, and does not publish operational addresses.

That last choice has a cost worth naming: circulating supply and treasury holdings cannot be independently verified from this page. Total supply and burned supply both can - see OZ Token.

Data and Privacy

Crash reports. When something breaks, the app sends a diagnostic report so it can be fixed: the error, the page, the app build, and basic browser details such as viewport and connection type. It records which kind of wallet is connected - whether the browser has an injected provider at all - and never your wallet address, your balance, or any identifier tied to you. Reports are grouped by error, not by person, and no profile is built from them.

Third-party hosts. Opened inside a host app such as the Base App or Farcaster, that platform may record its own basic, aggregated, deidentified usage counts under its own policy. Those platforms and the protocols listed above are independent of Ozmium.

Engineering Rules that Are Security Rules

These are enforced in the codebase rather than aspired to:

Reporting a Vulnerability

If you have found a security issue, report it privately first. Do not open a public issue and do not post it in Discord.

Include what you found, how to reproduce it, and the impact you believe it has. You will get an acknowledgment.

Please do not test against other users' funds, do not perform denial-of-service testing, and do not access data that is not yours. Everything else is fair game.

FAQ

Is Ozmium audited?

The underlying protocols Ozmium routes to - Gains Network, Morpho, Aave, Uniswap, and Aerodrome - publish independent third-party audits of their contracts. The Ozmium interface itself has not undergone a formal third-party audit. Non-custody is a structural mitigation, not an audit, and the two are not presented as the same thing.

Can Ozmium access or move my funds?

No. Ozmium operates no contract that holds user funds, never signs on your behalf, and cannot move anything you own. Every transaction is signed in your own wallet, which shows the final confirmation.

What data does Ozmium collect?

None that identifies you. There is no account, no advertising, and no behavioral tracking. Crash reports carry the error, the page, the app build, and basic browser details, plus which kind of wallet is connected - never your address, your balance, or any identifier tied to you.

How do I verify a contract address before signing?

Live addresses are published on the app's own Terms sheet, derived directly from the modules that call them so the list cannot drift. Cross-check any address against the protocol's own documentation and inspect the destination in your wallet before approving.

Is the OZ token contract audited?

No. OZ was deployed by Clanker v3.1 as a standard token and is source-verified onchain, meaning anyone can read the deployed bytecode against the published source. That is a real property and a weaker claim than audited, so it is marked as unaudited.

How do I report a security vulnerability?

Email hello@ozmium.org with SECURITY in the subject line, or use the contact in ozmium.org/.well-known/security.txt. Report privately first - do not open a public issue or post it in Discord.

What Ozmium Cannot Protect You From

A security page that only lists its own strengths is a marketing page wearing a lab coat, so here is the other column:

Contents

On This Page