Skip to main content

StakrVaults Plugin System

StakrVaults support optional plugins through IStakrVaultPlugin.

This system is designed for teams that want custom policy or side effects without forking core vault logic.

How Plugins Are Attached

Vault creation supports two factory signatures:

  • createStakrVault(underlying, name, symbol, description, owner)
  • createStakrVault(underlying, name, symbol, description, owner, plugin)

If plugin is address(0), no hooks run. If plugin is non-zero, the vault calls plugin hooks around key actions.

Strict Hook Semantics

  • Hooks are called only when vault.plugin() != address(0).
  • Every hook receives sender as the first parameter.
  • Revert in a hook reverts the vault action.
  • There is no soft-fail path; this is strict-mode policy enforcement.

Hook Surface

Deposit

  • beforeDeposit(sender, assets, receiver)
  • afterDeposit(sender, assets, receiver, shares)

Lock / Unlock

  • beforeLock(sender, user, shares)
  • afterLock(sender, user, shares)
  • beforeUnlock(sender, user, shares)
  • afterUnlock(sender, user, shares)

Redeem

  • beforeRedeem(sender, shares, receiver, owner)
  • afterRedeem(sender, shares, receiver, owner, assets)

Rewards

  • beforeAddReward(sender, token, amount, startTime, endTime)
  • afterAddReward(sender, token, amount, startTime, endTime)
  • beforeModifyReward(sender, token, amount, startTime, endTime)
  • afterModifyReward(sender, token, amount, startTime, endTime)
  • beforeRemoveReward(sender, token)
  • afterRemoveReward(sender, token)

Harvest

  • beforeHarvest(sender, user)
  • afterHarvest(sender, user)

Human-Focused Design Patterns

  • Whitelist deposits in beforeDeposit.
  • Enforce lock-up windows with afterLock + beforeUnlock.
  • Add reward governance checks in beforeAddReward and beforeModifyReward.
  • Emit plugin-level analytics events in after-hooks.

Agent-Focused Implementation Notes

  • Keep plugin code deterministic and cheap in gas; hooks run inline on user actions.
  • Keep revert reasons explicit for automation retries and alerting.
  • Treat plugin rollout as policy deployment: test hooks against all vault paths (deposit, depositAndLock, unlockAndRedeem, harvest, reward add/modify/remove).
  • Monitor hook revert metrics in production.

Canonical References

Next Step