Permissionless Operations
Olla is designed so that anyone can keep the protocol running. Three core operations (rebalancing, accounting, and attester state refresh) are callable by any Ethereum address. There is no privileged operator role required.
This means the protocol doesn't depend on a single party being online. If the Olla team's infrastructure goes down, any user or community member can step in and call these functions to keep things moving.
What needs to happen and why
The protocol doesn't update itself automatically. Someone needs to trigger each step by sending a transaction. Here's what each operation does:
Rebalance
What it does: Moves assets between the vault buffer and the Aztec rollup.
Think of the buffer as a checking account and the rollup as a savings account. Deposits land in the checking account. Rebalance moves surplus to savings (staking), or pulls from savings when users want to withdraw.
A rebalance cycle runs five steps:
- Collect any earned rewards from the rollup.
- Pull back any funds that finished unstaking.
- Pay out queued withdrawal requests.
- Start unstaking more if needed to cover pending withdrawals.
- Stake any surplus buffer into the rollup.
How often: Rate-limited by a cooldown (configurable between 10 minutes and 24 hours). You can only start a new cycle after the cooldown elapses. If a cycle is already in progress, anyone can continue it without waiting.
How to call it:
cast send <OllaCore> "rebalance()" --private-key <your_key> --rpc-url <rpc>
Update Accounting
What it does: Recalculates the exchange rate between Aztec and stAztec.
After a rebalance, the protocol needs to account for any rewards earned and any slashing that occurred. This updates the exchange rate, mints protocol fee shares, and runs safety checks (circuit breakers).
When to call it: After a rebalance cycle completes (step = Done). Can also be called independently to refresh the rate.
How to call it:
cast send <OllaCore> "updateAccounting()" --private-key <your_key> --rpc-url <rpc>