Skip to main content

Contracts Overview

The Olla protocol consists of 10 smart contracts organized into four groups.

Contract map

ContractUpgradeableDescription
Vault
OllaVaultUUPS proxyUser-facing vault. Accepts deposits, mints stAztec, manages withdrawals.
StAztecNo (immutable)ERC-20 receipt token representing shares of the staking pool.
WithdrawalQueueUUPS proxyFIFO queue for async withdrawal requests with slashing adjustment.
Core
OllaCoreUUPS proxyOrchestration engine. Runs rebalance, computes exchange rate, distributes fees.
RewardsAccumulatorUUPS proxyReceives sequencer rewards from the rollup.
SafetyModuleNo (replaceable)Circuit breaker. Auto-pauses on rate drops, queue pressure, or stale accounting.
Staking
StakingManagerUUPS proxyInterface to the Aztec rollup. Stakes, unstakes, tracks attester state.
StakingProviderRegistryUUPS proxyManages attester keys and provider configuration.
Governance & Bridge
OllaGovernanceUUPS proxyTimelocked governance. All parameter changes and upgrades flow through here.
StAztecOFTAdapterNoLayerZero V2 bridge for cross-chain stAztec transfers.

How they connect

Users interact with OllaVault. OllaVault delegates pricing to OllaCore, which orchestrates rebalancing through StakingManager (for rollup interactions) and RewardsAccumulator (for reward collection). SafetyModule monitors health and can pause everything. OllaGovernance owns the system and timelocks all changes.

For a visual diagram of contract interactions and role assignments, see the Architecture diagrams.

Roles

RoleHeld byCan do
Owner (Ownable2Step)OllaGovernanceUpgrade OllaCore and OllaVault, change parameters.
DEFAULT_ADMIN_ROLEOllaGovernanceUpgrade satellites, configure SafetyModule, grant/revoke roles.
GUARDIAN_ROLEGuardian multisigPause/unpause, force-reset stuck rebalance.
CORE_ROLEOllaCoreInstruct OllaVault during rebalance (transfer, mint fees, finalize).
STAKING_PROVIDER_ADMIN_ROLEProvider adminAdd attester keys, set rewards recipient.
PermissionlessAnyoneCall rebalance(), updateAccounting(), refreshAttesterState().