Skip to main content

Monitoring, yield, and operational health

Vaults are contract-first systems. There is no required dashboard to operate them safely. The canonical source of truth is onchain state and events.

If you do nothing else, monitor the following.

Operational freshness

Is the strategy being actively reported?

  • Check the lastReport() timestamp on the strategy
  • Confirm report() is being called at the expected cadence

Example:

cast call <STRATEGY_ADDRESS> "lastReport()(uint256)" --rpc-url $ETH_RPC_URL

If report() is not called, yield is not realized or donated, even if the underlying protocol is generating returns.

Yield routing

Is donated yield going where you expect?

  • Track the donation address balance in vault shares
  • Confirm those shares increase over time after reports
  • If applicable, confirm the destination can redeem shares for the underlying asset

This verifies that yield is being routed correctly, independent of any UI.

Examples:

cast call <STRATEGY_ADDRESS> "dragonRouter()(address)" --rpc-url $ETH_RPC_URL
cast call <STRATEGY_ADDRESS> "balanceOf(address)(uint256)" <DONATION_ADDRESS> --rpc-url $ETH_RPC_URL

Event-level visibility

Are core lifecycle events behaving as expected?

At minimum, monitor:

  • Deposit(address,address,uint256,uint256) events
  • Withdraw(address,address,address,uint256,uint256) events
  • Reported(uint256,uint256) events from the strategy

These events provide a reliable audit trail of capital movement and yield realization.

You can review them in the Events tab on Etherscan for the strategy address, or query them directly:

cast logs --address <STRATEGY_ADDRESS> --from-block <DEPLOYMENT_BLOCK> "Reported(uint256,uint256)" --rpc-url $ETH_RPC_URL

Useful event topic hashes:

  • Reported(uint256,uint256): 0x6fea36bfb4b7c912613756951fb5bf8ddaedb74de1f256d0bef81533158cda54
  • Deposit(address,address,uint256,uint256): 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7
  • Withdraw(address,address,address,uint256,uint256): 0xfbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db