UpgradeableBeacon
OpenZeppelin UpgradeableBeacon used as the StakingVault beacon. It stores the current StakingVault implementation for all beacon proxies.
What is UpgradeableBeacon?
UpgradeableBeacon is a beacon proxy controller:
- holds the current implementation address
- allows the Lido DAO to upgrade the implementation if vaults are not ossified
- is referenced by all
PinnedBeaconProxyvaults created byVaultFactory
Ownership and upgrades
The beacon is owned by the Lido DAO (via the Agent/Aragon governance). This means:
- Only Lido DAO governance can upgrade the StakingVault implementation
- All beacon proxy vaults automatically use the new implementation after an upgrade
- Upgrades affect all vaults simultaneously unless they have been ossified
Ossification
Individual vaults can opt out of future upgrades by calling ossify() on their StakingVault. This "pins" the vault to its current implementation, making it immune to beacon upgrades. Ossification is:
- Irreversible: Once ossified, a vault cannot be un-ossified
- Only available after disconnect: Vaults must disconnect from VaultHub before ossifying
- Owner-controlled: Only the vault owner can ossify their vault
View methods
implementation()
function implementation() public view returns (address)
Returns the current implementation address.
owner()
function owner() public view returns (address)
Returns the beacon owner.
Methods
upgradeTo(address newImplementation)
function upgradeTo(address newImplementation) public onlyOwner
Upgrades the implementation used by the beacon.
transferOwnership(address newOwner)
function transferOwnership(address newOwner) public onlyOwner
Transfers beacon ownership.
renounceOwnership()
function renounceOwnership() public onlyOwner
Renounces ownership of the beacon.