Free snapshot slots open this week info@inversez.com
DetectionVulnerabilitiesToolsAuditsPricingBlogFree monitoring assessmentContact
Home/Detection/On-chain
On-chain monitoring · lending and yield

Your audit ended in March. Your protocol is still running.

An audit is a statement about the code as it was on one day. Monitoring is a statement about the system as it behaves now, under real deposits, real borrowers and real oracle prices. We design the invariants worth watching for lending protocols and yield vaults, implement them, and write what to do when one fires.

Talk about monitoring See the detection library
Solidity / EVM only · Lending protocols · Yield vaults

A Tenderly account is not a monitoring plan.

Most teams we talk to have the tooling already. A free Tenderly account, maybe a Defender instance, sometimes a Discord webhook wired to a transaction firehose nobody reads.

What they do not have is the list. Which quantities, specific to their protocol, should never move outside a range. What the range actually is. How long a breach has to persist before it means something rather than being a large-but-legitimate transaction. And what a human is supposed to do in the ten minutes after the alert lands.

That list is the work. The tooling is a detail, and it is usually already paid for.

What the alert is actually watching.

Utilisation on a lending pool across thirty blocks. Nothing here is a single dramatic transaction; it is a borrow trend that crosses a line, which is how most of these actually look.

INV-04 · utilisation ceiling30 blocks · ceiling 0.95
Ring marks the breach. Value reaches 0.9973 at the final block, above the 0.95 ceiling, having climbed steadily for the previous eleven. A threshold alone would have fired here; a threshold plus a persistence window is what stops it firing on every large single borrow that immediately reverses.

What you get.

Written against your contracts, not a generic template. Every invariant is specific enough to state as an inequality.

The invariant set

Each one written as a plain-language claim, then as a checkable expression: utilisation ceilings, collateralisation floors, oracle deviation bounds, supply-and-borrow parity, share-price monotonicity, admin-function usage. With the reasoning for the threshold, not just the number.

The implementation

Deployed into whatever you already run. Tenderly alerts, OpenZeppelin Defender monitors, or a self-hosted watcher against your own RPC endpoint if you would rather not depend on a vendor.

A runbook per alert

What the breach means, what to check first, which parameter moves, and what that parameter does to the rest of the system. An alert with no runbook is a notification, and notifications get muted.

Tuning

The thresholds will be wrong at first. We backtest each invariant against your historical transactions before it goes live, then adjust once real traffic disagrees with the backtest.

What this is not.

This is one practitioner, and the scoping should reflect that.

  • There is no on-call rotation. We do not offer 24/7 response and will not sell it. Alerts route to your team. If you want us in the loop, we agree a response window in working hours and write it into the contract.
  • Monitoring does not stop an exploit in progress. It shortens the time between something going wrong and somebody competent knowing about it. On most incidents that is the difference that matters, but it is not a guarantee and nobody honest will tell you otherwise.
  • We have not run this for a web3 client yet. The detection engineering practice is real and currently running in production for a US client on Splunk. The on-chain application of it is new. The library is where you can judge the reasoning before you engage us.
  • EVM and Solidity only. No Solana, Move or Cairo. Lending protocols and yield vaults specifically, because that is where we understand the mechanics well enough to know which invariants matter.

Send a contract address.

We will come back with five invariants worth monitoring on it, and one thing your current setup would miss. No charge, no call required, and no obligation to continue.

Send an address SIEM side instead

Why we do it free

Because the five invariants are the argument. If they are obvious, you did not need us. If two of them had not occurred to you, that tells you more than a sales page could.

It also tells us whether your protocol is one we understand well enough to be useful on, which is the part most vendors skip.